1. 程式人生 > >Tensorflow執行模型-----會話

Tensorflow執行模型-----會話

Tensorflow中的會話是來執行定義好的運算的。會話擁有並管理Tensorflow程式執行時的所有資源。當計算完成之後需要關閉會話來幫助系統回收資源,否則可能出現資源洩露的問題。 會話模式一般有兩種:

1、需要明確呼叫會話生成函式和會話關閉函式

#建立一個會話
sess = tf.Session()
#用建立好的會話得到運算結果
sess.run(...)
#關閉會話
sess.close()

2、通過Python的上下文管理器來使用會話

with tf.Session() as sess:
    sess.run(...)

 Tensorflow不會自動生成預設會話,需要手動指定。當預設會話被指定之後可以通過tf.tensorflow.eval函式來計算一個張量的取值。

a = tf.constant([1.0, 2.0], name='a')
b = tf.constant([2.0, 3.0], name='b')
result = a + b
sess = tf.Session()
with sess.as_default():
    print(result.eval())

下面的程式碼也能完成相同功能

sess = tf.Session()
#print(sess.run(result))   同下句功能相同
print(result.eval(session=sess))
sess.close()

Tensorflow還提供了一種在互動環境下直接構建預設會話的函式tf.InteractiveSession.使用這個函式自動將生成的會話註冊為預設會話。

#自動將生成的會話註冊為預設會話
weigth = tf.Variable(tf.random_normal([2, 3], stddev=2, seed=1))
sess = tf.InteractiveSession()
sess.run(weigth.initializer)
print(weigth.eval())
sess.close()

或者:

weights = tf.Variable(tf.random_normal([2, 3], stddev=2, seed=1))
sess = tf.Session()
with sess.as_default():
    sess.run(weights.initializer)
    print(weights.eval())

其中tf.random_normal()函式用於從服從指定正太分佈的數值中取出指定個數的值。

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

引數代表的意義(形狀,均值,標準差,輸出型別,隨機數種子,操作名稱)其中 隨機數種子,是一個整數,當設定之後,每次生成的隨機數都一樣。