Tensorflow入門:數據結構和編程思想

Tensorflow入門:數據結構和編程思想

引言:
最近tensorflow很火,看到國內都有不少人開始玩起來了,自己最近有些想法想玩玩,於是開始入門搞一下,因爲自己只有一個臺式電腦,於是就裝了個cpu版的tensorflow,安裝過程挺順利,一兩句命令搞定,最後遇到過glibc的版本問題,直接升級了Ubuntu版本就好了。
於是,開始入門了。下面是我學習的筆記,水平有限,如有不對,敬請指教。

在tensorflow框架下,定義了tensor這麼一個數據結構,她是可以任意n維空間的數據表達,這個n稱之爲tensor的階,0階的就是一個數,1階的就是一個向量,2階就是一個矩陣,3階就是一個立方體,等等。
這裏寫圖片描述
當然,tensor中裏面的數據類型可以指定,比如float32,int32等。

Tensorflow的編程思想主要是如下幾點:
這裏寫圖片描述
綜合來說,就是用tensor定義了一堆數據,裏面可以有常量也可以有變量,然後用一個個operation表示計算步驟,這些operation節點連起來構成了一個graph表示計算任務。graph可以有多個,但對於大部分程序一個graph就夠了,作爲初學者,可以忽略多graph的情況,tensorflow會提供一個默認的graph。graph定義好,計算並不會馬上執行,需要通過session來啓動graph的執行。Session中的每一次計算operation,都可以通過fetch的方式把對應的tensor返回作爲計算結果。而傳給計算operation的參數,可以直接用變量或者常量的名字,也可以通過feed的形式傳參。

實例1:
下面是兩個向量點乘的實例,展示了基本的operation和graph定義,以及session啓動。
這裏寫圖片描述
執行結果:
這裏寫圖片描述

實例2:
下面是用變量表示graph計算的狀態信息的實例,值得關注的是,operation之間的依賴關係。
這裏寫圖片描述

這裏寫圖片描述
從代碼中可以看到,我們只是顯示執行了update這個operation,但是沒有顯示執行new_value這個operation,不過通過執行結果可以判斷,new_value這個operation的確是觸發執行了,也許是state每次變化時檢查到依賴立刻觸發new_value這個operation的執行,也許是要執行update這個operation時發現有個依賴的new_value這個operation需要觸發。按照目前的理解,更加傾向於後者,有點類似編程中的閉包的概念。

實例3:
下面是一個通過fetch機制,把tensor作爲結果返回的實例
這裏寫圖片描述

這裏寫圖片描述

實例4:
下面是一個通過feed機制把參數傳進計算operation的實例
這裏寫圖片描述

這裏寫圖片描述

實例5:
線性迴歸經典實例
這裏寫圖片描述
值得注意的是,在tensorflow裏面實現線性迴歸,只需要把預測模型和損失函數定義好基本就可以了,裏面有梯度下降優化器幫你求解,不必自己再寫。
這裏寫圖片描述

參考資料:
張量的階、形狀、數據類型
http://wiki.jikexueyuan.com/project/tensorflow-zh/resources/dims_types.html

Tensorflow基本使用
http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html

Tensorflow簡介
http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/introduction.html

Tensorflow變量:創建、初始化、保存和加載
http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/variables.html

linear_regression
https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/2_BasicModels/linear_regression.py

入門級解讀:小白也能看懂的TensorFlow介紹
http://it.sohu.com/20170221/n481292094.shtml

TensorFlow入門一
http://hacker.duanshishi.com/?p=1639

本文作者:linger
本文鏈接:http://blog.csdn.net/lingerlanlan/article/details/61616906

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章