tf.Session():創(chuàng)建一個(gè)會(huì)話
tf.Session().as_default():創(chuàng)建一個(gè)默認(rèn)會(huì)話
那么問題來(lái)了,會(huì)話和默認(rèn)會(huì)話有什么區(qū)別呢?TensorFlow會(huì)自動(dòng)生成一個(gè)默認(rèn)的計(jì)算圖楣铁,如果沒有特殊指定魄衅,運(yùn)算會(huì)自動(dòng)加入這個(gè)計(jì)算圖中悯周。TensorFlow中的會(huì)話也有類似的機(jī)制搔确,但是TensorFlow不會(huì)自動(dòng)生成默認(rèn)的會(huì)話,而是需要手動(dòng)指定娃惯。
tf.Session()創(chuàng)建一個(gè)會(huì)話跷乐,當(dāng)上下文管理器退出時(shí)會(huì)話關(guān)閉和資源釋放自動(dòng)完成。
tf.Session().as_default()創(chuàng)建一個(gè)默認(rèn)會(huì)話趾浅,當(dāng)上下文管理器退出時(shí)會(huì)話沒有關(guān)閉愕提,還可以通過(guò)調(diào)用會(huì)話進(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的值時(shí)報(bào)錯(cuò)潮孽,報(bào)錯(cuò)為嘗試使用一個(gè)已經(jīng)關(guān)閉的會(huì)話揪荣。
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
對(duì)于run()方法也是一樣,如果想讓默認(rèn)會(huì)話在退出上下文管理器時(shí)關(guān)閉會(huì)話往史,可以調(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.