会话拥有并管理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函数可以省去将产生的会话注册为默认回话的过程。