tf.Session()和tf.Session().as_default()的區(qū)別

tf.Session():創(chuàng)建一個會話

tf.Session().as_default():創(chuàng)建一個默認(rèn)會話

   那么問題來了,會話和默認(rèn)會話有什么區(qū)別呢?TensorFlow會自動生成一個默認(rèn)的計(jì)算圖,如果沒有特殊指定,運(yùn)算會自動加入這個計(jì)算圖中。TensorFlow中的會話也有類似的機(jī)制,但是TensorFlow不會自動生成默認(rèn)的會話,而是需要手動指定。

   tf.Session()創(chuàng)建一個會話,當(dāng)上下文管理器退出時會話關(guān)閉和資源釋放自動完成。

   tf.Session().as_default()創(chuàng)建一個默認(rèn)會話,當(dāng)上下文管理器退出時會話沒有關(guān)閉,還可以通過調(diào)用會話進(jìn)行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))
運(yùn)行結(jié)果如下:
1.0
RuntimeError: Attempted to use a closed Session.

在打印張量b的值時報(bào)錯,報(bào)錯為嘗試使用一個已經(jīng)關(guān)閉的會話。

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))
運(yùn)行結(jié)果如下:
1.0
2.0

對于run()方法也是一樣,如果想讓默認(rèn)會話在退出上下文管理器時關(guān)閉會話,可以調(diào)用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))
運(yùn)行結(jié)果如下:
1.0
RuntimeError: Attempted to use a closed Session.

原文地址:http://www.itdecent.cn/p/b7cb36c9b906

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容