[转载] TensorFlow函数:tf.Session()和tf.Session().as_default()的区别

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

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

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

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

   tf.Session().as_default()创建一个默认会话,当上下文管理器退出时会话没有关闭,还可以通过调用会话进行run()和eval()操作,代码示例如下:
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))
运行结果如下:
1.0
RuntimeError: Attempted to use a closed Session.

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

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

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))
   运行结果如下:
1.0
2.0

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

代码示例如下:

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))
   运行结果如下:
1.0
RuntimeError: Attempted to use a closed Session.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称...
    今早上阅读 634评论 0 1
  • 一、TensorFlow基础 TensorFlow是Google开源的机器学习库,基于DistDelief进行研发...
    Johnny_Su阅读 877评论 0 0
  • 01 罗湘华 02 罗冬喜 03 罗艳风 04 罗小兰 05 罗玲 06 罗芳 07 罗丽 08 罗美风 09 罗...
    超能奶爸_罗永阅读 1,147评论 0 1
  • 看,飘曳的蒲公英! 仅仅是孤零零的一朵而已,时而坠落,时而飞起。有人感同它的独单;有人身受它的伟岸,但,放大孤独才...
    植尚淇阅读 443评论 3 5
  • 幸为人父,思绪飞篇;既谢命运,既谢上天; 娇然嫩然,可爱可怜;世多磨难,如何宠惯; 活之容易,成之艰难;思之辗转,...
    威霸天阅读 106评论 0 0