文章目录
1、简介
TensorFlow 2发布已经接近2年时间,不仅继承了Keras快速上手和易于使用的特性,同时还扩展了原有Keras所不支持的分布式训练的特性。并且TensorFlow 2是真正整合了TensorFlow生态的其它组件,例如TensorFlow Serving、TensorFlow Lite等,这些可以帮助我们提升生产级AI的稳定性和可维护性。并且借助官方文档进行学习可以更加快速地进行学习。
2、设计思想
2.1、TensorFlow与Pytorch
PyTorch 采用的是动态图机制 (Dynamic Computational Graph),而 Tensorflow 采用的是静态图机制 (Static Computational Graph)。
动态图是运算和搭建同时进行,也就是可以先计算前面的节点的值,再根据这些值搭建后面的计算图。优点是灵活,易调节,易调试。PyTorch 里的很多写法跟其他 Python 库的代码的使用方法是完全一致的,没有任何额外的学习成本。
静态图是先搭建图,然后再输入数据进行运算。优点是高效,因为静态计算是通过先定义后运行的方式,之后再次运行的时候就不再需要重新构建计算图,所以速度会比动态图更快。但是不灵活。TensorFlow 每次运行的时候图都是一样的,是不能够改变的,所以不能直接使用 Python 的 while 循环语句,需要使用辅助函数 tf.while_loop 写成 TensorFlow 内部的形式。
2.2、TensorFlow 2 新特性
3大设计原则:简化概念,海纳百川,构建生态
- 简化概念:是相比于TensorFlow 1来说的,TensorFlow 1关注于模型的性能问题,可以自由定义各种算子与模型,牺牲了易用性,2相较于1砍掉了大量的API。
- 海纳百川:吸收了Keras以及Numpy等简单操作的特性。
- 构建生态:TF2的生态很丰富,例如,训练可视化的TensorBoard,部署到云端的TF Serving,到边缘设备的TF Lite。
2.3、TensorFlow 2 核心模块
- 数据处理模块 tf.data & tf.keras
- 负责数据的管理。
- 支持多种数据来源:本地文件、分布式文件系统、对象存储系统。
- 支持多种数据格式。
- tf.keras在分布式与高性能上有所提升
- 分布式策略模块 tf.distribute
- 用少量代码把原来的模型变成分布式训练的模型,提供许多的strategy,加速模型训练。
- 模型序列化 saved model
- 训练完成的模型通过模型保存模块可以保存成多种文件格式,并根据需求部署到不同设备上。