前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow函数:tf.Session()和tf.Session().as_default()的区别

TensorFlow函数:tf.Session()和tf.Session().as_default()的区别

作者头像
狼啸风云
修改2022-09-04 21:06:53
2.2K0
修改2022-09-04 21:06:53
举报

tf.Session():创建一个会话

代码语言:javascript
复制
   tf.Session().as_default():创建一个默认会话

   那么问题来了,会话和默认会话有什么区别呢?TensorFlow会自动生成一个默认的计算图,如果没有特殊指定,运算会自动加入这个计算图中。TensorFlow中的会话也有类似的机制,但是TensorFlow不会自动生成默认的会话,而是需要手动指定。

   tf.Session()创建一个会话,当上下文管理器退出时会话关闭和资源释放自动完成。

   tf.Session().as_default()创建一个默认会话,当上下文管理器退出时会话没有关闭,还可以通过调用会话进行run()和eval()操作,代码示例如下:
代码语言:javascript
复制
tf.Session()代码示例:
import tensorflow as tf
a = tf.constant(1.0)
b = tf.constant(2.0)
with tf.Session() as sess:
   print(a.eval())   
print(b.eval(session=sess))
代码语言:javascript
复制
运行结果如下:
1.0
RuntimeError: Attempted to use a closed Session.

在打印张量b的值时报错,报错为尝试使用一个已经关闭的会话。

tf.Session().as_default()代码示例:

代码语言:javascript
复制
import tensorflow as tf
a = tf.constant(1.0)
b = tf.constant(2.0)
with tf.Session().as_default() as sess:
   print(a.eval())   
print(b.eval(session=sess))
代码语言:javascript
复制
运行结果如下:

1.0
2.0

对于run()方法也是一样,如果想让默认会话在退出上下文管理器时关闭会话,可以调用sess.close()方法。

代码示例如下:

代码语言:javascript
复制
import tensorflow as tf
a = tf.constant(1.0)
b = tf.constant(2.0)
with tf.Session().as_default() as sess:
   print(a.eval())  
   sess.close()
print(b.eval(session=sess))
代码语言:javascript
复制
运行结果如下:
1.0
RuntimeError: Attempted to use a closed Session.

转载地址:https://www.jianshu.com/p/b7cb36c9b90

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档