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