专栏首页机器学习与统计学Keras正式从TensorFlow分离:效率大幅提升

Keras正式从TensorFlow分离:效率大幅提升

以后在本地运行 Keras Bazel 测试将不再花费几小时,只需要几分钟。

对于深度学习领域的从业者而言,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 正式从 TensorFlow 代码库中分离

此次 Keras 分离过程的负责人是谷歌高级软件工程师 Scott Zhu,他代表 Keras 团队向所有 Keras 用户发表了公开声明,解释了 Keras 从 TensorFlow 代码库中分离出来的缘由以及分离后为用户带来的诸多便利之处。

开发团队花费了很多精力使 TensorFlow 更加模块化,并优化了 Keras 和 TensorFlow 之间的依赖关系。最终 Keras 从 TensorFlow 代码库中分离出来,并拥有了自己独立的代码库。这使 Keras 能够使用 Tensorflow Python API 作为 PIP 包依赖项,且无需在构建和测试时编译 TensorFlow。因此现在在本地运行 Keras Bazel 测试只需要几分钟,而不是几小时。

变更之后,当前 TensorFlow 代码库中的 Keras 部分将很快被删除。这意味着:

1. Keras 开源代码库的访问地址将发生变更;

  • 原地址:https://github.com/tensorflow/tensorflow
  • 新地址:https://github.com/keras-team/keras

2. 经过许可之后,原代码库中 Keras 部分的相关 PR 将被手动合并到新代码库中。Keras 团队成员将在内部进行同步和合并,相关作者无需进行任何操作。但如果 PR 已经打开很长时间且没有作者的活动,Keras 团队可能会关闭它;

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 系统的配置非常相似)为例,使用如下命令设置并检查本地工作区的配置:

下载 Keras 代码和设置虚拟环境

Python 虚拟环境是创建独立环境的强大工具,可以将任何系统级配置的更改隔离开来。因此,Keras 强烈建议避免出现任何意外的依赖或版本问题。

本地运行测试

在本地运行一个测试的代码如下:

(venv_dir) scottzhu-macbookpro2:keras scottzhu$ bazel test -c opt keras:backend_test
WARNING: The following configs were expanded more than once: [v2]. For repeatable flags, repeats are counted twice and may lead to unexpected behavior.
INFO: Options provided by the client:
  Inherited 'common' options: --isatty=1 --terminal_columns=147
INFO: Reading rc options for 'test' from /Users/scottzhu/workspace/keras/.bazelrc:
  Inherited 'build' options: --apple_platform_type=macos --define open_source_build=true --define=use_fast_cpp_protos=false --define=tensorflow_enable_mlir_generated_gpu_kernels=0 --define=allow_oversize_protos=true --spawn_strategy=standalone -c opt --announce_rc --define=grpc_no_ares=true --config=short_logs --config=v2
INFO: Reading rc options for 'test' from /Users/scottzhu/workspace/keras/.bazelrc:
  'test' options: --define open_source_build=true --define=use_fast_cpp_protos=false --config=v2
INFO: Found applicable config definition build:short_logs in file /Users/scottzhu/workspace/keras/.bazelrc: --output_filter=DONT_MATCH_ANYTHING
INFO: Found applicable config definition build:v2 in file /Users/scottzhu/workspace/keras/.bazelrc: --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1
INFO: Found applicable config definition build:v2 in file /Users/scottzhu/workspace/keras/.bazelrc: --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1
INFO: Analyzed target //keras:backend_test (0 packages loaded, 0 targets configured).
INFO: Found 1 test target...
Target //keras:backend_test up-to-date:
  bazel-bin/keras/backend_test
INFO: Elapsed time: 45.535s, Critical Path: 45.26s
INFO: 19 processes: 19 local.
INFO: Build completed successfully, 20 total actions
//keras:backend_test                                                     PASSED in 45.2s
  Stats over 4 runs: max = 45.2s, min = 40.0s, avg = 41.5s, dev = 2.1s

INFO: Build completed successfully, 20 total actions

最后为大家推荐一篇 Keras 的中文教程,它由 Keras 团队软件工程师金海峰翻译自官网教程,详细介绍了 Keras 和 TensorFlow 的基本用法和核心概念,并通过变分自编码器(Variational Autoencoder)和超网络(Hypernetwork)这两个完整的例子展示了如何在实践中使用 Keras。

教程知乎链接:https://zhuanlan.zhihu.com/p/380472423

本文分享自微信公众号 - 机器学习与统计学(tjxj666)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一招检验10大深度学习框架哪家强!

    来源:机器之心 本文长度为2698字,建议阅读4分钟 本文通过构建同一个神经网络,对比当前最流行的 10 种深度学习框架。 [ 导读 ]近日,Ilia Karm...

    数据派THU
  • 从Caffe2到TensorFlow,十种框架构建相同神经网络效率对比

    机器之心
  • 从Caffe2到TensorFlow,十种框架构建相同神经网络效率对比

    近日,Ilia Karmanov 在 Medium 发表了一篇题为《Neural Net in 10 Frameworks (Lessons Learned)》...

    小莹莹
  • Keras 2发布:实现与TensorFlow的直接整合

    选自 The Keras Blog 作者:Francois Chollet 机器之心编译 参与:晏奇、黄小天、吴攀 ? Keras 在 2015 年 3 月首次...

    机器之心
  • 深度学习库 Keras 2 重磅发布,与 TensorFlow 联系更紧密

    昨天,著名深度学习开源库 Keras 通过官方博客正式发布了全新版本:Keras 2。 根据官方介绍,此次更新的重点有两个: Keras 2 API 将作为 ...

    AI研习社
  • TensorFlow2.0 问世,Pytorch还能否撼动老大哥地位?

    关于TensorFlow 2.0 preview,在谷歌开源战略师 Edd Wilder-James 曾将公开的一封邮件就有介绍,TensorFlow 2.0 ...

    学到老
  • 2017 深度学习框架发展大盘点——迎来 PyTorch,告别 Theano

    深度学习是机器学习中一种基于对数据进行表征学习的方法,作为当下最热门的话题,谷歌、Facebook、微软等巨头纷纷围绕深度学习做了一系列研究,一直在支持开源深度...

    AI研习社
  • 官方解读:TensorFlow 2.0中即将到来的所有新特性

    作为最流行的深度学习框架,TensorFlow 已经成长为全球使用最广泛的机器学习平台。目前,TensorFlow 的开发者社区包括研究者、开发者和企业等。

    机器之心
  • 谷歌工程师:TensorFlow已重获新生;网友:我还是用PyTorch

    这次来自谷歌的工程师Cassie Kozyrkov。她发表博文称,TensorFlow升级到2.0版本后有了翻天覆地的变化, 对新手更加友好了。

    量子位
  • 官方解读:TensorFlow 2.0中即将到来的所有新特性

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载

    小小詹同学
  • 深度学习入门该用PyTorch还是Keras?热门公开课换框架背后的学问

    李林 问耕 编译整理 量子位 出品 | 公众号 QbitAI ? 你知道fast.ai么? 他们以提供零基础的深度学习课程而闻名,宣称:只要你有高中数学基础、一...

    量子位
  • Python扩大领先优势:2018年数据科学语言&工具排名

    导读:近日,著名数据科学网站 KDnuggets 发布了 2018 年数据科学和机器学习工具调查结果。超过 2000 人对自己「过去 12 个月内在项目开发中使...

    华章科技
  • TensorFlow从1到2(十四)评估器的使用和泰坦尼克号乘客分析

    通常认为评估器因为内置的紧密结合,运行速度要高于Keras。Keras一直是一个通用的高层框架,除了支持TensorFlow作为后端,还同时支持Theano...

    俺踏月色而来
  • 王霸之路:从0.1到2.0,一文看尽TensorFlow“奋斗史”

    2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本。

    AI科技大本营
  • 王霸之路:从0.1到2.0,一文看尽TensorFlow“奋斗史”

    2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本。

    AI算法与图像处理
  • Python扩大领先优势,PyTorch仅占6.4%:2018年数据科学语言&工具排名

    机器之心
  • 2018年数据科学语言&工具排名,Python完胜R语言

    近日,著名数据科学网站 KDnuggets 发布了 2018 年数据科学和机器学习工具调查结果。超过 2000 人对自己「过去 12 个月内在项目开发中使用过的...

    用户6543014
  • 机器学习工具榜单-Python取代R成为最受欢迎的编程语言

    近日,KDnuggets网站公布了2018年度的数据科学和机器学习工具调查结果。2300多名参与者对自己“过去 12 个月内在项目开发中使用过的数据挖掘 / 机...

    机器人网
  • 主流的深度学习开源框架

    TensorFlow最初由谷歌的Machine Intelligence research organization 中Google Brain Team的研究...

    用户6021899

扫码关注云+社区

领取腾讯云代金券