对于深度学习领域的式从时编从业者而言,Keras 肯定不陌生,分离它是结束深度学习的主流框架之一。2015 年 3 月 27 日,乱耗谷歌软件工程师、式从时编Keras 之父 Francois Chollet 在其 GitHub 上提交并公布了 Keras 的分离首个版本。作为使用纯 Python 编写的结束深度学习框架,Keras 的乱耗代码更加简单方便,适用于初学者。式从时编此外,分离Keras 具有很强的结束易扩展性,能够直观地定义神经网络,乱耗函数式 API 的式从时编使用令用户可以将层定义为函数。 Keras 官网地址:https://keras.io/ 为了训练自定义神经网络,分离Keras 需要一个后端,结束在 v1.1.0 版本之前,Keras 的默认后端都是 Theano。2015 年 11 月 9 日,谷歌发布了 TensorFlow。Keras 开始支持 TensorFlow 作为后端。渐渐地,TensorFlow 成为最受欢迎的后端,并从 Keras v1.1.0 发行版开始成为它的香港云服务器默认后端。tf.keras 正是在 TensorFlow v1.10.0 中引入的,这是将 Keras 直接集成到 TensorFlow 包中的第一步。 当谷歌在 2019 年 6 月发布 TensorFlow 2.0 时,他们宣布 Keras 成为 TensorFlow 的官方高级 API。并且,在 Keras 2.3.0 版本发布时,Francois 表示这是 Keras 首个与 tf.keras 同步的版本,也是 Keras 支持 Theano 等多个后端的最终版本。所有深度学习从业者都应将其代码转换成 TensorFlow 2.0 和 tf.keras 软件包。这意味着二者的合并,但看似双赢的决定,很多开发者却不买账。API 的混乱与割裂不仅令开发者不知所措,也加大了开发者寻找教程的难度。 是时候做出改变了!近日,Keras 之父 Francois Chollet 在其推特宣布一项重要决定:他们已经将 Keras 的代码从 TensorFlow 代码库中分离出来,云服务器提供商移回到了自己的 repo。 对于 Keras 从 TensorFlow 分离后有哪些好处?Francois 表示:「这将提升开源贡献者的开发体验。对于用户而言,这将使他们可以在本地运行测试,不再需要编译 TF 来测试 Keras 了,并且还将改善 CI 时间。」 此次 Keras 分离过程的负责人是谷歌高级软件工程师 Scott Zhu,他代表 Keras 团队向所有 Keras 用户发表了公开声明,解释了 Keras 从 TensorFlow 代码库中分离出来的缘由以及分离后为用户带来的诸多便利之处。 开发团队花费了很多精力使 TensorFlow 更加模块化,并优化了 Keras 和 TensorFlow 之间的依赖关系。最终 Keras 从 TensorFlow 代码库中分离出来,并拥有了自己独立的代码库。这使 Keras 能够使用 Tensorflow Python API 作为 PIP 包依赖项,且无需在构建和测试时编译 TensorFlow。因此现在在本地运行 Keras Bazel 测试只需要几分钟,而不是几小时。 变更之后,当前 TensorFlow 代码库中的 Keras 部分将很快被删除。这意味着: 1. Keras 开源代码库的访问地址将发生变更; 原地址: 新地址: 2. 用于代码库管理的 git 工具。 3. 任何在先前代码库中未解决的服务器托管 Keras 相关活跃问题将在现有的 ticket 线程中处理,并将通过提交到新代码库进行修复; 4. 与原代码库相关的陈旧问题将被关闭。如果你认为仍然是有价值的问题,请随时在新代码库中重新打开该问题; 5. 新 Keras 代码库在此次变更前未完成的任何 PR/issue 都被认为是陈旧的,将被关闭。 用户在提交自己的代码以供审查并获得批准时,必须签署谷歌个人贡献者许可协议(CLA),这样才可以将代码放入 Keras 代码库中。此外,在提交更多的贡献时,用户也应首先通过问题跟踪器(issue tracker)与 Keras 联系沟通。 包括项目成员在内所有用户的提交都必须接受审查。为此,Keras 使用 GitHub 拉取请求(pull request, PR),并建议用户在创建 PR 之前阅读相关指南。 完成本地更改并通过测试验证后,用户可以在 keras-team/keras 项目中打开并发送 PR,之后会经过一系列的测试来验证它的正确性。一旦 PR 被审查者测试和批准,PR 将被镜像到谷歌内部存储库。一旦合并到 Google 内部存储库成功完成,PR 还将被标记为已合并(merged)。这与 Tensorflow OSS 的贡献流程相同,相关示例如下图所示: 在做任何更改之前,Keras 团队建议用于打开 issue,并在上面讨论。Keras 也会给予反馈并对用户提出的更改进行验证。如果更改很小,如文档修复中简单的 bug 修复,则只需打开 PR 无需讨论。 与个人用户不同,企业用户提交的贡献需要遵守《谷歌软件授权与企业贡献者许可协议》。 使用 Keras 开发所需要的工具主要包括如下: 用于创建和测试 Keras 项目的 Bazel 工具和 Python; 用于代码库管理的 git 工具。 以苹果 Mac 电脑(Linux 系统的配置非常相似)为例,使用如下命令设置并检查本地工作区的配置: Python 虚拟环境是创建独立环境的强大工具,可以将任何系统级配置的更改隔离开来。因此,Keras 强烈建议避免出现任何意外的依赖或版本问题。 在本地运行一个测试的代码如下: 最后为大家推荐一篇 Keras 的中文教程,它由 Keras 团队软件工程师金海峰翻译自官网教程,详细介绍了 Keras 和 TensorFlow 的基本用法和核心概念,并通过变分自编码器(Variational Autoencoder)和超网络(Hypernetwork)这两个完整的例子展示了如何在实践中使用 Keras。 教程知乎链接:Keras 正式从 TensorFlow 代码库中分离
用户想要提交贡献,如何做?
开发所需的工具
设置和检查本地工作区
下载 Keras 代码和设置虚拟环境
本地运行测试