tensorflow基礎知識(四) Sesstion會話
阿新 • • 發佈:2018-11-26
在tensorflowbian程式設計思想中,我們說到每個計算圖都必須要在一個會話Session中執行。本節主要講會話的作用以及怎麼使用會話。
1. 會話(Session)的作用
會話(Session)可以管理*TensorFlow執行時的所有資源。 計算圖都是在Sesstion中執行的,因此會話中擁有很多資源,並且Sesstion可以對這些資源進行管理。例如,當所有計算完成後,可以使用Session.close()釋放會話資源*,這樣的資源管理可以避免資源浪費。
2. 會話的生成方式
主要有:
- 函式生成法
tf.sesstion()
- 上下文管理器
with tf.sesstion() as sess
- 預設會話
with sess.as_default()
- 互動式會話
tf.InteractiveSession()
2.1 使用 tf.sesstion() 函式生成法
#建立一個會話
sess = tf.Session()
#使用這個會話可以得到張量的結果,例如sess.run(result)
sess.run(op)
#關閉會話
sess.close()
注:
最後需要加上
來關閉會話
sess.close()
2.2 使用 上下問管理器
#建立一個會話,通過上下文管理器管理會話
with tf.Session() as sess:
sess.run(op)
2.3 使用 預設會話
在前面計算圖我們知道,可以指定某個計算圖為預設圖,同樣的,我們用函式tf.session()
生成的sess,可以使用sess.as_default()
方法手動指定預設會話。
a = tf.constant([1.0])
b = tf.constant([2.0])
output = a + b
sess = tf.Session()
with sess.as_default():
print(result.eval()) #計算張量的結果
2.4 使用互動式會話
互動式環境下,比如iPython,直接使用tf.InteractiveSession()
構造預設會話.那麼Tensor.eval() 和 Operation.run() 方法會使用這個預設會話去執行操作。
sess=tf.InteractiveSession()
a=tf.constant(5)
b=tf.Variable(3)
init_op = tf.global_variables_initializer() #變數同樣需要先初始化
c=tf.multiply(a,b)
sess.run(init_op)
print (sess.run(c))
3. tf.InteractiveSession()與tf.Session()的區別
tf.InteractiveSession()實際上構建了一個預設會話,且 Tensor.eval() 和 Operation.run() 方法會使用這個預設會話去執行操作 run ops.
tf.Session()需要在啟動session之前先構建整個計算圖,然後啟動該計算圖。
tf.InteractiveSession()可以先構建一個session然後再定義操作(operation),主要最後要
sess.close()