以LeNet为例分析CNN中的参数量
CNN最重要的兩點(diǎn):局部連接和權(quán)值共享
局部連接:神經(jīng)元和上層部分神經(jīng)元相連接
權(quán)值共享:基于局部連接,在每個(gè)神經(jīng)元和上層部分神經(jīng)元之間權(quán)值是共享的,也就是說(shuō)對(duì)于一個(gè)神經(jīng)元,和它相連的所有上層神經(jīng)元之間的權(quán)值都是一致的,這樣可以大大減少參數(shù)量。對(duì)于在feature_map中的理解:對(duì)于一個(gè)feature_map只需要訓(xùn)練一種kernel。
首先,對(duì)于LeNet整體上介紹一下:
- 對(duì)于一張大小為32×3232×32的輸入圖像
- 經(jīng)過(guò)第一層卷積層C1得到了6張大小為28×2828×28的feature_map
- 經(jīng)過(guò)下采樣層S2,得到6張14×1414×14的feature_map
- 經(jīng)過(guò)第二層卷積層C3得到16張大小為10×1010×10的feature_map
- 經(jīng)過(guò)下采樣層S4,得到16張5×55×5的feature_map
- 經(jīng)過(guò)第三層卷積層C5得到120張大小為1×11×1的feature_map
- 經(jīng)過(guò)全連接層F6得到84個(gè)神經(jīng)元
接下來(lái)逐層分析:
1. C1
- C1中的每個(gè)feature_map與輸入中的5×55×5鄰域相連
- 可訓(xùn)練參數(shù)量:(5×5+1)×6=156(5×5+1)×6=156(對(duì)于每一個(gè)feature_map,需要學(xué)習(xí)5×55×5個(gè)權(quán)重和11個(gè)偏置)
- 連接數(shù):(5×5+1)×28×28×6=122304(5×5+1)×28×28×6=122304(該層共有28×28×628×28×6個(gè)神經(jīng)元,每個(gè)神經(jīng)元和上層(5×5+1)(5×5+1)個(gè)神經(jīng)元連接)
2. S2
- kernel_size: 2
- stepsize: 2
- 下采樣過(guò)程是將每4個(gè)輸入相加,乘以一個(gè)可訓(xùn)練參數(shù)w,加上一個(gè)偏置b,再經(jīng)過(guò)一個(gè)sigmoid函數(shù)計(jì)算
- 可訓(xùn)練參數(shù)量:(1+1)×6(1+1)×6(每個(gè)feature_map內(nèi)的權(quán)重和偏置是一致的)
- 連接數(shù):(2×2+1)×14×14×6=5880(2×2+1)×14×14×6=5880
3. C3
這一層與之前的有所不同。C3中的每個(gè)特征map是連接到S2中的所有6個(gè)或者幾個(gè)特征map的,表示本層的特征map是上一層提取到的特征map的不同組合。具體的連接方式是:C3的前6個(gè)特征圖以S2中3個(gè)相鄰的特征圖子集為輸入。接下來(lái)6個(gè)特征圖以S2中4個(gè)相鄰特征圖子集為輸入。然后的3個(gè)以不相鄰的4個(gè)特征圖子集為輸入。最后一個(gè)將S2中所有特征圖為輸入。
可訓(xùn)練參數(shù)量:(3×25+1)×6+(4×25+1)×6+(4×25+1)×3+(6×25+1)×1=1516(3×25+1)×6+(4×25+1)×6+(4×25+1)×3+(6×25+1)×1=1516(以(3×25+1)×6(3×25+1)×6為例,一個(gè)feature_map將和3個(gè)上層5×55×5的鄰域相連,相乘后加上一個(gè)偏置得到新的feature_map)
- 連接數(shù):10×10×1516=15160010×10×1516=151600
4. S4
- 與S2相似
- 可訓(xùn)練參數(shù)量:(1+1)?16=32(1+1)?16=32
- 連接數(shù):(2×2+1)×5×5×16=2000(2×2+1)×5×5×16=2000
總結(jié)
以上是生活随笔為你收集整理的以LeNet为例分析CNN中的参数量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 反向传播(Back propagatio
- 下一篇: 链表总结