TensorFlow与自然语言处理应用
上QQ阅读APP看书,第一时间看更新

3.4 TensorFlow计算图

在执行TensorFlow程序时,我们需要构建一个计算图,然后按照计算图启动一个会话,在会话中完成变量赋值、计算等操作并得到最终结果。换句话说,TensorFlow的计算图可以划分为两部分:

  • 构造部分,包含计算流图,用于构建模型。
  • 执行部分,通过会话(Session)执行图中的计算,用于提供数据并获得结果。

对于计算图的构造部分而言,我们又可以分为两部分:

  • 创建源节点。
  • 源节点的输出传递给其他节点做运算操作。

这里,更吸引我们的是,TensorFlow会在C ++引擎上执行每一项运算操作,这意味着在Python中也不会执行任何乘法或加法,Python只是一个包装器。从根本上讲,TensorFlow C ++引擎包含以下两方面:

  • 卷积、最大池化、Sigmoid等操作的高效实现。
  • 转发模式操作的导数。

计算图基本上类似于数据流图。图3-2显示了一个简单计算的计算图,用于计算简单的等式,如z = d×c =(a + b)×c

图3-2 一个简单的执行图

在图3-2中,圆圈表示节点处的操作,矩形表示整个数据计算图。在TensorFlow的实施中,TensorFlow计算图包含以下内容:

  • 一组tf.Operation对象:用于表示要执行的计算单元。
  • tf.Tensor对象:用于表示控制操作之间数据流的数据单元。

使用TensorFlow还可以执行延迟操作。一旦在计算图的构建阶段编写了高度组合的表达式,我们仍然可以在会话的运行阶段去对它们求值。从技术上讲,TensorFlow会给出措施并以有效的方式按时执行。例如,使用GPU并行执行代码的独立部分,如图3-3所示。

图3-3 TensorFlow图中的边和节点将在CPU或GPU等设备上的会话下执行