<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          經(jīng)驗之談|別再在CNN中使用Dropout了

          共 2650字,需瀏覽 6分鐘

           ·

          2021-11-15 22:12

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          作者:Harrison Jansma

          編譯:ronghuaiyang


          我注意到有很多關于學習深度學習和將什么是深度學習的資源。但是不幸的是,等到真正需要做一個模型的時候,解釋如何去做,何時去做的資源又很少。


          我寫這篇文章的目的是為了那些嘗試去實現(xiàn)深度學習的人,這樣你就不必像我一樣去看原始的論文或者看Reddit中的討論了。


          本文會告訴你為什么dropout在CNN的結構中會漸漸失寵。


          Dropout
          如果你在讀這篇文章的話,我假設你有一些對dropout的基本理解,以及它在神經(jīng)網(wǎng)絡中扮演的正則化的角色。

          ?


          通常來說,只有當我們的網(wǎng)絡有過擬合的風險的時候,才需要進行正則化。當網(wǎng)絡非常大,訓練時間非常長,也沒有足夠的數(shù)據(jù)的時候,才可能發(fā)生。

          如果你的網(wǎng)絡的最后有全連接層的話,使用dropout非常的容易。

          Keras 實現(xiàn)


          python

          keras.layers.Dropout(rate, noise_shape=None, seed=None)


          dropout的比例從0.5開始,逐漸減小直到模型的表現(xiàn)最好。

          例子:



          model=keras.models.Sequential()

          model.add(keras.layers.Dense(150, activation="relu"))

          model.add(keras.layers.Dropout(0.5))


          注意,這里只在CNN中的全連接層使用。對于其他的層則不用dropout。

          作為替代,你應該在卷積中插入batch normalization,這個也會正則化你的模型,同時讓訓練更加的穩(wěn)定。


          Batch Normalization

          Batch normalization是另外一個隊CNN進行正則化的方法。

          除了正則化的作用外,batch normalization還避免了CNN訓練中的梯度消失的問題。這個可以減小訓練的時間,得到更好的結果。


          Keras實現(xiàn)


          在Keras中實現(xiàn) batch normalization,使用下面的方法:

          keras.layers.BatchNormalization()




          當使用batch normalization來構建CNN結構時:

          - 在卷積層和激活層之間插入batch normalization。

          - batch normalization有些超參數(shù)需要調試,可以試試。

          也可以在激活函數(shù)之后插入batch normalization,根據(jù)我自身的經(jīng)驗,兩種方法效果差不多。



          例子:

          model.add(Conv2D(60,3, padding = "same"))

          model.add(BatchNormalization())

          model.add(Activation("relu"))

          使用Batch normalization替換dropout.

          如果你不用擔心過擬合的話,那么使用batch normalization有很多的好處。由于有正則化的作用,batch normalization可以很大程度上替代CNN中的dropout。

          “我們提出了一種算法,使用batch normalization用來構建,訓練和進行推理。得到的網(wǎng)絡訓練時具有飽和的非線性性,對于大的學習率更加的魯棒,往往不需要使用Dropout來進行正則化?!?Ioffe 和 Svegedy

          至于為什么dropout漸漸失寵,有兩個原因。


          第一,dropout對卷積層的正則化的作用很小

          原因呢?由于卷積層只有很少的參數(shù),他們本身就不需要多少正則化。更進一步說,特征圖編碼的是空間的關系,特征圖的激活是高度相關的,這也導致了dropout的失效。


          第二,dropout所擅長的正則化慢慢的過時了

          像VGG16這樣的大型的網(wǎng)絡后面有全連接層,對于這樣的模型,需要考慮過擬合,所以在全連接之間使用dropout。


          但是不幸的時,現(xiàn)在的結構中全連接層被移除了。


          我們使用了global average pooling來代替了全連接層,這種卷積網(wǎng)絡可以減小模型的size,同時提高模型的表現(xiàn)。

          實驗


          我做了一個實驗,試試看是否 batch normalization可以減少泛化誤差。

          我構建了5個完全相同的卷積網(wǎng)絡結構,然后分別在卷積之間插入dropout,batch norm,或者什么也不插入(control)。


          在Cifar100的數(shù)據(jù)集上訓練每個模型,我得到了下面的結果。


          使用batch norm的表現(xiàn)最好,說明在卷積之間應該使用batch norm。

          更進一步說,dropout不應該放在卷積之間,dropout越大,模型表現(xiàn)越差。

          重點
          如果你不知道是否應該在CNN中使用dropout,那么現(xiàn)在你應該知道了。只在有全連接的時候用dropout,在卷積之間使用 batch normalization。
          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  高潮在线视频 | 中文字幕日产av 中文字幕在线资源 | 国产又粗又大又硬又长又爽的视频 | 亚洲无码我不卡 | 欧美久久国产精品 |