由于令人难以置信的多样化社区,TensorFlow 已经发展成为世界上最受欢迎和广泛采用的 ML 平台之一。这个社区包括:
去年 11 月,TensorFlow 庆祝了它的第三个生日,并回顾了这些年来增加的功能。我们很高兴迎来了另一个重要的里程碑:TensorFlow2.0。
TensorFlow 2.0 将重点放在简单和易用性上,它做了以下更新:
在过去的几年中,我们在 TensorFlow 中添加了许多组件。在 TensorFlow 2.0 中,这些组件将被打包成一个综合性平台,支持从训练到部署的机器学习工作流。让我们用一张简化的概念图来看看 TensorFlow2.0 的新架构,如下所示:
注意:尽管本图的训练部分侧重于 Python API,但 TensorFlow.js(https://js.tensorflow.org/) 也支持训练模型。它不同程度地支持其它语言,这些语言包括:Swift、R 和 Julia。
简单的模型构建
在最近的一篇博文(https://medium.com/tensorflow/standardizing-on-keras-guidance-on-high-level-apis-in-tensorflow-2-0-bad2b04c819a)中,我们宣布,用于机器学习的用户友好的 API 标准 Keras (https://www.tensorflow.org/guide/keras)将成为用于构建和训练模型的主要高级 API。Keras API 使得使用 TensorFlow 变得容易。重要的是,Keras 提供了几个模型构建 API,因此您可以为项目选择正确的抽象级别。TensorFlow 的实现包含一些增强功能,包括用于即时迭代和直观调试的功能等。
下面是一个工作流示例(在接下来的几个月里,我们将努力更新下面链接的指南):
在任何平台上的生产中进行强大的模型部署
一直以来,TensorFlow 为生产提供了直接途径。无论是在服务器、边缘设备还是网络上,使用何种语言或平台,TensorFlow 都可以让您轻松地训练和部署模型。在 TensorFlow 2.0 中,我们通过标准化交换格式和调整 API 来改进平台和组件之间的兼容性和奇偶性。
一旦您训练并保存了模型,就可以直接在应用程序中执行它,或者使用部署库为其提供服务:
TensorFlow 还支持其他语言(一些由更广泛的社区维护),包括 C、Java、Go、C#、Rust、Julia、R 等。
强大的研究实验
TensorFlow 2.0 包含了许多功能,可以在不牺牲速度或性能的情况下定义和训练最先进的模型:
TensorFlow 2.0 带来了一些新的补充,允许研究人员和高级用户使用丰富的扩展进行实验,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 以及更多有待公布的内容。
TensorFlow 1.x 和 2.0 之间的差异
以下是一些更大的变化:
此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程中删除(https://github.com/tensorflow/community/pull/18)。TensorFlow 的 contrib 模块已经超出了在单个存储库中可以维护和支持的范围。较大的项目单独维护会更好,而较小的扩展将整合到核心 TensorFlow 代码。
兼容性和连续性
为了简化代码迁移到 TensorFlow 2.0 的过程,将有一个转换工具,它可以更新 TensorFlow 1.x Python 代码以使用与 TensorFlow 2.0 兼容的 API,并将无法自动转换的代码标记出来。
此外,SavedModel 和 GraphDef 将向后兼容。用 1.x 版本保存的 SavedModel 格式的模型将继续在 2.x 版本中加载和执行。但是,2.0 版本中的变更将意味着原始检查点中的变量名可能会更改,因此使用 2.0 版本之前的检查点(代码已转换为 2.0 版本)并不保证能正常工作。有关详细信息,请参阅 TensorFlow 2.0 指南。
TensorFlow 2.0 的时间线
TensorFlow 2.0 将于今年年初公开发布。但为什么要等到那个时候?您已经可以使用 tf.keras 和 Eager execution、预打包模型和部署库来开发 TensorFlow2.0 方法。今天,部分分发策略 API 也已经可用。
我们对 TensorFlow2.0 和它即将带来的变化感到非常兴奋。TensorFlow 已经从一个用于深度学习的软件库成长为所有包括类型机器学习的整个生态系统。对所有平台上的所有用户来说,TensorFlow 2.0 将简单且易用。