程序员充电站人工智能技术圈

TensorFlow 2.0 新功能

2019-05-07  本文已影响218人  TensorFlow开发者

TensorFlow 已经发展为世界上最受欢迎和被广泛采用的机器学习平台之一,Google衷心感谢一直以来支持Google的各界的开发者和他们的贡献:

2018 年 11 月,TensorFlow 迎来了它的3 岁生日,Google回顾了几年来它增加的功能,进而对另一个重要里程碑 TensorFlow 2.0感到兴奋 !

TensorFlow 2.0将专注于 简单性和 易用性,具有以下更新:

在过去的几年里,GoogleTensorFlow 添加了许多组件。在 TensorFlow 2.0 中,它们将被打包成一个全面的平台,支持从训练到部署的机器学习工作流程。让Google使用如下所示的简化概念图来了解 TensorFlow 2.0 的新架构:

注:上图的训练部分虽然侧重于 Python API,但 TensorFlow.js也支持训练模型。也支持其他语言,包括 Swift,R 和 Julia简单的模型构建

在最近的文章中,Google宣布 Keras API将成为 TensorFlow中构建和训练模型的核心高级 API。Keras API使得使用TensorFlow开启项目变得简单。重要的是,Keras提供了几个模型构建API ( Sequential, Functional, 和 Subclassing ),因此您可以选择适合的抽象级别。TensorFlow的实现包含多项增强功能,包括即时迭代和直观调试,以及tf.data,用于构建可扩展的输入管道。

下面是一个工作流程示例 ( 在接下来的几个月里,Google将更新下面所述内容的指南 ):

  1. 使用 tf.data 加载数据。使用输入管道读取训练数据,用tf.data创建的输入线程读取训练数据。使用tf.feature_column描述特征,例如嵌套和特征交叉。还支持从内存数据(例如 NumPy)中方便地输入

  2. 使用 tf. KerasPremade Estimators 构建、训练和验证模型。Keras 与 TensorFlow的其余部分紧密集成,因此您可以随时访问 TensorFlow的功能。一组标准的打包模型 ( 例如,线性或逻辑回归、梯度增强树、随机森林 ) 也可以直接使用 ( 利用 tf.estimator API实现 )。如果你不想从头开始训练一个模型,你很快就能通过 TensorFlow Hub的模块利用迁移学习来训练Keras 或 Estimator模型

  3. 使用 eager execution 运行和调试,然后在图形上使用 tf.function。TensorFlow 2.0 在默认情况下以 eager execution方式运行,以便于使用和顺利调试。此外,tf.function annotation透明地将 Python程序转换成 TensorFlow图。这个过程保留了 TensorFlow 1.x基于图执行的所有优点:性能优化、远程执行以及轻松序列化、导出和部署的能力,同时增加了使用简单的Python表达程序的灵活性和易用性

  4. 使用分布策略进行分布式训练。对于大型机器学习训练任务来讲,Distribution Strategy API 使得在不更改模型定义的情况下,在不同硬件配置上分布和训练模型变得很容易。由于 TensorFlow提供了对 CPU、GPU 和 TPU等一系列硬件加速器的支持,因此可以将训练工作负载分布到单节点 / 多加速器以及多节点 / 多加速器配置,包括 TPU Pods。虽然此 API 支持各种集群配置,但还提供了在本地或云环境中部署 Kubernetes 集群训练的模板

  5. 导出到 SavedModel。TensorFlow 将在 SavedModel 上标准化,作为 TensorFlowServing、TensorFlow Lite、TensorFlow.js、TensorFlow Hub等的交换格式

想要了解TensorFlow指南详细信息,请参阅:
https://tensorflow.google.cn/guide/?hl=zh-CN

在任何平台上的生产环境中进行稳健的模型部署TensorFlow始终为生产提供了直接途径。无论是在服务器、边缘设备或者web上,无论您使用哪种语言或平台,TensorFlow 都可以让您轻松地训练和部署模型。在 TensorFlow 2.0 中,Google通过标准化交换格式和调整 API 来提高平台和组件之间的兼容性和一致性。

一旦您训练并保存了模型,就可以直接在应用程序中执行它,或者使用以下部署库之一为它提供服务:

TensorFlow还支持其他语言 ( 一些由更广泛的社区维护 ),包括C, Java, Go, C#, Rust, Julia, R 等。

为研究提供强大的实验工具

TensorFlow使从概念到代码、从模型到发布的新思想变得容易。TensorFlow 2.0集成了许多功能,可以在不牺牲速度或性能的情况下定义和训练最新模型:

TensorFlow 2.0 带来了一些新功能,允许研究人员和高级用户使用丰富的扩展 ( 如 Ragged Tensors, TensorFlow Probability, Tensor2Tensor 等) 进行实验。

除了这些功能外,TensorFlow 提供eager excution,便于原型制作和调试,Distribution Strategy APIAutoGraph进行规模化训练, 以及对TPU的支持, 使 TensorFlow 2.0成为一个易于使用、可定制和高度可扩展的平台,用于进行最先进的机器学习研究并将研究转化为生产流水线。

TensorFlow 1.x2.0 的区别

自从Google最初开源 TensorFlow以来,已经有了许多版本和 API 迭代。随着机器学习的快速发展,该平台得到了极大的发展,现在支持具有不同需求的不同用户组合。使用 TensorFlow 2.0Google有机会清理和模块化基于语义版本控制的平台。

以下是一些较大的变化:

此外,tf_contrib将从TensorFlow核心存储库和构建流程中删除。TensorFlowcontrib 模块已经超出了单个存储库所能维护和支持的范围。较大的项目最好单独维护,而较小的扩展将逐步过渡到核心 TensorFlow代码。一个特别兴趣小组 ( SIG ) 已经成立,以维持和进一步发展未来一些更重要的contrib项目。

如果您有兴趣贡献,请回复此贴:
https://github.com/tensorflow/community/pull/37

兼容性和连续性

为了简化向 TensorFlow 2.0的过渡,将有一个转换工具,它可以更新TensorFlow 1.x ,Python 代码以使用 TensorFlow 2.0兼容 API,或者标记代码无法自动转换的情况。

并非所有更改都可以完全自动完成。例如,某些已弃用的 API 没有直接等效项。这就是Google引入 tensorflow.compat.v1兼容性模块的原因,该模块保留了对完整 TensorFlow 1.x API(不包括 tf.contrib)的支持。 该模块将在 TensorFlow 2.x的生命周期内维护,并允许使用TensorFlow 1.x编写的代码保持功能。

此外,SavedModels或存储的 GraphDefs将向后兼容。 使用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

Google相信TensorFlow 2.0将为应用开发带来巨大的益处,Google已投入大量精力使转换变得尽可能简单。但是,Google也认识到迁过渡当前的线程需要时间,Google非常关心社区目前对学习和使用TensorFlow的投资。 Google将在最后的1.x版本中提供 12 个月的安全补丁,以便为现有用户提供充足的时间进行过渡并获得 TensorFlow 2.0的所有优势。

TensorFlow 2.0预览版已于今年年初发布。

您已经可以通过使用tf.keras 和 eager execution,预打包模型和部署库来开发 TensorFlow 2.0 了。Distribution Strategy API目前已部分可用。

GoogleTensorFlow 2.0以及即将到来的变化感到非常兴奋。TensorFlow已经从一个用于深度学习的软件库成长为一个适用于所有机器学习类型的完整生态系统。TensorFlow 2.0 将简单易用,适用于所有平台上的所有用户。


上一篇下一篇

猜你喜欢

热点阅读