Keras 2 简介


Keras 于两年前(2015 年 3 月)发布。然后,它的用户从一个增长到十万。

Keras user growth

数百人贡献了 Keras 代码库。数千人为社区做出了贡献。Keras 促成了新的初创公司,提高了研究人员的工作效率,简化了大公司工程师的工作流程,并为成千上万没有机器学习经验的人打开了深度学习的大门。我们相信这仅仅是个开始。

现在我们发布了 Keras 2,它带有一个新的 API(更易于使用!),该 API 与 TensorFlow 保持一致。这是为将 Keras API 集成到核心 TensorFlow 中做准备的重要一步。

许多事情都变了。以下是您的快速摘要。


TensorFlow 集成

尽管 Keras 自 2015 年 12 月以来一直支持 TensorFlow 作为运行时后端,但 Keras API 到目前为止一直与 TensorFlow 代码库分开。这种情况正在发生变化:Keras API 现在将作为 TensorFlow 的一部分直接提供,从 TensorFlow 1.2 开始。这是朝着让 TensorFlow 对其未来一百万用户可访问迈出的一大步。

最好将 Keras 理解为 API 规范,而不是特定的代码库。实际上,未来将有两个独立的 Keras 规范实现:内部 TensorFlow 实现(以 tf.keras 的形式提供,用纯 TensorFlow 编写,并且与所有 TensorFlow 功能深度兼容)和外部多后端实现(支持 Theano 和 TensorFlow,未来甚至可能支持更多后端)。

同样,Skymind 正在将部分 Keras 规范以 Scala 实现为 ScalNet,而 Keras.js 正在 JavaScript 中实现部分 Keras API,以便在浏览器中运行。因此,Keras API 注定要成为深度学习从业者的通用语言,一种在许多不同工作流程中共享的通用语言,独立于底层平台。像 Keras 这样的统一 API 约定有助于代码共享和研究可重复性,并且允许更大的支持社区。


API 更改

新的 Keras 2 API 是我们的第一个长期支持 API:下个月用 Keras 2 编写的代码库应该在未来许多年内仍然可以在最新的软件上运行。为了实现这一点,我们在此版本中广泛地重新设计了 API,以抢占未来大多数问题的先机。特别是,我们新的 API 选择与 TensorFlow 约定完全兼容。

  • 大多数层的 API 已发生重大变化,特别是 DenseBatchNormalization 和所有卷积层。但是,我们已经设置了兼容性接口,以便您的 Keras 1 代码仍然可以在 Keras 2 中运行而不会出现问题(同时会打印警告以帮助您将层调用转换为新的 API)。
  • 生成器训练和评估方法的 API 已更改(即 fit_generatorpredict_generatorevaluate_generator)。同样,不用担心:您的 Keras 1 调用在 Keras 2 中仍然有效。
  • fit 中,nb_epoch 已重命名为 epochs。此更改也由我们的 API 转换接口处理。
  • 许多层的保存权重格式已更改。但是,使用 Keras 1 保存的权重文件仍然可以在 Keras 2 模型中加载。
  • objectives 模块已重命名为 losses

重大更改

考虑到 Keras 的大量用户群,我们已尽最大努力减少重大更改的数量。但是,某些损坏是不可避免的,特别是对于更高级的用户。

  • 旧层 MaxoutDenseTimeDistributedDenseHighway 已被永久删除。
  • 已删除了许多旧指标和损失函数。
  • BatchNormalization 层不再支持 mode 参数。
  • 由于 Keras 内部结构已更改,因此必须更新自定义层。更改相对较少,因此应该快速而轻松。请参阅本指南
  • 通常,任何使用未记录的 Keras 功能的代码段都可能已损坏,因此高级用户可能需要进行一些更新。

开始使用

您可以


感谢我们的贡献者

许多人为 Keras 2 版本专门提交了代码。非常感谢

  • Abhai Kollara Dilip
  • Achal Shah
  • Alexandre Kirszenberg
  • Ariel Rokem
  • Arpit Agarwal
  • Bas Veeling
  • Daniel Høyer Iversen
  • Daniel Seichter
  • Davy Song
  • Fariz Rahman
  • Fred Schroeder
  • Frédéric Bastien
  • Gijs van Tulder
  • Hannah Vivian Shaw
  • Hiroya Chiba
  • Joseph Jin-Chuan Tang
  • Joshua Chin
  • Michael Oliver
  • Paul Fitzpatrick
  • Pokey Rule
  • Rizky Luthfianto
  • Vasilis Vryniotis
  • @Spotlight0xff
  • @jarfo
  • @jihobak