简单来说,Tensorflow1.x 与 Tensorflow2.0的主要区别在于tf1.x使用静态图而tf2.x使用Eager Mode动态图。下图是Tensorflow2.0的架构图,使用keras API作为构建神经网络的工具。
Eager Mode动态图模式
在Eager Mode 推出之前,基于TensorFlow的程序使用的静态计算图,计算过程首先被编译成一个有向无环图。这种模式下模型的计算性能得到了保证,但是却大大牺牲了灵活性,如果对计算图进行修改,则在每个session执行计算之前将会要重新编译计算图,会带了额外的开销。
Eager Mode下我们可以像使用Numpy数组一样快速获得模型部分结构的执行结果,而无需针对每次计算过程都执行创建session,构建feed_dict等比较繁琐的操作,这为我们验证模型的前向计算过程提供了非常大的便利。
以a+b为例。在ft1.x中,创建计算图的过程仅仅是使用各变量名创建出 “ a + b ” 加法的计算规则,记录下该公式的计算步骤,并没有传入具体的值和执行具体的计算过程。
using System;
using Tensorflow;
using static Tensorflow.Binding;
namespace TF_Test {
class Program {
//Basic Operation 2.0 + 3.0 with