计算图(Graph)用来表示计算任务。


图中的节点称为op(operation)。


计算图必须在会话中启动,会话会把op分发到cpu或gpu等计算设备上进行执行,执行后会返回tensor。


tensorflow程序一般分为两个阶段,构建计算图阶段和执行计算图阶段。


构建计算图阶段

构建计算图的第一步一般是构建源op(source op),源op不需要任何输入,如常量。


源op的输出被传递给其他op做进一步运算。


先来一个简单的实例

import tensorflow as tf

# 创建一个constant op,表示1*2的常量矩阵
op1 = tf.constant([[1., 2.]])

# 创建另一个constant op,表示2*1的常量矩阵
op2 = tf.constant([[3.], [4.]])

# 创建一个matmul op,表示两个constant op的矩阵乘法结果
matmul_op = tf.matmul(op1, op2)


执行计算图阶段

# 启动默认图
sess = tf.Session()

# 执行默认图,并返回结果
result = sess.run(matmul_op)
# 返回的结果是
# array([[11.]], dtype=float32)

# 任务完成, 关闭会话
sess.close()

一般建议使用with模块自动完成关闭操作,关于with语句可以参考 python>with语句 博客。示例如下:

with tf.Session() as sess:
  result = sess.run(matmul_op)
  print(result)

完整示例

import tensorflow as tf

# 创建一个constant op,表示1*2的常量矩阵
op1 = tf.constant([[1., 2.]])

# 创建另一个constant op, 表示2*1的常量矩阵
op2 = tf.constant([[3.],[4.]])

# 创建一个matmul op,表示两个constant op的矩阵乘法结果
matmul_op= tf.matmul(op1, op2)

# 在会话中运行计算图
with tf.Session() as sess:
    result = sess.run(matmul_op)
    print(result)