衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Numpy實現神經網絡:如何加入和調整dropout?

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-04-15 09:59 ? 次閱讀

和DeepMind數據科學家、Udacity深度學習導師Andrew Trask一起,基于Numpy手寫神經網絡,更深刻地理解dropout這一概念。

總結:幾乎所有目前最先進的神經網絡都用到了dropout. 這篇教程介紹如何通過幾行Python代碼在神經網絡中加入Dropout. 讀完這篇教程之后,你將得到一個可以工作的dropout實現,并且掌握在任何神經網絡中加入和調整dropout的技能。

如果你對我的文章感興趣,歡迎在推特上關注 @iamtrask,也歡迎給我反饋。

直接給我代碼

import numpy as np

X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])

y = np.array([[0,1,1,0]]).T

alpha,hidden_dim,dropout_percent,do_dropout = (0.5,4,0.2,True)

synapse_0 = 2*np.random.random((3,hidden_dim)) - 1

synapse_1 = 2*np.random.random((hidden_dim,1)) - 1

for j in xrange(60000):

layer_1 = (1/(1+np.exp(-(np.dot(X,synapse_0)))))

if(do_dropout):

layer_1 *= np.random.binomial([np.ones((len(X),hidden_dim))],1-dropout_percent)[0] * (1.0/(1-dropout_percent))

layer_2 = 1/(1+np.exp(-(np.dot(layer_1,synapse_1))))

layer_2_delta = (layer_2 - y)*(layer_2*(1-layer_2))

layer_1_delta = layer_2_delta.dot(synapse_1.T) * (layer_1 * (1-layer_1))

synapse_1 -= (alpha * layer_1.T.dot(layer_2_delta))

synapse_0 -= (alpha * X.T.dot(layer_1_delta))

一、什么是dropout?

如同前一篇文章提到的,神經網絡是一個美化的搜索問題。神經網絡中的每一個節點搜索輸入數據和正確的輸出數據之間的相關性。

考慮前一篇中的圖片。曲線表示網絡對應每個具體權重產生的誤差。曲線的低點(讀作:低誤差)標志著權重“找到”輸入和輸出之間的關系。圖中的球標志著不同的權重。它們都試圖找到低點。

考慮顏色。球的初始位置是隨機生成的(就像神經網絡的權重)。如果兩個球隨機開始于同一顏色區域,那么它們將收斂于同一點。這里存在冗余!浪費算力和內存!這正是神經網絡中發生的事。

為何dropout:dropout有助于防止權重收斂于同一位置。它通過在前向傳播階段隨機關閉節點做到這一點。接著在反向傳播時激活所有節點。讓我們仔細看看。

二、如何加入和調整dropout?

為了在網絡層上執行dropout,我們在前向傳播階段隨機設置層的值為0——見第10行。

第9行:參數化是否使用dropout. 我們只打算在訓練階段使用dropout. 不要在運行時使用dropout,也不要在測試數據集上使用dropout. 此外,這一行也意味著我們需要增大前向傳播的值。這與關閉的值的數目成正比。一個簡單的直覺是,如果你關閉一半的隱藏層,那么你需要加倍前向傳播的值,以正確補償輸出。感謝@karpathy指出這一點。

調整的最佳實踐

第4行:參數化dropout百分比。這影響關閉任何一個節點的概率。對隱藏層而言,較好的初始值設定是50%. 如果將dropout應用于輸入層,最好不要超過25%.

Hinton主張在調整dropout的同時調整隱藏層的大小。首先關閉dropout,增加隱藏層尺寸,直到你完美地擬合了你的數據。接著,使用相同的隱藏層尺寸,開啟dropout進行訓練。這應該是一個近乎最優的配置。一旦結束訓練,關閉dropout。萬歲!你有了一個可以工作的神經網絡!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4779

    瀏覽量

    101172
  • 深度學習
    +關注

    關注

    73

    文章

    5515

    瀏覽量

    121552

原文標題:基于Numpy實現神經網絡:dropout

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview BP神經網絡實現

    請問:我在用labview做BP神經網絡實現故障診斷,在NI官網找到了機器學習工具包(MLT),但是里面沒有關于這部分VI的幫助文檔,對于”BP神經網絡分類“這個范例有很多不懂的地方,比如
    發表于 02-22 16:08

    【PYNQ-Z2試用體驗】神經網絡基礎知識

    語言,使用numpy.dot方法即可計算矩陣乘法。 以上便是一個簡單神經網絡的基本原理,對神經網絡有了基本的認識之后,我們才能進行復雜的神經網絡設計。總結本文講解了
    發表于 03-03 22:10

    【案例分享】ART神經網絡與SOM神經網絡

    今天學習了兩個神經網絡,分別是自適應諧振(ART)神經網絡與自組織映射(SOM)神經網絡。整體感覺不是很難,只不過一些最基礎的概念容易理解不清。首先ART神經網絡是競爭學習的一個代表,
    發表于 07-21 04:30

    人工神經網絡實現方法有哪些?

    人工神經網絡(Artificial Neural Network,ANN)是一種類似生物神經網絡的信息處理結構,它的提出是為了解決一些非線性,非平穩,復雜的實際問題。那有哪些辦法能實現人工神經
    發表于 08-01 08:06

    如何構建神經網絡

    原文鏈接:http://tecdat.cn/?p=5725 神經網絡是一種基于現有數據創建預測的計算系統。如何構建神經網絡神經網絡包括:輸入層:根據現有數據獲取輸入的層隱藏層:使用反向傳播優化輸入變量權重的層,以提高模型的預測
    發表于 07-12 08:02

    matlab實現神經網絡 精選資料分享

    神經神經網絡,對于神經網絡實現是如何一直沒有具體實現一下:現看到一個簡單的神經網絡模型用于訓
    發表于 08-18 07:25

    使用keras搭建神經網絡實現基于深度學習算法的股票價格預測

    本文使用keras搭建神經網絡實現基于深度學習算法的股票價格預測。本文使用的數據來源為tushare,一個免費開源接口;且只取開票價進行預測。import numpy as npimport
    發表于 02-08 06:40

    基于Numpy實現同態加密神經網絡

    在分布式AI環境下,同態加密神經網絡有助于保護商業公司知識產權和消費者隱私。本文介紹了如何基于Numpy實現同態加密神經網絡
    的頭像 發表于 03-27 14:52 ?8007次閱讀
    基于<b class='flag-5'>Numpy</b><b class='flag-5'>實現</b>同態加密<b class='flag-5'>神經網絡</b>

    基于Numpy實現神經網絡:反向傳播

    和DeepMind數據科學家、Udacity深度學習導師Andrew Trask一起,基于Numpy手寫神經網絡,更深刻地理解反向傳播這一概念。
    的頭像 發表于 04-01 09:29 ?5197次閱讀
    基于<b class='flag-5'>Numpy</b><b class='flag-5'>實現</b><b class='flag-5'>神經網絡</b>:反向傳播

    如何使用numpy搭建一個卷積神經網絡詳細方法和程序概述

    內容將繼續秉承之前 DNN 的學習路線,在利用Tensorflow搭建神經網絡之前,先嘗試利用numpy手動搭建卷積神經網絡,以期對卷積神經網絡的卷積機制、前向傳播和反向傳播的原理和過
    的頭像 發表于 10-20 10:55 ?6115次閱讀

    如何使用Numpy搭建神經網絡

    很多同學入門機器學習之后,直接用TensorFlow調包實現神經網絡,對于神經網絡內在機理知之甚少。
    的頭像 發表于 05-18 11:02 ?3637次閱讀
    如何使用<b class='flag-5'>Numpy</b>搭建<b class='flag-5'>神經網絡</b>

    神經網絡中的dropout是什么?怎么使用

    Dropout是在《ImageNet Classification with Deep Convolutional》這篇論文里提出來為了防止神經網絡的過擬合。它的主要思想是讓隱藏層的節點在每次迭代時(包括正向和反向傳播)有一定幾率(keep-prob)失效。
    的頭像 發表于 01-28 17:44 ?2.3w次閱讀

    卷積神經網絡和深度神經網絡的優缺點 卷積神經網絡和深度神經網絡的區別

    深度神經網絡是一種基于神經網絡的機器學習算法,其主要特點是由多層神經元構成,可以根據數據自動調整神經元之間的權重,從而
    發表于 08-21 17:07 ?4245次閱讀

    使用NumPy實現前饋神經網絡

    要使用NumPy實現一個前饋神經網絡(Feedforward Neural Network),我們需要從基礎開始構建,包括初始化網絡參數、定義激活函數及其導數、
    的頭像 發表于 07-11 16:30 ?1987次閱讀

    深度學習入門:簡單神經網絡的構建與實現

    深度學習中,神經網絡是核心模型。今天我們用 Python 和 NumPy 構建一個簡單的神經網絡神經網絡由多個神經元組成,
    的頭像 發表于 01-23 13:52 ?97次閱讀
    大发888laohuji| 战神百家乐官网的玩法技巧和规则 | 百家乐分| 中国百家乐官网技巧软件| 大发888大发下载| 百家乐官网证据| 88娱乐城网址| 百家乐技巧之微笑心法| 金湖县| 百家乐娱乐备用网址| 百家乐官网六合彩3535| 大发888真钱娱乐场| 免费百家乐官网预测| 湘乡市| 百家乐冼牌机| 百家乐官网号游戏机| 娱乐城网址| 百家乐官网规则| 百家乐官网单跳双跳| 丽景湾百家乐的玩法技巧和规则| 百家乐官网透明出千牌靴| 波音娱乐城送彩金| 百家乐开线| 百家乐官网网站赌钱吗| 世博娱乐城| 唐朝百家乐的玩法技巧和规则| 哪里有百家乐官网游戏下载| 全讯网址| 防伪百家乐筹码币套装| 适合属虎做生意的名字| 百家乐官网路单破解方法| 大发888 迅雷下载| 百家乐游戏平台有哪些哪家的口碑最好 | 网络百家乐官网真假| 正规棋牌游戏| 百家乐搏牌| 百家乐官网画哪个路单| 老河口市| 金冠百家乐的玩法技巧和规则 | 百家乐官网五湖四海娱乐城| 足球竞猜规则|