tensorflow教學(1) — 建置一個基礎神經網路

本文參考莫凡youtube 教學:

 

本文摘要自 網路上youtube 莫凡教學

其實我覺得莫凡講得很好 很適合初學者

有時間的話可以把他一系列的影片都看過一遍

本教學 教你 如何建置一個最基礎的神經網路

用建置的神經網路

學習一個簡單方程式  y=0.1x+0.3

這裡我們要學習的就是 W(weight)=0.1    b(biase)=0.3

如果我們每次輸入網路的 X 例如:打入10

都可以變成 10*0.1 +0.3 =1.3 的話

那麼我們就會說 這個網路已經學習完成了

 

下圖即為我們要學習的網路

輸入一個神經元

輸出一個神經元

 

 

 

但這後來被證明 連一個簡單的Xor 函數都學不起來

因此進入類神經的寒冬

後人們發現中間加一層隱藏層即可解決此問題

因此類神經又興盛起來

但研究人員發現他的效果還是有限

尤其要訓練大網路的時候

會遇到Error 往前傳越小的問題

具體說明可以看這個:https://www.youtube.com/watch?v=YoiUlN_77LU

深度學習解決了這個問題

因此類神經又再度興起了!!!

 

 

這是小編覺得講得很好的一個網站

http://neuralnetworksanddeeplearning.com/chap4.html

他用可視化證明了 一個類神經網路 只要給他足夠的神經元

就可以模擬任何非線性函數

讀者有時間也可以看看其他章節

講的也很棒

 

下面是簡單的小例子 模擬類神經網路學習的情形~

總共更新201次weights

並且每訓練20次印出一次

 

小編把每一行代碼都清清楚楚的加上註解了

希望各位可以經由這小小的範例

慢慢進入這 Tensorflow 神聖之殿中

 

如果有任何不懂得可以在下面留言問小編喔~~

祝大家學習愉快~~

 

程式碼:

 

程式輸出:

(0, array([ 0.30737674], dtype=float32), array([ 0.25841016], dtype=float32))
(20, array([ 0.13939281], dtype=float32), array([ 0.27776307], dtype=float32))
(40, array([ 0.10886393], dtype=float32), array([ 0.29499638], dtype=float32))
(60, array([ 0.10199451], dtype=float32), array([ 0.29887414], dtype=float32))
(80, array([ 0.10044879], dtype=float32), array([ 0.29974666], dtype=float32))
(100, array([ 0.10010101], dtype=float32), array([ 0.299943], dtype=float32))
(120, array([ 0.10002275], dtype=float32), array([ 0.29998717], dtype=float32))
(140, array([ 0.10000515], dtype=float32), array([ 0.29999712], dtype=float32))
(160, array([ 0.10000117], dtype=float32), array([ 0.29999936], dtype=float32))
(180, array([ 0.10000026], dtype=float32), array([ 0.29999986], dtype=float32))
(200, array([ 0.10000011], dtype=float32), array([ 0.29999995], dtype=float32))

0 0 votes
Article Rating
Subscribe
Notify of
guest

9 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
訪客
訪客
7 years ago

#訂出要學習的函數 這裡要學的是 weight:0.3 biases:0.3
y_data = x_data*0.1+0.3
請問一下註解中的weight是0.1嗎?
版主回覆:(01/13/2017 05:50:20 PM)
抱歉! 這個是筆誤 已經改過來了
謝謝 ^.^

路人
路人
7 years ago

成功了!感謝大大
寫得很不錯 ^^
版主回覆:(03/21/2017 02:09:45 PM)
謝謝~

新手
新手
7 years ago

謝謝你的分享,正常執行
版主回覆:(03/24/2017 11:51:00 AM)
不客氣喔~~^.^

Ian
Ian
6 years ago

Thanks for sharing , it’s helpful for me
版主回覆:(08/22/2017 07:25:26 PM)
Always glad to help XD

訪客
訪客
6 years ago

請問定了 x_data為一個長度100的array
是在每一次sess.run(train) 對這x_data做的事情是什麼?
那這樣跟x_data的維度設為2有什麼差別嗎
版主回覆:(12/19/2017 04:41:49 PM)
那是亂數產生100筆data的意思
這X就是input
如果改成1000就是產生出1000筆資料喔~~

訪客
訪客
6 years ago

您好,
想請問loss那樣子定義的原因?
其中tf.reduce_mean與tf.square扮演的角色是?
版主回覆:(01/08/2018 10:14:45 AM)
這個loss 是機器學習中很有名的L2 loss
相關的Loss 還有L1 loss, entropy 之類的
上網搜尋一下就有很多資料囉~~~

訪客
訪客
6 years ago

請問我的 x_data = np.random.rand(100).astypeno.float32) 這行顯示 語法錯誤 原因是什麼呢? 我是使用python 3.5.1

訪客
訪客
6 years ago

上面原因是我多了一個空格 以解決

吳峻傑
吳峻傑
5 years ago

請問要怎麼在python shell裡執行這個py檔
這個困擾我好久了
版主回覆:(11/09/2018 09:44:30 AM)
在命令提示列裡打入
python 檔名.py
即可執行