会话拥有并管理TensorFlow程序运行时的所有资源。当计算完成后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄漏的问题。
TensorFlow中使用的会话模式一般有梁总,第一种模式需要明确调用会话生成函数和关闭会话函数,代码流程如下:
#创建一个会话
sess = tf.Session()
#使用这个创建好的会话得到关心的运算的结果
sess.run(....)
#关闭会话使得本次运行中使用到的资源得以释放
sess.close()
上述方法计算完成时,需要明确调用Session.close函数来关闭会话并释放资源。但是,当程序因为异常退出时,关闭会话的函数可能不被执行从而导致内存泄漏。为了解决异常退出时资源释放的问题,TensorFlow可以通过Python的上下文管理器来使用会话。以下所示:
#创建一个会话,并通过Python中的上下文管理器来管理这个会话
with tf.Session() as sess:
sess.run(...)
#不需要盗用Session.close()函数来关闭会话
#当上下文退出时会话关闭资源释放自动完成