《Python深度学习实战:基于TensorFlow和Keras的聊天机器人》 —1.2 计算图与会话
1.2 计算图与会话
TensorFlow因其TensorFlow Core程序而受欢迎,TensorFlow Core有两个主要的作用:
在构建阶段建立计算图
在执行阶段运行计算图
我们来看一下TensorFlow是如何工作的:
其程序通常被结构化为构建阶段和执行阶段。
构建阶段搭建具有节点(操作)和边(张量)的图。
执行阶段使用会话来执行图中的操作。
最简单的操作是一个常数,它没有输入,只是传递输出给其他计算操作。
一个操作的例子就是乘法(或者是取两个矩阵作为输入并输出另一个矩阵的加法或减法操作)。
TensorFlow库具有一个默认图来给构建操作添加节点。
因此,TensorFlow程序的结构有如下两个阶段:
计算图是由一系列的TensorFlow操作排成的节点组成的。
我们来对比一下TensorFlow和Numpy。在Numpy中,如果你打算将两个矩阵相乘,需要生成两个矩阵并将它们相乘。但是在TensorFlow中,你建立一个图(默认图,除非你另外创建了一个图)。接下来,需要创建变量、占位符以及常量值,然后创建会话并初始化变量。最终,把数据赋给占位符以便调用其他操作。
实际上,为了计算节点,必须在一个会话里面运行计算图。
一个会话里囊括了TensorFlow运行时的控制和状态。
下面代码生成了一个会话(Session)对象:
sess = tf.Session()
这之后就可以用它的运行方法来充分运行计算图以计算节点1和节点2。
计算图定义了计算。它并不执行计算,也不保留任何值。它用来定义代码中提及的操作。同时,创建了一个默认的图。因此,你不必创建图,除非需要创建图用于多种目的。
会话允许你执行图或者只执行部分图。它为执行分配资源(在一个或多个CPU或者GPU上)。它还保留了中间结果和变量值。
在TensorFlow中创建的变量的值,只在一个会话内是有效的。如果你尝试在之后的第二个会话里访问其值,TensorFlow就会报错,因为变量不是在那里初始化的。
想运行任何操作,需要给图创建一个会话。会话会分配内存来存储当前变量值。
以下是演示代码:
- 点赞
- 收藏
- 关注作者
评论(0)