Keras 于两年前(2015 年 3 月)发布。然后,它的用户从一个增长到十万。
数百人贡献了 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 已发生重大变化,特别是
Dense
、BatchNormalization
和所有卷积层。但是,我们已经设置了兼容性接口,以便您的 Keras 1 代码仍然可以在 Keras 2 中运行而不会出现问题(同时会打印警告以帮助您将层调用转换为新的 API)。 - 生成器训练和评估方法的 API 已更改(即
fit_generator
、predict_generator
和evaluate_generator
)。同样,不用担心:您的 Keras 1 调用在 Keras 2 中仍然有效。 - 在
fit
中,nb_epoch
已重命名为epochs
。此更改也由我们的 API 转换接口处理。 - 许多层的保存权重格式已更改。但是,使用 Keras 1 保存的权重文件仍然可以在 Keras 2 模型中加载。
objectives
模块已重命名为losses
。
重大更改
考虑到 Keras 的大量用户群,我们已尽最大努力减少重大更改的数量。但是,某些损坏是不可避免的,特别是对于更高级的用户。
- 旧层
MaxoutDense
、TimeDistributedDense
和Highway
已被永久删除。 - 已删除了许多旧指标和损失函数。
BatchNormalization
层不再支持mode
参数。- 由于 Keras 内部结构已更改,因此必须更新自定义层。更改相对较少,因此应该快速而轻松。请参阅本指南。
- 通常,任何使用未记录的 Keras 功能的代码段都可能已损坏,因此高级用户可能需要进行一些更新。
开始使用
您可以
- 从 PyPI 安装 Keras 2:
pip install keras --upgrade
- 查看Github 上的代码。
- 通读更新后的文档。
感谢我们的贡献者
许多人为 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