tensorflow教學(2) — 建置一個有隱藏層的神經網路

小編接續莫煩的教程 繼續教大家 建置一個有隱藏層的神經網路

完整代碼在這裡

 

 

對於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 愈小愈好

 

0 0 votes
Article Rating
Subscribe
Notify of
guest

8 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
25
25
7 years ago

您好,
想請問一下您是否試著用過多層以及多input?
我用多層之後反而沒辦法得到正確demo data
另外如果要用多input的作法
版主回覆:(01/07/2017 06:42:02 PM)
恩 這個只是教學
一直以來就是用多層的model
以及多組input
我們稱作batch learning的模式下去跑的
請問有什麼問題嗎?

Tom
Tom
6 years ago

你的文章很好!
我自行測試時,簡單地把
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)
我個人覺得應該是不用
畢竟這只是一個很小的網路
你可以跑圖看看並更改數據
看看前後的變化應該就知道了

Tom
Tom
6 years ago

我發覺如果
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
是不是不一樣?

R
R
6 years ago

請問,若紅線畫不出是因為?

RichardChanag
RichardChanag
6 years ago

紅線畫不出是因為?
版主回覆:(02/13/2018 05:36:10 PM)
你這樣問 我也不知道你程式出了什麼問題
你是圖都跑得出來 只有紅線沒出現嗎?

RichardChanag
RichardChanag
6 years ago

只有出現藍色的點,沒有紅線;我是使用 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 的資料有沒有對

RichardChanag
RichardChanag
6 years ago

改為
lines = plt.plot(x_data, prediction_value, ‘r-‘, lw=5)
可單獨畫出紅線

RichardChanag
RichardChanag
6 years ago

改為
plt.plot(x_data, y_data, ‘bo’)
lines = plt.plot(x_data, prediction_value, ‘r-‘, lw=5)
可以同時劃出藍點和紅線!