本文轉(zhuǎn)自@花花知乎用戶的文章片段「七夕的禮物」: 一日搞懂卷積神經(jīng)網(wǎng)絡(luò)氯庆,詳細(xì)內(nèi)容請(qǐng)看原作者的詳細(xì)描述蹭秋!
以前總看見別人說某某神經(jīng)網(wǎng)絡(luò)參數(shù)量有多少,大概占用多大的顯存等等描述堤撵,但心里卻并不知道為什么是這么多仁讨,今天看到這篇文章,大體上有了一定的理解实昨。
參數(shù)量的計(jì)算:
「VGG Network」洞豁,牛津大學(xué)VGG實(shí)驗(yàn)室設(shè)計(jì)的架構(gòu),將AlexNet的8層提高到了19層荒给,真正讓深度這個(gè)詞得以充分體現(xiàn)丈挟。
從VGG開始,人們不再使用太大的卷積核志电,取而代之的是若干個(gè)小卷積核的組合曙咽。
比如,3個(gè)步長為1的3X3卷積核挑辆,可以擁有1個(gè)7X7的卷積核一樣的感受野例朱。但是,它可以使整個(gè)網(wǎng)絡(luò)變得更深之拨,并且更具有非線性茉继。
同時(shí),還能夠進(jìn)一步減少訓(xùn)練的參數(shù)量蚀乔。
關(guān)于參數(shù)的計(jì)算烁竭,有些朋友有一些疑惑,那么下圖可以幫助你理解它是如何計(jì)算的吉挣。
我們要訓(xùn)練的參數(shù)其實(shí)就是卷積核的參數(shù)量派撕,這和輸入和輸出的特征圖數(shù)量以及卷積核本身的大小有關(guān),希望下圖的列子能夠幫到你睬魂。備注:仔細(xì)理解下面這張圖
如果你理解了上圖的列子终吼,歡迎你再嘗試自己計(jì)算一下VGG16的總參數(shù)量
值得一提的是,在訓(xùn)練的時(shí)候氯哮,因?yàn)橛衒orward 和 backward际跪,所以參數(shù)量要乘以2,另外一個(gè)就是網(wǎng)絡(luò)所需要的內(nèi)存,這個(gè)也是非常重要的一個(gè)指標(biāo)姆打,因?yàn)楫?dāng)前的GPU內(nèi)存空間非常有限良姆。可以從下圖得知幔戏,在網(wǎng)絡(luò)最開始的幾層玛追,占用的GPU內(nèi)存最多,而絕大多數(shù)的參數(shù)闲延,都來自于全連接層痊剖,這也是一個(gè)后來全局池化被運(yùn)用而全連接層被減少使用的原因。
模型占用顯存的計(jì)算
妹紙:那個(gè)垒玲,可以問你陆馁,模型的Batch Size怎么決定嘛?或者說合愈,怎樣計(jì)算模型所需要的顯存啊氮惯。。
花花:這個(gè)問題想暗,就有那么一丟丟復(fù)雜了妇汗。。你聽我慢慢說嗎说莫?杨箭?
妹紙:額,這個(gè)储狭,那還是算了吧互婿。。
花花:辽狈。慈参。。
還是補(bǔ)一個(gè)模型怎么計(jì)算吧刮萌。
正常來講驮配,顯存的占用主要是Model本身和每一層的output。
計(jì)算方式為:
再次感謝知乎用戶@花花的詳解着茸!詳細(xì)信息請(qǐng)看原文