TF Boys必看!一文搞懂TensorFlow 2.0新架构!

2019 年 1 月 16 日 引力空间站


来源:Medium 

编辑:金磊、大明

TensorFlow 2.0马上要来了,还不速来了解下新架构?

作为全球最受欢迎的机器学习开源框架,在TensorFlow 发展的3年里,见证了机器学习和人工智能领域的快速发展和变化;与人类的孩子一样,不断学习,遭到批评,遇到对手,走向更大、更广阔的环境。


而TensorFlow 2.0作为一个重要的里程碑,将更加关注其“易用性”,更注重使用的低门槛,旨在让每个人都能应用机器学习技术。


那么在架构方面,又会有何不同呢?话不多说,来看下新架构图:



在过去的几年中,开发团队为TensorFlow添加了许多组件,而在2.0版本中,这些组件将被打包成一个综合平台,可支持机器学习的工作流程(从训练到部署)。正如上图所示。


尽管新架构中的训练部分主要关注Python API,但是TensorFlow.js还支持训练模型。其他语言绑定(language binding)也有不同程度的支持,包括Swift、R和Julia等。


最近,官方宣布Keras作为一个用户友好的机器学习API标准,将成为用于构建和训练模型的高级API。 Keras API让用户可以轻松开始使用TensorFlow。尤其重要的是,Keras提供了几个模型构建API(顺序,功能和子类),因此您可以为项目选择正确的抽象级别。 


Keras API使得上手TensorFlow非常容易。重要的是,Keras提供了几个模型构建API(Sequential、Functional以及Subclassing),因此用户可以选择正确的抽象化(abstraction)级别,TensorFlow的实现包含增强功能,包括eager execution、立即迭代(immediate iteration)和直观调试(intuitive debugging),以及tf.data,用于构建可扩展的输入pipeline。


TensorFlow的实现包含增强功能,包括急切执行,立即迭代和直观调试,以及tf.data,用于构建可扩展的输入管道。


以下是一个工作流程示例:


1、使用tf.data加载数据。使用输入管道读取训练数据,输入管道使用tf.data创建。利用tf.feature_column描述特征,如分段和特征交叉。此外还支持内存数据的便捷输入(如NumPy)。


2、使用tf.keras构建、训练并验证模型,或者使用Premade Estimators。Keras与TensorFlow的其余部分紧密集成,因此用户可以随时访问TensorFlow的函数。如线性或逻辑回归、梯度上升树、随机森林等也可以直接使用(使用tf.estimatorAPI实现)。如果不想从头开始训练模型,用户也可以很快利用迁移学习来训练使用TensorFlow Hub模块的Keras或Estimator模型。


3、快速执行运行和调试过程,然后使用tf.function充分利用图形的优势。在默认情况下,TensorFlow 2.0按快速执行方式运行,以便于顺利调试。此外,tf.function注释可以方便地将Python程序转换为TensorFlow图形。此过程保留了1.x TensorFlow基于图形的执行的所有优点:性能优化,远程执行以及方便序列化、导出和部署的能力,同时实现了在Python中表达程序的灵活性和易用性。


4、使用分布式策略进行分布式训练。对于大型机器学习训练任务,分布式策略API可以轻松地在不同硬件配置上分配和训练模型,无需更改模型的定义。由于TensorFlow支持各种硬件加速器,如CPU,GPU和TPU,因此用户可以将训练负载分配到单节点/多加速器以及多节点/多加速器配置上(包括TPU Pod)。这个API支持多种群集化配置,也提供了在本地或云环境中部署Kubernetes群集训练的模板。


5、导出到Saved Model。 TensorFlow将对Saved Model进行标准化,作为TensorFlow服务的一部分,他将成为TensorFlow Lite、TensorFlow.js、TensorFlow Hub等格式的可互换格式。


构建模型,如此简单!


TensorFlow始终为生产提供了直接部署方式。无论是部署在服务器、边缘设备还是Web上,TensorFlow都可以让用户对模型实现轻松训练和部署。无论用户使用何种语言或平台。在TensorFlow 2.0中,我们通过标准化互换格式和API对齐来提高跨平台和组件的兼容性。


训练并保存模型后,可以直接在应用程序中执行,也可以使用其中一个部署库为其提供服务:

TensorFlow服务:TensorFlow库,允许通过HTTP / REST或gRPC /协议缓冲区提供模型。

TensorFlow Lite:TensorFlow针对移动和嵌入式设备的轻量级解决方案提供了在Android,iOS和嵌入式系统(如Raspberry Pi和Edge TPU)上部署模型的功能。

TensorFlow.js:允许在JavaScript环境下部署模型,如在Web浏览器或服务器端通过Node.js实现部署。TensorFlow.js还支持使用类似Keras的API在JavaScript中定义模型并直接在Web浏览器中进行训练。


TensorFlow还支持其他语言,包括C,Java,Go,C#,Rust,Julia,R等。

 

功能强大的面向研究的实验环境


TensorFlow 2.0集成了许多功能,可以在不损失速度和性能的情况下定义和训练最先进的模型:

Keras Functional API和Model Subclassing API:可以创建复杂的拓扑,包括使用残差层,自定义多输入/输出模型以及强制写入的前向传递。

自定义训练逻辑:使用tf.GradientTape和tf.custom_gradient对梯度计算进行细粒度控制。

为了获得更大的灵活性和可控性,低级的TensorFlowAPI是始终可用的,并可与更高级的抽象概念工具结合使用,以实现完全可定制的逻辑。

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

除了这些功能外,TensorFlow还提供了易于执行的简单原型设计和调试,分布式策略API和AutoGraph,可以进行大规模训练,并支持TPU,这些都使TensorFlow 2.0成为一个易于使用、可定制且高度可扩展的平台,可用于实现最先进的技术,进行机器学习研究,并将研究转化为生产流程。

 

TensorFlow 1.x和2.0之间的差异


自从首次开源TensorFlow以来,我们已经发布了多个版本的API迭代。随着机器学习的快速发展,现在TensorFlow已经发展壮大,支持多样化的用户组合,可以满足各种需求。使用TensorFlow 2.0,用户有机会根据语义版本控制来实现平台的清理和模块化。



以下是一些较大的变化:


移除了队列运行器以支持tf.data。

移除了图表集合。

变量处理方式的变化。

可对API符号进行移动和重命名


更高的兼容性和连续性


为了让用户向TensorFlow 2.0的迁移更加容易,我们将发布一个转换工具,它可以对TensorFlow 1.x Python代码进行更新,以使用TensorFlow2.0兼容的API,或者对无法自动转换的代码予以标记。


当然,并非所有的更改都可以完全自动完成。比如,某些已被弃用的API没有直接的可替代对象。所以我们引入了tensorflow.compat.v1兼容性模块,该模块保留了对完整TensorFlow 1.x API(不包括tf.contrib)的支持。该模块将在整个TensorFlow 2.x的生命周期内保持维护,并允许使用TensorFlow 1.x编写的代码维护功能。


此外,Saved Model或保存的GraphDefs将向后兼容。使用1.x版本保存的SavedModels将继续能够在2.x中加载和执行。但是,2.0中的原始检查点中的变量名称可能会发生更改,因此,使用已转换为2.0版本代码中的2.0之前版本的检查点可能无法正常工作。


我们相信,TensorFlow 2.0将为开发者社区带来巨大利益,为了让这次版本转换变得尽量简单方便,我们投入了大量精力。


但是,我们也认识到,版本迁移需要时间,我们非常关心社区成员目前对学习和使用TensorFlow的投入。我们将在最后的1.x版本中提供12个月的安全补丁,以便为现有用户提供充足的时间进行过渡,并顺利获得TensorFlow2.0的所有优势。


参考链接:

https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8?linkId=62351082


- END -

推荐阅读

2019三大爆发新经济:AI、5G、芯片!

全球首台商用量子计算机,算力不敌小手机?

LeCun、吴恩达等AI大咖解析2019人工智能



登录查看更多
18

相关内容

Google发布的第二代深度学习系统TensorFlow
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
【干货】谷歌Joshua Gordon 《TensorFlow 2.0讲解》,63页PPT
专知会员服务
27+阅读 · 2019年11月2日
TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库
新智元
5+阅读 · 2019年10月8日
TensorFlow Lite 2019 年发展蓝图
谷歌开发者
6+阅读 · 2019年3月12日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
官方解读:TensorFlow 2.0中即将到来的所有新特性
机器之心
5+阅读 · 2019年1月15日
TensorFlow 2.0和PyTorch谁更好?大牛们争了好几天
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
Single-frame Regularization for Temporally Stable CNNs
Generalization and Regularization in DQN
Arxiv
6+阅读 · 2019年1月30日
Semantics of Data Mining Services in Cloud Computing
Arxiv
4+阅读 · 2018年10月5日
Arxiv
3+阅读 · 2018年4月9日
VIP会员
相关资讯
TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库
新智元
5+阅读 · 2019年10月8日
TensorFlow Lite 2019 年发展蓝图
谷歌开发者
6+阅读 · 2019年3月12日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
官方解读:TensorFlow 2.0中即将到来的所有新特性
机器之心
5+阅读 · 2019年1月15日
TensorFlow 2.0和PyTorch谁更好?大牛们争了好几天
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
Top
微信扫码咨询专知VIP会员