选自Medium
作者:TensorFlow
机器之心编译
四天前,TensorFlow 2.0 预览版终于上线了,看来稳定版距离我们也不会太远——按照官方说法会是今年的第一个季度。近日,TensorFlow 官方博客全面介绍了 2.0 版的所有新特性。为了让开发者们简单高效地搭建模型,2.0 版本经过了大幅度重建。
作为最流行的深度学习框架,TensorFlow 已经成长为全球使用最广泛的机器学习平台。目前,TensorFlow 的开发者社区包括研究者、开发者和企业等。
去年 11 月,TensorFlow 庆祝了自己的三岁生日。不久之后,也将迎来另一个重要里程碑——TensorFlow 2.0。
TensorFlow 2.0 将专注于简洁性和易用性,主要升级方向包括:
谷歌表示,在过去几年里,TensorFlow 增加了很多组件。通过 TensorFlow 2.0 版本的大幅度重建,这些功能将被打包成为一个综合平台,支持从训练到部署的整个机器学习工作流程。下图简要展示了 TensorFlow 2.0 的新架构:
Note:虽然上图的训练部分侧重 Python API,但是 TensorFlow.js 也支持训练模型。TensorFlow 2.0 对其他语言也有不同程度的支持,包括 Swift、R 语言和 Julia。
轻松构建模型
TensorFlow 团队近期宣布 Keras API 将成为 TensorFlow 中构建和训练模型的核心高级 API。Keras API 使得使用 TensorFlow 开启项目变得简单。重要的是,Keras 提供多个模型构建 API(Sequential、Functional 和 Subclassing),这样你可以选择适合自己项目的抽象级别。TensorFlow 的实现有多项增强,包括可直接迭代和直观调试的 eager execution,以及用于构建可扩展输入流程的 tf.data。
以下是工作流程示例(在接下里的几个月中,我们将努力更新以下链接的指南):
在任意平台上实现稳健的生产环境模型部署
TensorFlow 总是会提供直接的产品化路径。不论是在服务器、边缘设备还是网页上,也不论你使用的是什么语言或平台,TensorFlow 总能让你轻易训练和部署模型。在 TensorFlow 2.0 中,我们正在通过标准化交换格式和调整 API 来改进跨平台和组件的兼容性和奇偶性(parity)。
TensorFlow 还支持其它语言(由更广泛的社区维护),包括:C、Java、Go、C#、Rust、Julia、R 等等。
为研究提供强大的实验工具
TensorFlow 使得从概念到代码和从模型到出版物中获取新想法变得更加容易。TensorFlow 2.0 结合了很多功能,能够在不牺牲速度或性能的情况下定义和训练最先进的模型:
TensorFlow 2.0 新添了一些附加功能,让研究人员和高级用户可以使用丰富的插件来进行实验,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 等。
除了这些功能之外,TensorFlow 还提供了易于制作原型和调试的 eager execution,可以大规模训练的 Distribution Strategy API 和 AutoGraph,以及对 TPU 的支持,使 TensorFlow 2.0 成为一个易于使用、可定制和高度可扩展的平台,用于展开最先进的 ML 研究并将该研究转化为生产流水线。
TensorFlow 1.x 和 2.0 的区别
自我们开源 TensorFlow 以来,到现在已经发展出很多个版本和 API 迭代。随着 ML 的快速发展,这个平台也有了巨大的进展,现在支持很多具有不同需求的不同用户。有了 TensorFlow 2.0,我们有机会基于语义版本控制来清理和模块化平台。
此次的重大改变包括:
此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程中移除。TensorFlow 的 contrib 模块已经超出了单个存储库可以维护和支持的范围。较大的项目最好单独维护,而较小的扩展将逐渐移至核心 TensorFlow 代码。一个特别兴趣小组(SIG)已经成立,以维持和进一步发展一些更重要的未来 contrib 项目。如果你有兴趣贡献,请联系以下 RFC:
https://github.com/tensorflow/community/pull/37
兼容性和持续性
为了简化向 TensorFlow 2.0 的过渡,将会有一个转化工具来更新 TensorFlow 1.x Python 代码,以使用 TensorFlow 2.0 兼容的 API,或标记代码无法自动转换的情况。
不是所有的变化都可以完全自动化进行。例如,一些被弃用的 API 没有直接的等效物。这也是我们要引入 tensorflow.compat.v1 兼容性模块的原因,该模块支持完整的 TensorFlow 1.x API(包括 tf.contrib)。该模块将会在 TensorFlow 2.x 的时间线内得到维护,并允许用 TensorFlow 1.x 编写的代码保持功能。
此外,SavedModels 或存储的 GraphDefs 将向后兼容。用 TensorFlow 1.x 保存的 SavedModels 将继续在 2.x 中加载和执行。然而,2.0 中的更改意味着原始检查点中的变量名可能会更改,所以使用 2.0 之前的检查点而代码已转化为 2.0 时,可能无法保证有效。详情可参阅 TensorFlow 2.0 指南:
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md
我们相信,TensorFlow 2.0 将为社区带来巨大的利益,我们也尽了最大的努力来让转化变得简单。但是,我们也发现迁移现在的线程需要时间,我们非常重视社区当下在学习和使用 TensorFlow 方面的投入。我们将在最近的 1.x 版本中提供 12 个月的安全补丁,以为现有的用户提供足够的时间来过渡和利用 TensorFlow 2.0。
TensorFlow 2.0 时间线
TensorFlow 2.0 于今年年初发布预览版。你现在已经可以通过使用 tf.keras 、eager execution、预打包模型和部署库来开发 TensorFlow 2.0 了。Distribution Strategy API 也已经部分可用。
原文链接:https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8?linkId=62351082