用tensorflow這樣工具的原因是:它允許我們用計算圖(computational graphs)的方式建立網路.
下面就是對計算圖的直觀講解。
例如:計算圖所建立的只是乙個網路框架。在程式設計時,並不會有任何實際值出現在框架中。所有權重和偏移都是框架中的一部分,初始時至少給定初始值才能形成框架。因此需要initialization初始化。
請模擬管道構建來理解計算圖的用法
構造階段(construction phase):
組裝計算圖(管道)
計算圖(graph):
要組裝的結構。由許多操作組成。
操作(ops):
接受(流入)零個或多個輸入(液體),返回(流出)零個或多個輸出。
資料型別:
主要分為張量(tensor)、變數(variable)和常量(constant)
張量:多維array或list(管道中的液體)
tensor_name=tf.placeholder(type, shape, name)
引數說明:
dtype: 資料型別
shape: 張量
name: 名稱(可選引數)
例如:
x = tf.placeholder(float, shape=(1024, 1024))
變數:
在同一時刻對圖中所有其他操作都保持靜態的資料(管道中的閥門)
####建立語句:
name_variable = tf.variable(value, name)
初始化語句:個別變數init_op=variable.initializer()
#所有變數
init_op=tf.initialize_all_variables()
更新語句:update_op=tf.assign(variable to be updated, new_value)
常量:
無需初始化的變數
建立語句:
name_constant=tf.constant(value)
執行階段(execution phase):
使用計算圖(獲取液體)
會話:執行(launch)構建的計算圖。可選擇執行裝置:單個電腦的cpu、gpu,或電腦分布式甚至手機。
建立語句:常規
sess = tf.session()
#互動
sess = tf.interactivesession()
互動方式可用tensor.eval()獲取值,ops.run()執行操作
關閉
sess.close()
執行操作:使用建立的會話執行操作
執行語句:
sess.run(op)
送值(feed):輸入操作的輸入值(輸入液體)
語句:
sess.run([output], feed_dict=)
取值(fetch):獲取操作的輸出值(得到液體)
語句:單值獲取
sess.run(one op)
多值獲取sess.run([a list of ops])
深度學習筆記
在深度神經網路中,通常使用一種叫修正線性單元 rectified linear unit,relu 作為神經元的啟用函式。relu函式其實是分段線性函式,把所有的負值都變為0,而正值不變,這種操作被成為單側抑制。可別小看這個簡單的操作,正因為有了這單側抑制,才使得神經網路中的神經元也具有了稀疏啟用性...
深度學習筆記
如果沒有啟用函式,或則是線性啟用函式,g z z,那麼在深度神經網路中,相當於都做的是線性變換,多個線性變換的組合還是線性變換。這樣的結果和邏輯回歸沒什麼區別,也就是說,這種情況下,無論神經網路的深度有多深,也就等價於乙個一層的網路,隱藏層沒什麼作用。因此需要非線性啟用函式。1.什麼時候插入,ski...
深度學習筆記
tensorflow 不僅是乙個實現機器學習演算法的介面,也是一種框架,也可用於線性回歸 邏輯回歸 隨機森林等演算法 tensorflow 使用資料流圖來規劃計算流程,每個運算操作作為乙個節點 node,節點之間的連線稱為邊,邊中流動的資料稱為張量,故而得名 tensorflow,預算操作可以有自己...