本文是在閱讀官方文檔后的一些個人理解。
官方文檔地址:https://www.tensorflow.org/versions/r0.12/get_started/basic_usage.html#basic-usage
關於tensor和op的理解
Nodes in the graph are called ops (short for operations).
An op takes zero or more Tensors, performs some computation, and produces zero or more Tensors.
類比:一個神經元有多個輸入,一個或者多個輸出。這里的OP可以看作神經元,tensor可以看作輸入的數據。
In TensorFlow terminology, a Tensor is a typed multi-dimensional array.
For example, you can represent a mini-batch of images as a 4-D array of floating point numbers with dimensions [batch, height, width,channels].
tensor是一個數組,每個數組元素是多維的,其實就是一個矩陣。
TensorFlow程序的階段
TensorFlow程序通常被組織成一個構建階段和一個執行階段。在構建階段,op 的執行步驟被描述成一個圖。在執行階段,使用會話執行執行圖中的op。
階段一:如何構建圖?
1.構建圖從創建op開始。有些op的創建是不需要input的,比如Constant。這樣的op被成為源op(source op)。
2.在python中op對象是由op構造器(ops constructors)創建的。op構造器創建一個op對象時可以傳遞一個源op作為待構造op對象的輸入。
3.op對象被op構造器創建后是作為一個node加入到graph中的。TensorFlow Python 庫有一個默認圖 (default graph), op 構造器可以為其增加節點。這個默認圖對許多程序來說已經足夠用了。
總結:因為graph是由op對象組成的,所以構建圖的過程其實就是創建op對象的過程,以及如果將這些個op對象連接起來(比如某個op對象作為另外某個op對象的輸入)的過程。
階段二:圖構建好了,如何執行?
1.因為graph需要在session中啟動。所以為了啟動一個graph,第一步就是創建session對象。
2.sessoin對象創建的時候如果不制定graph,則使用默認圖(default graph)。
對Variable的理解
變量用於維護圖執行過程中的狀態信息。
通常會將一個統計模型中的參數表示為一組變量。 例如, 你可以將一個神經網絡的權重作為一個tensor存儲在某個變量中。在訓練過程中, 通過重復運行訓練圖,更新這個 tensor。
對feeds和fetches的理解
可以為任意的op賦值或者從其中獲取數據。
對於tensor、Constants、Variables三者的理解
tensor存儲在Constants或者Variables。就像數據可以放在常量和變量中一樣。放在變量中的數據是可以修改的,放在常量中的數據是不可以修改的。
常量op也算是op吧,只是比較簡單而已。
