TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了

栏目: 数据库 · 发布时间: 6年前

内容简介:8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布。今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为TensorFlow 默认的执行模式。这意味着TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图。在谷歌开发者大会的第二天,主会场全天都将进行TensorFlow 专场的演讲。来自 Google Brain 的软件工程

8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布。今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为TensorFlow 默认的执行模式。这意味着TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图。

谷歌开发者大会

在谷歌开发者大会的第二天,主会场全天都将进行TensorFlow 专场的演讲。

来自 Google Brain 的软件工程师冯亦菲在分享TensorFlow 编程接口的新动态时着重介绍了 tf.keras,tf.data 等高层库,总结了TensorFlow 团队对开发者使用TensorFlow 的一系列建议,包括:

  • 用 Eager 模式搭建原型

  • 用 Datasets 处理数据

  • 用 Feature Columns 提取特征

  • 用 Keras 搭建模型

  • 借用 Canned Estimators

  • 用 SavedModel 打包模型

其中,在介绍 Eager 模式时,她提到,在TensorFlow 2.0 版本中,Eager 模式会成为默认执行模式,让开发者更简洁高效地搭建原型。

在演讲结束后的交流中,冯亦菲提到TensorFlow 2.0 beta 版将会在今年年底公开,而正式版预计于明年 Q1 或 Q2 问世。Eager 模式变为默认设置之后,开发者可以在原型搭建完成后,利用 AutoGraph 把在 Eager 模式下搭建的模型自动变成计算图。开发者也可以进一步对 AutoGraph 生成的计算图进行优化,或者关掉 Eager 模式自己构建计算图。

我们注意到,在两个月之前刚刚发布的 AutoGraph  已经离开 tf.contrib 成为了正式的 TF 库的一部分,在设计文档中,工程师提到,「为了 TF 2.0 做准备,我们将 AutoGraph 从 tensorflow / contrib / autograph 移动到了 tensorflow / python / autograph。AutoGraph 仍可在 tensorflow.contrib.autograph 下访问,直到 tensorflow.contrib 被取消。」

谷歌开发者大会的「熟面孔」,Google AI 软件工程师金安娜同样出现在了今年的主题演讲中,她提到TensorFlow 工程师会将自己的最新的设计提议放在TensorFlow Community 的 Request for Comments 中,她鼓励开发者前往浏览,并针对工程师的最新设计思路给出自己的意见。

例如,Martin Wicke 关于 sunset tf.contrib 的提议就仍然在反馈阶段,有诸多开发者在该条 pull request 下提出了自己的意见。

RFC 的地址如下:

https://github.com/tensorflow/community/tree/master/rfcs

在今天下午的演讲中,会有更多来自谷歌的工程师分享与 Eager 模式相关的设计思路和设计细节。

TensorFlow 历程

TensorFlow 是由 Google Brain 团队在谷歌内部第一代 DL 系统 DistBelief 的基础上改进而得到的,这一通用计算框架目前已经成为最流行的机器学习开源工具。

TensorFlow 的前身 DistBelief 是谷歌 2011 年开发的内部 DL 工具,基于 DistBelief 的 Inception 网络获得了 2014 年的ImageNet挑战赛冠军。虽然 DistBelief 当时在谷歌内部已经应用于非常多的产品,但它过度依赖于谷歌内部的系统架构,因此很难对外开源。经过对 DistBelief 的改进与调整,谷歌于 2015 年 11 月正式发布了开源计算框架TensorFlow 0.5.0。相比于 DistBelief,TensorFlow 的计算框架更加通用、计算资源安排更加合理,同时支持更多的深度学习算法与平台。

在TensorFlow 开源后,基于 TF 的项目在第一年里面层出不穷:超过 480 人为 TF 做出了直接贡献,其中包括谷歌开发者、外部研究者、独立开发者、学生和其它公司的资深开发者。当时,TensorFlow 已经成为了 GitHub 上最受欢迎的机器学习项目。

在开源的第一年中,TensorFlow 增加了对分布式训练、iOS、树莓派开发板的支持,并且还与广泛使用的大数据架构相结合。此外,谷歌还发布了当时表现最好的图像分类模型 Inception-ResNet-v2,并且还回答了 GitHub、StackOverflow 和TensorFlow mailing list 上数以千计的问题。

去年 2 月份在首届TensorFlow 开发者大会中,谷歌正式发布了TensorFlow 1.0。在速度上,它在 64 个 GPU 上分布式训练 Inception v3 获得了 58 倍提速。在灵活性上,TensorFlow 1.0 引入了高层 API,例如 tf.layers、tf.metrics 和 tf.losses 等模块,同时通过 tf.keras 将 Keras 库正式整合进 TF 中。

此后,TensorFlow 发布了非常多的重要更新,包括动态图机制 Eager Execution、移动端深度学习框架TensorFlow Lite、面向 JavaScript 开发者的机器学习框架TensorFlow.js,以及自动将 Python 转化为 TF 计算图的 AutoGraph 等。

在TensorFlow 2.0 的规划中,Eager Execution 变为默认执行模式可能对开发者有比较大的影响,因为我们不再需要编写完整的静态计算图,并打开会话(Session)运行它。相反,与 PyTorch 一样,Eager Execution 是一个由运行定义的接口,这意味着我们在 Python 上调用它进行计算可以直接得出结果。这种方式非常符合人类直觉,因此可以预想TensorFlow 的入门在以后会简单地多。

以下为 8 月中旬谷歌大脑成员 Martin Wicke 在公开邮件中透露的TensorFlow 2.0 的规划:

TensorFlow 2.0 的规划

自 2015 年开源发布以来,TensorFlow 已经成为世界上使用最广泛的机器学习框架,面向广泛的用户和用例。此后,TensorFlow 随着计算硬件、机器学习研究和商业部署的快速发展而不断更新。

为了反映这些快速变化,谷歌开发者已经开始研究下一个版本的TensorFlow。TensorFlow 2.0 将是一个重要的里程碑,重点关注易用性。以下是用户对TensorFlow 2.0 的一些期望:

  • Eager execution 将是 2.0 的核心功能。它把用户对编程模型的期望与TensorFlow 实践更好地结合起来,应该会使TensorFlow 更容易学习和应用。

  • 支持更多的平台和语言,并通过交换格式的标准化和 API 的对齐来改善这些组件之间的兼容性和对等性。

  • 将删除过时的 API 并减少重复,以免给用户带来困惑。

据邮件称,谷歌计划年底之前发布TensorFlow 2.0 的预览版。

兼容性与连续性

TensorFlow 2.0 提供了一个纠错并改正的机会,而这些改进在语义版本控制中是不允许的。

为了简化转换,TensorFlow 团队将创建一个转换工具,该 工具 需要更新 Python 代码以使用与TensorFlow 2.0 兼容的 API,或者在无法自动转换时发出警告。在向 1.0 过渡的过程中,类似的工具发挥了巨大的作用。

不是所有的改进都能自动进行。比如,TensorFlow 不赞成使用一些没有直接对接的 API。对于这种情况,我们将提供一个兼容模块 (tensorflow.compat.v1),其中包含完整的TensorFlow 1.x API,它会在TensorFlow 2.x 的周期里得到维护。

磁盘兼容性

谷歌表示,他们不打算对 SavedModels 或 GraphDef 存储进行重大更改,计划 2.0 中能包含所有当前内核。然而,2.0 的变化意味着在与新模型兼容之前,原始 checkpoint 中的变量名必须要进行转换。

tf.contrib

TensorFlow 的 contrib 模块已经超出了单个存储库可以维护和支持的范围。较大的项目最好分开维护,我们将把较小的扩展与TensorFlow 主代码一起孵化。因此发布TensorFlow2.0 之后,我们将停止发布 tf.contrib。在接下来的几个月里,我们将与 contrib 各自的所有者合作制定详细的迁移计划,包括如何在TensorFlow 的社区页面和文档中宣传你的TensorFlow 扩展。对于每一个 contrib 模块,我们有以下选择:a)将项目整合到TensorFlow 中;b)将其移动到一个单独的存储库;c)将其彻底移除。这确实意味着所有的 tf.contrib 将被弃用,今天,TensorFlow 将停止添加新的 tf.contrib 项目。


以上所述就是小编给大家介绍的《TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序设计方法(中文版)

程序设计方法(中文版)

Matthias Fellisen / 黄林鹏、朱崇恺 / 人民邮电出版社 / 2003-12 / 49.00元

《程序设计方法》以Scheme语言为基础介绍计算和程序设计的一般理论和实践。《程序设计方法》由8个部分和7个独立的章节(第8、13、18、24、29、33、38章)组成。8个部分主要讨论程序设计,独立章节则介绍一些与程序设计和计算相关的话题。《程序设计方法》第1至第3部分介绍了基于数据驱动的程序设计基础。第4部分介绍了程序设计中的抽象问题。第5部分和第6部分是与递归及累积相关的内容。《程序设计方法......一起来看看 《程序设计方法(中文版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试