Tensorflow執行模型-----會話
阿新 • • 發佈:2018-11-21
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)
引數代表的意義(形狀,均值,標準差,輸出型別,隨機數種子,操作名稱)其中 隨機數種子,是一個整數,當設定之後,每次生成的隨機數都一樣。