tensorflow2.0 和tensorflow1.0 到底有什么区别,之前被问过,自己也没想过。
看了一些文章,主要有以下一些点。


tensorflow2.0 和tensorflow1.0的区别

  • 一、tensorflow2.0 与tensorflow1.0的性能区别
  • 二、TensorFlow 1.x的历史背景
  • 三、模型结构


一、tensorflow2.0 与tensorflow1.0的性能区别


因为tensorflow2.0 和tensorflow1.0 从本质上讲就是两个项目,1.0的静态图有他的优势,比如性能方面,但是debug不方便,2.0的动态图就是在模仿pytorch,但是画虎不成反类犬.

(1)一动一静
(2)速度不同 一快一慢
tensorflow2.0 耗时12.46秒,所以在用cpu 做训练时,相同的网络结构,相同的数据集合,tensorflow2.0比tensorflow1.0慢60%,tensorflow 静态图有非常明显的速度优势.
(3)占CPU不同
tensorflow2.0 在训练时的cpu占用32.3%
tensorflow1.0 在训练时的cpu占用63%,这也是tensorflow1.0 的优势,更能发挥硬件的优势

二、TensorFlow 1.x的历史背景

TF1.x的历史背景

TensorFlow 1.x主要是用于处理静态计算图的框架。计算图中的节点是张量,当该图运行时将保存n维数组。图中的边表示在运行图以实际执行有用的计算时将在张量上运行的函数。

在Tensorflow 2.0之前,我们必须将图形配置为两个阶段。在线上有很多教程介绍了此两步过程。对于TF 1.x,该过程通常如下所示:

建立一个描述您要执行的计算的计算图。此阶段实际上不执行任何计算;它只是建立计算的符号表示。该阶段通常将定义一个或多个placeholder对象,这些对象代表计算图的输入。

多次运行计算图。每次运行图形时(例如,执行一个梯度下降步骤),您都将指定要计算的图形部分,并传递一个feed_dict字典,该字典将为placeholder图形中的任何s提供具体的值。

TensorFlow 1.x主要是用于处理静态计算图的框架。计算图表的转换器是Tensor,当图形运行时,可以保持n维数组;图中的边表示在运行图以实际执行有用的计算时将在张量上运行的函数。

在Tensorflow 2.0之前,我们必须将图表分为两个阶段:
一个构建描述您要执行的计算的计算图产品这个阶段实际上不执行任何计算;它只是建立了计算的符号表示该阶段通常将定义一个或多个表示计算图输入的“占位符”(占位符)对象。
多次运行计算图。每次运行图形时(例如,对于一个渐变下降步骤),您将指定要计算的图形的一部分,并传递一个“ feed_dict”字典,该字典将以特定比例绘制的任何“占位符”。

Tensorflow 2.0中的新范例

现在,使用Tensorflow 2.0,我们可以简单地采用一种功能性形式,该形式更像Python,并且在精神上与PyTorch和Direct Numpy操作类似。代替带有计算图的两步范式,这使得调试TF代码(除其他外)更加容易。您可以在https://www.tensorflow.org/guide/eager上阅读更多详细信息。

三、模型结构

简单来说,Tensorflow1.x 与 Tensorflow2.0的主要区别在于tf1.x使用静态图而tf2.x使用Eager Mode动态图。下图是Tensorflow2.0的架构图,使用keras API作为构建神经网络的工具。


tensorflow 二分类实例 tensorflow1和2_Tensorflow


tensorflow 二分类实例 tensorflow1和2_tensorflow 二分类实例_02