Tensorflow2.0快速了解

Tensorflow框架是流行的深度学习框架之一。与其他流行的深度学习框架相比,Tensorflow有优点,也有不足。随着近日谷歌在上海举办了开发者大会,隆重推出了Tensorflow2.0版本,将Tensorflow又一次的吸引了深度学习开发者的目光。这篇文章主要是简单快速的了解新框架,分析新旧框架的异通点。
简言之,Tensorflow2.0是一次重大的更新升级,此次升级重点放在了简单性和易用性,重整了很多混乱的模块,让框架更简单。新特性如下:
·构建模型更简单。
·部署模型更省时。
·理论仿真更易用。
Tensorflow2.0将之前各种发行版本添加的组件进行了打包,融合成了一个综合性的平台,支持从训练到部署的机器学习工作流。让我们用一张简单的概念图去理解一下Tensorflow2.0架构。
在这里插入图片描述

构建模型更简单:

用于机器学习的用户友好的 API 标准 Keras 将成为用于构建和训练模型的主要高级 API。Keras API 使得使用 TensorFlow 变得容易。重要的是,Keras 提供了几个模型构建 API,因此您可以为项目选择正确的抽象级别。TensorFlow 的实现包含一些增强功能,包括用于即时迭代和直观调试的功能等。
下面是一个工作流示例(在接下来的几个月里,我们将努力更新下面链接的指南):
1)使用 tf.data 加载数据。使用 tf.data 创建的输入管道读取训练数据。还支持从内存(例如 Numpy)方便地输入数据。
2)使用 tf.keras 构建、训练和验证您的模型,或者使用 Premade Estimators 来验证您的模型。Keras 与 TensorFlow 的其余部分紧密集成,因此您可以随时使用 TensorFlow 的功能。一组标准的打包模型(例如线性回归、逻辑回归、随机森林)也可以直接使用(使用 tf.estimator API 实现)。如果您不想从头开始训练一个模型,您很快就能使用迁移学习来训练一个使用 TensorFlowHub 模块的 Keras 或 Estimator 模型。
3)使用 eager execution运行和调试,然后使用 tf.function。TensorFlow 2.0 在默认情况下运行时有很强的执行能力。此外,tf.function 注释会将 python 程序转换为 TensorFlow 图。这个过程保留了基于 1.x TensorFlow 执行的所有优点:性能优化、远程执行以及易于序列化、导出和部署的能力。
4)使用分发策略进行分发训练。对于大型 ML 训练任务,分发策略 API 使在不更改模型定义的情况下,可以轻松地在不同的硬件配置上分发和训练模型。由于 TensorFlow 支持一系列硬件加速器,如 CPU、GPU 和 TPU,因此您可以将训练工作量分配到单节点/多加速器以及多节点/多加速器配置,包括 TPU Pods。
5)导出到 SavedModel。TensorFlow 将在 SavedModel 上作为 TensorFlow 服务、TensorFlow Lite、TensorFlow.js、TensorFlow Hub 等的交换格式进行标准化。

部署模型更省时:

一直以来,TensorFlow 为生产提供了直接途径。无论是在服务器、边缘设备还是网络上,使用何种语言或平台,TensorFlow 都可以让您轻松地训练和部署模型。在 TensorFlow 2.0 中,我们通过标准化交换格式和调整 API 来改进平台和组件之间的兼容性和奇偶性。

一旦您训练并保存了模型,就可以直接在应用程序中执行它,或者使用部署库为其提供服务:
·TensorFlow 服务:允许模型通过 HTTP/REST 或 GRPC/协议缓冲区提供服务的 TensorFlow 库构建。
·TensorFlow Lite:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统上部署模型的能力。
·tensorflow.js:支持在 JavaScript 环境中部署模型,例如在 Web 浏览器或服务器端通过 Node.js 部署模型。TensorFlow.js 还支持在 JavaScript 中定义模型,并使用类似于 Kera 的 API 直接在 Web 浏览器中进行训练。
TensorFlow 还支持其他语言(一些由更广泛的社区维护),包括 C、Java、Go、C#、Rust、Julia、R 等。

理论仿真更易用:

TensorFlow 2.0 包含了许多功能,可以在不牺牲速度或性能的情况下定义和训练最先进的模型:
·Keras 功能 API 和 Model Subclassing API:允许创建复杂的拓扑结构,包括使用剩余层、自定义多输入/输出模型和前向迭代。
·自定义训练逻辑:使用 tf.GradientTape 和 tf.custom_gradient 对梯度计算进行细粒度控制。
·为了实现更大的灵活性和更好的控制性,低级 TensorFlow API 始终可用,并通常与高级抽象 API 结合使用,以实现完全可定制的逻辑。
TensorFlow 2.0 带来了一些新的补充,允许研究人员和高级用户使用丰富的扩展进行实验,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 以及更多有待公布的内容。

TensorFlow 1.x 和 2.0 之间的差异:

以下是一些更大的变化:
·删除支持 tf.data 的队列运行程序
·移除图集合
·变量处理方式的更改
·API 符号的移动和重命名
此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程中删除。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 指南。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值