2018年1月18日 星期四

Note for TensorFlow (Getting Started)

TensorFlow是Google發展的開放原始碼機器學習函式庫,能以流程圖的概念呈現資料的流動,是現在很熱門的機器學習開發工具。上網看了些文章後,今天開始來試試這個函式庫。

本篇主要根據官網tensorflow.org演練,而官網建議要看得懂基本的手冊(guide),需要:
1. 知道Python語言
2. 至少要知道一點array
3. 理想中要知道一點機器學習,但是如果你知道很少或是根本不懂,本手冊仍是第一個你應該讀的文件。(這點好像講了跟沒講一樣)

TensorFlow提供了不同的應用程式介面(Application Programming Interface, API)。最底層TensorFlow Core提供完全的程式控制,較高層的API典型上比較好學,例如tf.estimator可以管理資料、估計量(estimator)、訓練及介面。

我的工作環境是Anaconda的Jupyter NoteBook,當然要另外安裝tensorflow,安裝方法網路上資料應該不難找,就不多說囉。我的版本是1.4.0。

先來理解何謂Tensor(張量),在"張量流動"資料庫中,顧名思義"張量"是最基本的資料型態,它可以為零維的純量,一維的向量,二維的矩陣等等。例如下面是numpy建構的一維tensor:
 順便看一下幾個常用的屬性:
.ndim   (維度)
.shape  (array的形狀)
.dtype  (資料的型態)

張量流動資料庫的程序可以分成兩大部分,一為建立(Building)計算圖(computational graph),二為執行(Running)計算圖。首先是建立計算圖,計算圖中有許多節點(node),每個節點可以輸入零至多個tensor,輸出一個tensor,例如最簡單的j為constant,不接受輸入,自然輸出它所儲存的值,如下列兩個浮點node (node_1, node_2):
tf,constant()建立node,其中dtype定為32bit,可看到跟上述的64bit不同,這是因為通常資料很多,為省記憶體就先設為32 bit,當然如果空間很夠,64 bit當然也可。若都不設定,則仍預設為32 bit。定義完就print看看。結果出來的是:Tensor("const_2:0",.......),我咧怎麼回事?跟想像中不一樣。這是因為上述第二步驟(執行(Running)計算圖)還沒完成!
所以我們輸入以下指令:
目標終於達成!!
所謂的Session,是"張量流動"打包整個完全的資料與控制流程,所以必須run session才可得到最後的結果。

Tensorflow手冊上建議的寫法則是:

到這邊終於算是完成最簡單的Tesorflow程式了。

參考資料
Getting Started with TensorFlow

沒有留言:

張貼留言