Tensorflow官網:https://www.tensorflow.org/
tensorflow基本概念
- Scalar(標量)表示值(單一數字)
- vector(向量)表示位置(1維數組)
- Tensor(張量)表示空間(多維數組)
5個重要的類(Class)
Variable
,tf.Variable
Tensor
,tf.Tensor
Session
,tf.Session
Graph
,tf.Graph
Operation
,tf.Operation常用函數
tf.Variable
傳回一個Variable實例。
tf.constant
傳回一個constant的Tensor實例。
tf.placeholder
一個尚未存在(佔位)的Tensor實例。
Graph
TensorFlow的運算,被表示為一個data flow Graph ,data flow Graph 中的節點(Nodes)被用來表示數學運算,而邊(Edges)則用來表示在節點之間的相互聯繫,是一種對數學運算過程的可視化方法。
Session
而Session就是負責讓這個圖運算起來,Session持有並管理TensorFlow程序運行時的所有資源。
Variable、Tensor
在運行Variable之前,需要初始化Variable。在定義Variable時提供初始值,但必須調用其 初始化函數才能在Session 中實際分配此值,然後使用Variable。
因為Tensor、Variable都是class無法直接像Python變量那樣操作更新賦值的,運算都是在Session中運行的,而賦值需要使用tf.assign函數,tf.assign函數只能對Variable賦值,tf.assign更新後的值不能改變原本Variable的shape跟dtype。
Variable是會顯示分配內存空間(既可以是內存,也可以是顯存),由Session管理,可以進行存儲、讀取、更改(tf.assign)等操作。Tensor,是記錄在Graph中,所以沒有單獨的內存空間;而由Variable、Tensor運算得來的值則是只會在程序運行中間出現,除非你將它賦值給python變量或賦值給Variable然後保存模型,通常Variable使用於weight、bias等需要更新的參數。
基本操作
tf.Variable
tf.constant
tf.placeholder
tf.initializers.variables
tf.global_variables
tf.Session
tf.math.add
tf.assign
線性回歸
當tensorflow溢位時會得到nan導致訓練失敗,所以使用sklearn將data先進行zero mean normalization。
tf.train.GradientDescentOptimizer
sklearn.preprocessing
deep非線性回歸
這邊建立了4層的neural network,輸入(輸出)層1個NN,中間層12個NN,這邊可以看出當DNN越複雜可以擬合越複雜的函數(當然也越容易過擬合overfitting),訓練時間也越長。
尋找model最小值(或最大值)
找最大值將model乘上一個負號即可,此篇模型接續上一段deep非線性回歸,因為這是一個非凸函數,所以選取一個範圍隨機取feature,把最低點記錄下來。
deep分類
Gist:
https://gist.github.com/jounjieli/95818266b18ecfa46dddb9ece0c068e3
CNN
Gist:
https://gist.github.com/jounjieli/7d31a6ddd50a1a03605534326e294e86
tensorboard
-
架構摘要
呼叫指令:路徑輸入FileWriter指定的路徑。
tf.summary.FileWriter
以CNN代碼為例我們呼叫tensorboard 可以得到此架構圖。
數據摘要
可以參考此篇:
https://ithelp.ithome.com.tw/articles/10187814