session在Tensorflow的作用类似于指针,要想运行某个节点,必须将session指到该节点。
- tf.Session()
用这种方法定义session,使用完毕后需要关闭session。
#创建session
sess = tf.Session()
#运行session
sess.run(...)
# 任务完成, 关闭会话.
sess.close()
- with tf.Session() as sess:
用这种方法定义的session不需要再次关闭,python中的with代码块可以自动完成关闭动作。 - tf.InteractivateSession():
交互式使用,“with tf.Session() as sess:”是先构建计算图,然后通过sess启动计算图。“tf.InteractivateSession():”可以在运行计算图的时候插入计算图,通过Tensor.eval()和Operation.run()计算
实例:实现两个矩阵相乘
import tensorflow as tf #导入模块
matrix1 = tf.constant([[3, 3]]) #定义两个矩阵
matrix2 = tf.constant([[2],
[2]])
product = tf.matmul(matrix1, matrix2) # matrix multiply,tf实现两个矩阵相乘; np.dot(m1, m2),np实现两个矩阵相乘
# method 1 明确的调用会话的生成函数和关闭会话函数
sess = tf.Session() #定义session
result = sess.run(product) #运行session,将session指向product,实现两矩阵相乘
print(result)
sess.close() #关闭session
# method 2 上下文管理机制自动释放所有资源
with tf.Session() as sess:
result2 = sess.run(product)
print(result2)