计算图(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)