TensorFlow 2 是一个与 TensorFlow 1.x 使用体验完全不同的框架,TensorFlow 2 不兼容TensorFlow 1.x 的代码,同时在编程风格、函数接口设计等上也大相径庭,TensorFlow 1.x的代码需要依赖人工的方式迁移,自动化迁移方式并不靠谱。
TensorFlow 2 支持动态图优先模式,在计算时可以同时获得计算图与数值结果,可以代码中调试实时打印数据,搭建网络也像搭积木一样,层层堆叠,非常符合软件开发思维。
以简单的a + b的相加运算为例,在 TensorFlow 1.x 中,首先创建计算图, 创建计算图的过程就类比通过符号建立公式 = + 的过程,仅仅是记录了公式的计算步
骤,并没有实际计算公式的数值结果,需要通过运行公式的输出端子,并赋值 =2.0, = 4.0才能获得的数值结果
tensorflow 1.x
接下来我们使用 TensorFlow 2 来完成a+b运算
tensorflow 2.0
运行结果
这种运算时同时创建计算图 + 和计算数值结果a+b的方式叫做命令式编程,也称为动态图优先模式。TensorFlow 2 和 PyTorch 都是采用动态图(优先)模式开发,调试方便,所见即所得。一般来说,动态图模型开发效率高,但是运行效率可能不如静态图模式,TensorFlow 2 也支持通过 tf.function 将动态图优先模式的代码转化为静态图模式。