【TensorFlow】会话session(三)

来源:互联网 发布:淘宝网大毛衣外套 编辑:程序博客网 时间:2024/05/16 05:00

会话拥有并管理TensorFlow程序运行的所有资源,当所有程序运行结束后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题。

第一种模式需要明确调用会话生产函数和关闭会话函数,代码流程如下:

#创建一个会话sess = tf.Session()#使用这个创建好的会话来得到关心的运算结果。比如可以调用sess.run(result)来的得到张量result的取值sess.run()#关闭会话使得Benin运行中使用到的资源可以释放sess.close()

当程序因为异常而退出,关闭会话的函数可能不会执行导致资源泄露,第二种方法就是通过python上下文管理器来使用会话。

#创建一个会话并通过python中的上下文管理器来管理这个会话with tf.Session() as sess:    #使用创建好的会话来计算关心的结果    sess.run()

tensorflow会生产默认的计算图,如果没有特殊指定,运算会自动加入这个计算图中。对于会话功能,也有类似的机制,但是不会生成默认的会话,需要手动指定。当默认的会话被指定之后就可以通过tf.Tensor.eval函数来计算一个张量的取值。

sess = tf.Session()with sess.as_default():    print(result.eval())#以下两个命令可以完成相同的功能print(sess.run(result))print(result.eval(session = sess))

在交互环境下,比如jupyternotebook和python脚本下,通过默认会话的方式来获取张量的取值更为方便。使用tf.InteractiveSession()可以自动生成注册为默认会话。

sess = tf.InteractiveSession()print(result.eval(sess))sess.close()

通过tf.InteractiveSession()函数可以省去将产生的会话注册为默认会话的过程。