Keras 于两年前(2015 年 3 月)发布。然后,它的用户从一个增长到十万。
数百人为 Keras 代码库做出了贡献。数千人为社区做出了贡献。Keras 催生了新的初创公司,提高了研究人员的工作效率,简化了大公司工程师的工作流程,并为成千上万没有机器学习经验的人打开了深度学习的大门。我们相信这仅仅是个开始。
现在我们发布了 Keras 2,它带有一个新的 API(更易于使用!),与 TensorFlow 保持一致。这是为将 Keras API 集成到核心 TensorFlow 中做准备的重要一步。
很多事情都变了。以下是您的快速摘要。
TensorFlow 集成
虽然 Keras 从 2015 年 12 月就开始支持 TensorFlow 作为运行时后端,但到目前为止,Keras API 一直与 TensorFlow 代码库分开。这种情况正在发生变化:从 TensorFlow 1.2 开始,Keras API 现在将作为 TensorFlow 的一部分直接提供。这是朝着让 TensorFlow 能够被其接下来的百万用户访问迈出的一大步。
Keras 最好理解为一个 API 规范,而不是一个特定的代码库。事实上,未来将有两个独立的 Keras 规范实现:内部 TensorFlow 实现(作为 tf.keras
提供),用纯 TensorFlow 编写,与所有 TensorFlow 功能深度兼容;以及外部多后端实现,支持 Theano 和 TensorFlow(未来可能还会支持更多后端)。
类似地,Skymind 正在将 Keras 规范的一部分作为 ScalNet 在 Scala 中实现,而 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 功能的代码都可能已损坏,因此高级用户可能需要进行一些更新。
入门
您可以
感谢我们的贡献者
许多人为 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