tensorflow入門筆記2:計(jì)算圖、張量、會話(session)

1.計(jì)算圖

  • 用戶不定義計(jì)算圖時(shí),系統(tǒng)會自動維護(hù)一個(gè)默認(rèn)的計(jì)算圖,tensorflow 會自動將定義的所有計(jì)算添加到默認(rèn)的計(jì)算圖
tf.get_default_graph() # 獲取當(dāng)前的默認(rèn)圖
  • 用戶自己創(chuàng)建計(jì)算圖,用with創(chuàng)建圖指定為默認(rèn)計(jì)算圖后,下面的運(yùn)算都在這個(gè)計(jì)算圖內(nèi),變量為該計(jì)算圖獨(dú)有,不與其他計(jì)算圖共享
g1 = tf.Graph()
with g1.as_default() :
  a=tf.get_variable("a",[2],initializer=tf.ones_initializer())
  b=tf.get_variable("b",[2],initializer=tf.zeros_initializer())
  • 獲取某個(gè)變量的計(jì)算圖,如變量a
a.graph()

2.張量

  • 張量只是引用了程序中的運(yùn)算結(jié)果而不是一個(gè)真正的數(shù)組,張量保存的是運(yùn)算結(jié)果的屬性,而不是真正的數(shù)字
import tensorflow as tf 
a=tf.constant([1.0,2.0],name ="a") 
b=tf.constant([3.0,4.0],name ="b") 
result=a+b 
print(result) 
#輸出 Tensor ("add:0",shape=(2,), dtype=float32)

add:0:由加法得來的第一個(gè)輸出
shape=(2,):形狀為2的數(shù)組,只有一個(gè)維度,注意不是2*1,
dtype=float32:元素類型為float32

要想獲得result的真值需定義會話sess進(jìn)行真正的運(yùn)算
使用sess.run(result)
result.eval(session=sess)
sess為默認(rèn)會話時(shí)result.eval()

3.會話(Session)

  • 定義會話
# 接上
with tf.Session() as sess :
  tf.initialize_all_variables() 
  print(sess.run(result))

#輸出[ 4. 6.]
  • 指定sess為默認(rèn)會話
sess = tf.Session()
with sess.as default():
  <with-block>

在定義計(jì)算時(shí)tensorflow會自動生成一個(gè)默認(rèn)的計(jì)算圖,如果沒有特殊指定,定義的運(yùn)算會自動加入這個(gè)計(jì)算圖中。通過手動指定,會話也可以成為默認(rèn)的(tensorflow不會自動生成默認(rèn)的會話)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容