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)的會話)