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