会话拥有并管理tensorflow程序运行时的所有资源。当所有计算完成后需要关闭会话来帮助系统回收资源,否则可能会出现资源泄露的问题。
tenorflow中使用会话的模式一般有两种:
1. 需要明确调用会话生成函数和关闭会话函数:
tenorflow中使用会话的模式一般有两种:
1. 需要明确调用会话生成函数和关闭会话函数:
#创建一个会话
sess=tf.Session()
sess.run(...)
sess.close()
然而,当程序因为异常而退出时,关闭会话的函数可能就不会执行而导致资源泄露,可以使用python的上下文管理器来使用会话,如:
#创建一个会话,并通过python中的上下文管理器来管理这个会话
with tf.Session() as sess:
sess.run(...)
#此时不需要再调用“Session.close()”来关闭会话
#当上下文退出时会话关闭和资源释放也自动完成
2. 会话有和tensorflow中会生成默认计算图类似的机制,默认会话被指定时可以通过tf.Tensor.eval()来计算一个张量的取值:
sess=tf.Session()
with sess.as_default():
print(result.eval())
或者:
sess=tf.Session()
print(sess.run(result))
print(result.eval(session=sess))
在交互式环境下(如python脚本下),通过设置默认会话的方式来获取张量的取值会更加方便,所以tensorflow提供了一种直接构建默认会话的函数,即tf.InteractiveSession 。使用这个函数会自动将生成的会话注册为默认会话:
sess=tf.InteractiveSession
print(result.eval())
sess.close()
通过tf.InteractiveSession函数可以省去将产生的会话注册为默认回话的过程。