小編接續莫煩的教程 繼續教大家 建置一個有隱藏層的神經網路
完整代碼在這裡
對於tensorflow 完整架構基本上就是如下
模型定義(modeling):抽象化
1.模型建構
2.輸入 輸出項的定義:placeholder
3.定義loss 函數
4.選擇最佳化函數
執行階段(run sess)
用迴圈一次一次的run
訓練時用feed_dict 餵入資料
上圖即為我們所組裝的神經網路
在第1層中 我們放置了輸入為1顆神經元 輸出為10顆神經元的網路
2 我們接續了上一層10顆神經元的輸入 輸出為1顆神經元
這裡可以舉個例子讓大家了解
第1層我們會創造出 weights:(1,10) bias:(1,10) 的矩陣
假設我們的inputs是 (300,1) 的矩陣
那麼 Wx_plus_b = tf.matmul(inputs, Weights) + biases
h1~h10(300組*10個神經元) = inputs(300,1)*weights(1*10)
每個神經元之後再加上一個biase 即可形成
Wx_plus_b(300組*10個神經元) = tf.matmul(inputs, Weights) + biases(1,10)
這裡 Wx_plus_b 分表代表h1~h10的輸出
下一層以此類推 就能輸出 y:(300,1)
這裡有tensorflow 官網的示意圖 大家可以參考看看
我們即將用這網路學習二次曲線方程式 y=x(平方)-0.5
下面是我本人整理過對代碼的說明
下面是結果圖 如果順利的話 應該可以看到神經網路學習的過程
藍色的點代表我們創造出的數據
紅色的線 代表神經網路再學的
神經網路會利用倒傳遞法 儘量的讓loss 愈小愈好
您好,
想請問一下您是否試著用過多層以及多input?
我用多層之後反而沒辦法得到正確demo data
另外如果要用多input的作法
版主回覆:(01/07/2017 06:42:02 PM)
恩 這個只是教學
一直以來就是用多層的model
以及多組input
我們稱作batch learning的模式下去跑的
請問有什麼問題嗎?
你的文章很好!
我自行測試時,簡單地把
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
prediction = add_layer(l1, 10, 1, activation_function=None)
改為
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
l2 = add_layer(l1,10,20,activation_function=tf.nn.relu)
prediction = add_layer(l2 20, 1, activation_function=None)
那麼 for i in range(30000): 是不是也要加大range 的數目?
版主回覆:(07/23/2017 10:54:44 PM)
我個人覺得應該是不用
畢竟這只是一個很小的網路
你可以跑圖看看並更改數據
看看前後的變化應該就知道了
我發覺如果
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu) 改為
l1 = add_layer(xs, 1, 100, activation_function=tf.nn.relu)
那個plt 的line 會變為一條直線,請問原因是什麼?
版主回覆:(08/19/2017 11:51:17 PM)
因為比例尺的關係阿
你注意看改成100的ymax
和10的ymax
是不是不一樣?
請問,若紅線畫不出是因為?
紅線畫不出是因為?
版主回覆:(02/13/2018 05:36:10 PM)
你這樣問 我也不知道你程式出了什麼問題
你是圖都跑得出來 只有紅線沒出現嗎?
只有出現藍色的點,沒有紅線;我是使用 matplotlib (2.1.2), Python 3.6.3版,tensorflow (1.4.0) ,謝謝您的回覆!
版主回覆:(02/15/2018 01:26:23 AM)
lines = ax.plot(x_data, prediction_value, ‘r-‘, lw=5)
我只能跟你說 畫紅線的是上面這行指令
你可以另外開一個檔案單獨測試matplotlib的功能
或是深入去看看 x 和 data 的資料有沒有對
改為
lines = plt.plot(x_data, prediction_value, ‘r-‘, lw=5)
可單獨畫出紅線
改為
plt.plot(x_data, y_data, ‘bo’)
lines = plt.plot(x_data, prediction_value, ‘r-‘, lw=5)
可以同時劃出藍點和紅線!