1. 程式人生 > >tensorflow基礎知識(四) Sesstion會話

tensorflow基礎知識(四) Sesstion會話

在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()