Keras 2发布:实现与TensorFlow的直接整合
选自 The Keras Blog
作者:Francois Chollet
机器之心编译
参与:晏奇、黄小天、吴攀
Keras 在 2015 年 3 月首次推出,现在用户数量已经突破了 10 万。其中有数百人为 Keras 代码库做出了贡献,更有数千人为 Keras 社区做出了贡献。Keras 已经催生了新的创业公司、提高了研究者的成果率、简化了大公司的工程流程图、并为数以千计没有机器学习经验的人打开一扇通向深度学习的大门。而我们相信这仅仅是个开始。
现在我们推出 Keras 2,它带有一个更易使用的新 API,实现了与 TensorFlow 的直接整合。这是在 TensorFlow 核心整合 Keras API 所准备的重要一步。
Keras 2 有很多新变化,下面是简明概览:
与 TensorFlow 整合
尽管 Keras 自 2015 年 12 月已经作为运行时间后端(runtime backend)开始支持 TensorFlow,Keras API 却一直与 TensorFlow 代码库相分离,这种情况正在改变:从 TensorFlow 1.2 版本开始,Keras API 可作为 TensorFlow 的一部分直接使用,这是 TensorFlow 在向数百万新用户开源的道路上迈出的一大步。
Keras 最好被理解为一个 API 技术规范,而不是一个特殊的代码库。事实上,继续发展将会出现 Keras 技术规范的两个不同实现:(a)TensorFlow 的内部实现(如 tf.keras),纯由 TensorFlow 写成,与 TensorFlow 的所有功能深度兼容;(b)外部的多后台实现,同时支持 Theano 和 TensorFlow(并可能在未来有更多的后台)。
类似的,Skymind 正在用 Scala 实现 Keras 份额部分规范,如 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 的广大用户基础,我们尽量不对 Keras 做根本变动,但是,还是有些变动不可避免,尤其是对于更高阶的用户来讲。
传统层 MaxoutDense、TimeDistributedDense 和 Highway 已被永久移除。
大量的传统度量和损失函数已被移除。
BatchNormalization 层不再支持 mode 参数。
由于 Keras 内部构件已经改变,自定义层被升级。改变相对较小,因此将变快变简单。参见指南:https://keras.io/layers/writing-your-own-keras-layers/
通常来讲,任何使用非正式的 Keras 功能编写的代码将会失效,因此高阶用户也许需要做一些相应的更新工作。
开始
你可以:
从 PyPI:pip install keras --upgrade 安装 Keras 2
在 Github 上查看代码:https://github.com/fchollet/keras
阅读已更新的文档:https://keras.io/
下面附带了机器之心之前发布过的有关 Keras 的文章:
深度 | Keras 框架发明者 François Chollet Quora 问答集:我的长期目标是让人工智能自力更生
开源 | Keras.js 可以让你使用浏览器在 GPU 上运行 Keras 模型
教程 | 从基本概念到实现,全卷积网络实现更简洁的图像识别