【深度學習】卷積神經網絡中Dropout、BatchNorm的位置選擇


 

前言

卷積神經網絡的設計自然要考慮到各層之間的順序。這種“考慮”既有原理性的解釋也有經驗方面的原因。本文主要介紹一些層常見的位置選擇,並對其原因進行分析,從中提取共性有利於其他模型的設計。

Dropout層的位置

Dropout一般放在全連接層防止過擬合,提高模型返回能力,由於卷積層參數較少,很少有放在卷積層后面的情況,卷積層一般使用batch norm。
全連接層中一般放在激活函數層之后,有的帖子說一定放在激活函數后,個人推測是因為對於部分激活函數輸入為0輸出不一定為0,可能會起不到效果,不過對於relu輸入0輸出也是0就無所謂了。

BatchNorm

BatchNorm歸一化放在激活層前后好像都有,最初LeNet有一種歸一化放在了激活層池化層后面,而現在普遍放在激活層前。

 

 


bn原文建議放在ReLU前,因為ReLU的激活函數輸出非負,不能近似為高斯分布。但有人做了實驗,發現影響不大,放在后面好像還好了一點,放在ReLU后相當於直接對每層的輸入進行歸一化,如下圖所示,這與淺層模型的Standardization是一致的。
所以在激活層前還是后還是很難下定論的,只是現在習慣放在激活層前,區別不是很大,區別大的是是否使用bn。
這里做了很多實驗,可以參考:https://github.com/ducha-aiki/caffenet-benchmark/blob/master/batchnorm.md


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM