日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)

系統(tǒng) 1875 0


640?wx_fmt=jpeg


全文共 5234 字,預計學習時長 10 分鐘


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第1張圖片

圖片來源: unsplash.com/@alinnnaaaa


本文將介紹如何建立進階神經(jīng)網(wǎng)絡(luò)。


640?wx_fmt=jpeg

輸入數(shù)據(jù)


本教程唯一使用的數(shù)據(jù)庫為NumPy。


            


640?wx_fmt=jpeg

激活函數(shù)


在隱藏層中會使用tanh激活函數(shù),而在輸出層中則會使用sigmod函數(shù)。在兩種函數(shù)的圖中都很容易找到信息。下面直接執(zhí)行函數(shù)。


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第2張圖片


以上為Sigmoid函數(shù)。以下為該函數(shù)代碼:


            


640?wx_fmt=jpeg

設(shè)定參數(shù)

?

什么是參數(shù)和超參數(shù)?參數(shù)指權(quán)值和偏差。超參數(shù)會影響參數(shù),并設(shè)置在學習過程開始之前。準確無誤設(shè)置超參數(shù)并不容易,需要不斷調(diào)整數(shù)值。超參數(shù)包括學習率、迭代次數(shù)、校準率等。

?

想知道如何設(shè)置矩陣規(guī)模嗎?看看下面的答案吧!


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第3張圖片


這是什么意思呢?例如:


(第0層,即L=0),輸入層神經(jīng)元數(shù)量=3

(第1層,即L=1),隱藏層神經(jīng)元數(shù)量=5

(第2層,即L=2),輸出層神經(jīng)元數(shù)量=1


640?wx_fmt=jpeg


希望以上代碼都能奏效!現(xiàn)在設(shè)置參數(shù)。


            


定義變量W1、b1、W2和b2。變量初始值設(shè)為0也無妨。但初始化權(quán)值時要格外謹慎。初始值絕不能為0。為什么?若權(quán)值初始值為0,函數(shù)Z = Wx + b的值恒為0。多層神經(jīng)網(wǎng)絡(luò)中,每層的神經(jīng)元共同作用。所以應該如何設(shè)置初始權(quán)值呢?本文使用he初始化。


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第4張圖片

公式


            


除he初始化以外,也可以使用以下方法:


            


建議:在參數(shù)初始化中,請勿將權(quán)值設(shè)為0或大數(shù)值。


640?wx_fmt=jpeg

前向傳播


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第5張圖片

前向傳播


上圖清晰解釋了前向傳播。在Python中的應用為:


            


為什么要儲存 {‘Z1’: Z1, ‘Z2’: Z2, ‘A1’: A1, ‘y’: y}? 因為在反向傳播中會用到這些數(shù)值。


640?wx_fmt=jpeg

成本函數(shù)


剛才介紹了前向傳播,得到預測值(y)。這個值由成本函數(shù)計算得出。下圖可以說明:


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第6張圖片


640?wx_fmt=jpeg

更新參數(shù)


更新參數(shù)后找到可能最小化成本的最佳參數(shù),本文不會對此再做探討。但在上一段提到,如果數(shù)值在拋物線右側(cè),導數(shù)(斜率)為正,數(shù)值遞減,左移接近最小成本值;若數(shù)值在拋物線左側(cè),斜率為負,因此參數(shù)會增至預期的最小成本值。


以下為使用的成本函數(shù):


640?wx_fmt=jpeg

成本函數(shù)


此成本函數(shù)的Python代碼:


            


640?wx_fmt=jpeg

反向傳播


確定成本后,下面返回去求權(quán)值和偏差的導數(shù)。


            


def backPropagation(X, Y, params,cache)中的parama和cache是什么?在前向傳播中儲存數(shù)值,就是為了用于反向傳播。Params是參數(shù)(權(quán)值和偏差)。


640?wx_fmt=jpeg

更新參數(shù)

?

得到參數(shù)后,代入以下公式:


640?wx_fmt=jpeg


公式中alpha (α)是超參數(shù)的學習率。在學習開始前需要設(shè)置數(shù)值。在學習率右側(cè)的數(shù)值為導數(shù)。alpha和導數(shù)已知,可以更新參數(shù)。


            


640?wx_fmt=jpeg

循環(huán)是關(guān)鍵


需要多次迭代才能找到回歸最低成本的參數(shù)。現(xiàn)在開始循環(huán)!


            


Hidden_size指隱藏層中神經(jīng)元數(shù)量。由于在學習開始前設(shè)定,它類似于超參數(shù)。return params, cost_指找到的最佳參數(shù)。cost_為每次迭代預估的成本。


640?wx_fmt=jpeg

運行代碼!


使用sklearn創(chuàng)建數(shù)據(jù)集。


            


X為輸入值,Y為實際輸出值。


            


本文中學習率設(shè)置為0.3,隱藏層神經(jīng)元數(shù)量為5,迭代次數(shù)為5000. 當然也可設(shè)置不同數(shù)值嘗試。


下面畫圖以說明每次迭代中成本函數(shù)的變化。


            


進階教程:用Python建立全新二層神經(jīng)結(jié)構(gòu)_第7張圖片


結(jié)果正確!


            


完整代碼:


              
            


640?wx_fmt=jpeg

留言 點贊 發(fā)個朋友圈

我們一起分享AI學習與發(fā)展的干貨


編譯組: 蔣馨怡、胡昕彤

相關(guān)鏈接:

https://medium.com/better-programming/how-to-build-2-layer-neural-network-from-scratch-in-python-4dd44a13ebba


如需轉(zhuǎn)載,請后臺留言,遵守轉(zhuǎn)載規(guī)范


推薦文章閱讀


ACL2018論文集50篇解讀

EMNLP2017論文集28篇論文解讀

2018年AI三大頂會中國學術(shù)成果全鏈接

ACL2017 論文集:34篇解讀干貨全在這里

10篇AAAI2017經(jīng)典論文回顧


長按識別二維碼可添加關(guān)注

讀芯君愛你



更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 马山县| 临沂市| 柳州市| 吉隆县| 镇巴县| 海兴县| 太仆寺旗| 当涂县| 墨江| 贵定县| 内江市| 永顺县| 泾川县| 岳普湖县| 枣强县| 教育| 军事| 新兴县| 金平| 蒙阴县| 冀州市| 永吉县| 蛟河市| 辽宁省| 礼泉县| 武宣县| 巨鹿县| 宣城市| 苗栗市| 嘉荫县| 玛纳斯县| 高碑店市| 宁波市| 林周县| 庐江县| 连城县| 安陆市| 镇雄县| 平远县| 禄丰县| 佛坪县|