昨天,著名深度学习开源框架 Keras 通过官方博客正式发布了全新版本:Keras 2。
根据官方介绍,此次更新的重点有两个:
Keras 2 API 将作为 TensorFlow 框架的一部分直接向用户提供支持;
Keras 2 API 经过了重新设计,将成为团队第一个长期支持(long-term-support)的 API。
Keras 表示:从 2015 年 3 月发布第一个版本以来,有数以百计的开发人员对 Keras 的开源代码做了完善和拓展,数以千计的热心用户在社区对 Keras 的发展做出了贡献。目前,有大量的 AI 初创公司在 Keras 的帮助下成立,研究人员通过 Keras 有效提升了研发效率,大公司的工程师们通过 Keras 大大简化了工作流程。更重要的是,通过使用 Keras,更多的从前没有机器学习开发经验的用户,从此步入了深度学习的世界。
融入 TensorFlow,成为深度学习的通用语言在本次版本更新中,最重要的一项内容就是增强了 Keras 与 TensorFlow 的逻辑一致性。按照 Keras 在博客中的说法:“这是将 Keras API 整合到 TensorFlow 核心的一个重要的准备步骤”。
实际上,从 2015 年 12 月的版本开始,Keras 就已经支持用户将 TensorFlow 作为运行后端(runtime backend),但此前,Keras 的 API 与 TensorFlow 的代码库尚处于相互隔离的状态。未来,从 TensorFlow 1.2 版本开始,Keras 2 API 将作为 TensorFlow 框架的一部分直接向用户提供支持,Keras 在博客中表示:“这是 TensorFlow 实现下一个百万用户级目标的关键”。
Keras 在博客中表示,他们更愿意人们将 Keras 视为一种通用的 API 规范,而不仅仅是一个具体的代码库。在这个意义上,他们将此前的 Keras 实现归结为两个大类:
TensorFlow 的内部实现,也就是前不久在 TensorFlow 1.0 版本中发布的 tf.keras 模块,完全基于 TensorFlow 编写,并且与所有 TensorFlow 功能深度兼容;
通用实现,兼容多种运行后端,包括 Theano 和 TensorFlow 等(将来可能会支持更多其他的后端)。
类似的,知名 Java 深度学习库 Deeplearning4j 目前正在基于 Scala 语言实现 Keras 规范的一部分,即 ScalNet;而为了让 Keras 在浏览器中运行,Keras.js 团队也在基于 Javascript 实现一部分 Keras API。这样的例子还有很多。
这些例子正符合了 Kera 成为一种通用的 API 规范的发展定位。按照 Keras 在博客中的说法:“Keras API 意在成为一个深度学习实践者的通用语言,一个跨越多种不同的工作流、独立于各种底层平台的深度学习通用语言”。
重新设计,成为第一个长期支持的 APIKeras 2 的另一项重要更新是 API 的变化。Keras 在博客中表示,全新发布的 Keras 2 API 将成为团队第一个长期支持的 API,不但兼容目前最新的软件,而且未来将保持长期有效。为了实现这一点,Keras 重新设计了绝大部分 API,为将来的扩展和更新预留了充足的修改空间。值得一提的是,新设计的 API 完全兼容于谷歌 TensorFlow 规范。
此次 API 更新的要点包括:
大部分软件层的 API 接口都和从前完全不同,特别是 Dense、BatchNormalization 和所有卷积相关的层。但由于软对设置了兼容接口,因此 Keras 1 的代码不经修改仍然可以在 Keras 2 上运行(但会出现打印警告);
生成器训练和评估方法相关的 API 也已经改变(包括 fit_generator、predict_generator 和 evaluate_generator 等)。同样,Keras 1 的代码仍然可以运行;
在 fit 中,nb_epoch 已经被更名为 epochs。而且,这一更改也适用于 API 转换接口;
许多图层的保存权重格式已更改。同样,以从前的权重保存的文件仍然可以在 Keras 2 中加载;
objectives 模块已经被更名为 losses。
与此前不兼容的地方由于 Keras 2 是一次重大的版本更新,因此无法避免地要引入一些与此前版本不兼容的地方,特别是对于高级用户而言,这些信息至关重要。
包括 MaxoutDense、TimeDistributedDense 和 Highway 在内的旧版软件层已经被永久删除;
许多旧版的指标(metrics)和损失函数(loss functions)被删除;
BatchNormalization 层不再支持 mode 参数;
由于内核代码已经改变,因此自定义层必须全部更新。不过由于修改相对不大,因此更新应该不会太耗时,更新详情参见: https://keras.io/layers/writing-your-own-keras-layers/
所有使用未记录的(undocumented) Keras 函数的代码段可能都已经不可用;因此高级用户需要进行一些修改。
目前 Keras 2 已经在 Github 上开源: https://github.com/fchollet/keras
用户可以通过 PyPI 直接更新: pip install keras --upgrade
来源:keras,雷锋网编译
雷锋网(:雷锋网(:雷锋网))相关阅读:
TensorFlow和Caffe、MXNet、Keras等其他深度学习框架的对比
TensorFlow 1.0 正式发布 你需要知道的都在这里