計算圖的構建
Tensorflow首先定義計算(計算圖),也就是變量相乘,相加,相加,相減(矩陣,向量,標量)
定義好計算后,Tensorflow會自動把計算規(guī)則變成計算圖.
不同計算圖的變量和運算不會共享
同一個Tensroflow程序中,計算圖可以有很多,不同計算圖中的變量和計算是獨立的,所以可以分開為多個硬件進行計算
計算圖中的節(jié)點就是分支,只要有輸入和輸出就是節(jié)點.
Tensorflow數(shù)據(jù)結構(張量)
張量是Tensorflow管理數(shù)據(jù)的形式.Tensorflow的所有數(shù)據(jù)都是通過張量的形式來表示的.
從功能角度來看:張量可以被簡單理解為n維數(shù)組
0維數(shù)組:標量
1維數(shù)組:向量
n維數(shù)組:矩陣(一個數(shù)組里面有n個數(shù)組元素)
張量在Tensorflow中與Java中的基本數(shù)據(jù)類型不一樣,不能直接打印出來,也就是不能通過print()得到結果,而是一個引用,類似與Java自定義的對象,打印出來得到對象的引用,必須去獲取張量對象的參數(shù)和方法.
一個張量主要有三個屬性:名字(name),維度(shape),類型(type)
張量的用途有兩種:
1.構造計算圖時,可以預設保存中間結果的引用
2.計算圖構造完成后,可以獲取任意節(jié)點的數(shù)據(jù)(通過session)來完成
Tesorflow執(zhí)行命令(運行對話)
session任務擁有并管理Tensorflow程序運行時的所有資源,當所有計算節(jié)點都完成后,關閉任務幫助系統(tǒng)回收資源,否則就可能出現(xiàn)資源泄漏的問題.
如果出現(xiàn)異常無法執(zhí)行下去,利用withtf.Session() as sess:上下文機制命令,可以防止異常退出然后沒有關閉上下文,沒有釋放資源,導致資源泄漏.
與java和python一樣,運行了如果不去提取變量(張量)本身代表的數(shù)據(jù),是不會顯示出來的,必須通過tf.Tensor.eval函數(shù)來提取張量的取值.
參考文獻:
1.鄭澤宇,顧思宇.2017.Tensorflow實戰(zhàn)google深度學習框架,電子工業(yè)出版社:283頁.
2.