CNN卷積各層的參數(shù)和鏈接個數(shù)的計(jì)算

from:?https://blog.csdn.net/m0_37870649/article/details/79382674

一、CNN概述

卷積神經(jīng)網(wǎng)絡(luò)是一個多層的神經(jīng)網(wǎng)絡(luò),每層由多個二維平面組成(每個層有多個Feature Map,每個Feature Map通過一種卷積濾波器提取輸入的一種特征),而每個平面由多個獨(dú)立神經(jīng)元組成。

圖1 卷積神經(jīng)網(wǎng)絡(luò)的概念示范

1. 輸入圖像通過和三個可訓(xùn)練的濾波器和可加偏置進(jìn)行卷積,濾波過程如圖1,卷積后在C1層產(chǎn)生三個特征映射圖

2. 然后特征映射圖中每組的4個像素再進(jìn)行求和,加權(quán)值,加偏置,通過一個Sigmoid函數(shù)得到三個S2層的特征映射圖。

3. 這些映射圖再進(jìn)過濾波得到C3層。

4. 這個層級結(jié)構(gòu)再和S2一樣產(chǎn)生S4。

5. 最終,這些像素值被光柵化,并連接成一個向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),得到輸出。

CNN一個牛逼的地方就在于通過感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個數(shù),所謂權(quán)值共享就是同一個Feature Map中神經(jīng)元權(quán)值共享,該Feature Map中的所有神經(jīng)元使用同一組權(quán)值。因此:

? ? ?a. 參數(shù)個數(shù):?與神經(jīng)元的個數(shù)無關(guān),只與卷積核的大小及Feature Map的個數(shù)相關(guān)。

? ? ?b. 共有多少個連接個數(shù):就與神經(jīng)元的個數(shù)相關(guān)了,神經(jīng)元的個數(shù)也就是特征圖的大小。

二、各層參數(shù)和鏈接數(shù)計(jì)算

舉例:

? ? ? 下面以最經(jīng)典的LeNet-5例子來逐層分析各層的參數(shù)及連接個數(shù)。? ?

圖2

C1層(卷積層):是一個卷積層,由6個特征圖Feature Map構(gòu)成。特征圖中每個神經(jīng)元與5*5的鄰域(濾波器)相連。

1. 特征圖大?。?/b>特征圖的大小28*28,這樣能防止輸入的連接掉到邊界之外(32-5+1=28)。

feature map邊長大小的具體計(jì)算參見:http://blog.csdn.net/qq_15192373/article/details/78393520

2. 參數(shù)個數(shù):C1有156個可訓(xùn)練參數(shù) (每個濾波器5*5=25個unit參數(shù)和一個bias參數(shù),一共6個濾波器,共(5*5+1)*6=156個參數(shù))

3. 鏈接個數(shù)/FLOPS個數(shù)::(5*5+1)*6?*(28*28)=122,304個。左邊是濾波器在輸入層滑過的神經(jīng)元個數(shù),右邊是C1層每個feature map的神經(jīng)元個數(shù),左右對應(yīng)關(guān)系是1對28*28,相乘即為連接數(shù)。(每個鏈接對應(yīng)1次計(jì)算,由wa+b可知,每個參數(shù)參與1次計(jì)算,所以1個單位的偏置b也算進(jìn)去)

----------------------------------------

S2層(下采樣層):是一個下采樣層,有6個14*14的特征圖。特征圖中的每個單元與C1中相對應(yīng)特征圖的2*2鄰域相連接。

1. 特征圖大?。?/b>每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)

2. 參數(shù)個數(shù):S2層有 12個?(6*(1+1)=12) 可訓(xùn)練參數(shù)。S2層?每個濾波器路過的4個鄰域的4個輸入相加,乘以1個可訓(xùn)練參數(shù)w,再加上1個可訓(xùn)練偏置b(即一個濾波器對應(yīng)兩個參數(shù))。(對于子采樣層,每一個特征映射圖的的可變參數(shù)需要考慮你使用的采樣方式而定,如文中的采樣方式,每一個特征映射圖的可變參數(shù)數(shù)量為2個,有的采樣方式不需要參數(shù))

3. 鏈接個數(shù)/FLOPS個數(shù):5880個連接,(?(2*2+1)*6 *14*14=5880)。左邊是濾波器在C1層滑過的神經(jīng)元個數(shù),右邊是S2層每個feature map的神經(jīng)元個數(shù),相乘即為連接數(shù)。

----------------------------------------

C3層(卷積層):是一個卷積層,它同樣通過5x5的卷積核去卷積層S2,然后得到的特征map就只有10x10個神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個特征map了。

1. 特征圖大?。?/b>C3中每個特征圖由S2中所有6個或者幾個特征map組合(幾個濾波器計(jì)算的神經(jīng)元的值 相加 合并成一個神經(jīng)元)而成。

為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點(diǎn)。

第1,不完全的連接機(jī)制將連接的數(shù)量保持在合理的范圍內(nèi)。

第2,也是最重要的,其破壞了網(wǎng)絡(luò)的對稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征(希望是互補(bǔ)的)。(14-5+1=10)

2. 參數(shù)個數(shù):例如,存在的一個方式是:

C3的前6個特征圖:相當(dāng)于需要6組濾波器,每組以S2中 3個相鄰?特征圖子集 為輸入,共享一個偏置。(C3每個特征圖 由 S2中3個特征圖分別用不同濾波器 再加和得到)

C3的接下來6個特征圖:相當(dāng)于需要6組濾波器,每組以S2中 4個相鄰?特征圖子集 為輸入,共享一個偏置。(1對4)

C3的接下來3個特征圖:相當(dāng)于需要3組濾波器,每組以S2中4個不相鄰?特征圖子集 為輸入,共享一個偏置。(1對4)

C3的最后1個特征圖:相當(dāng)于需要1組濾波器,每組將S2中所有?特征圖 為輸入,共享一個偏置。(1對6)

這樣C3層有1516個可訓(xùn)練參數(shù)。計(jì)算:6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516。此處,C3個特征圖由 S2中n個卷積結(jié)果合并,然后共享1個b,組合計(jì)算得到。

3.鏈接個數(shù)/FLOPS個數(shù):1516*10*10=151600個連接。左邊是濾波器滑過的S2層神經(jīng)元個數(shù),右邊是C3層特征圖大小。

------------------------------------------

S4層(下采樣層):是一個下采樣層,由16個5*5大小的特征圖構(gòu)成。特征圖中的每個單元與C3中相應(yīng)特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。

1. 特征圖大小:5*5大小。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)

2. 參數(shù)個數(shù):S4層有32個可訓(xùn)練參數(shù)。(每個特征圖1個因子w和1個偏置b,16*(1+1)=32)

3.?鏈接個數(shù)/FLOPS個數(shù):16* (2*2+1) *5*5=2000個連接。左邊是濾波器在C3層滑過的神經(jīng)元個數(shù),右邊是S4層神經(jīng)元個數(shù),相乘即為連接數(shù)。

--------------------------------------------

C5層(卷積層或第一個全連接層):是一個卷積層,有120個特征圖(或者說神經(jīng)元)。每個單元與S4層的全部16個單元的5*5鄰域(與S4層特征圖一樣大)相連。(120組濾波器, 每組16個濾波器,分別與 S4層16個特征圖 進(jìn)行卷積, 每組得到C5層的一個神經(jīng)元/特征圖)

1. 特征圖大?。?/b>由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1。(5-5+1=1), 這構(gòu)成了S4和C5之間的全連接。之所以仍將C5標(biāo)示為卷積層而非全相聯(lián)層,是因?yàn)槿绻鸏eNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數(shù)就會比1*1大。

2. 參數(shù)個數(shù):120* (16*5*5+1)=48120個。濾波器個數(shù)120*16個,所以w有120*16*5*5個,同組16個濾波器共用一個b,所以有120個b。

3.?鏈接個數(shù)/FLOPS個數(shù):48120*1*1,左邊是濾波器滑過的神經(jīng)元個數(shù),右邊是C5層特征圖大小(其實(shí)現(xiàn)在已經(jīng)變成了單個神經(jīng)元,大小1*1),相乘即為連接數(shù),此處也即FLOPS個數(shù)。

--------------------------------------------

F6層(全連接層):雖然是全連接層,得到F6層每個神經(jīng)元 由?每組120個1*1的濾波器對C5層卷積,一共84組濾波器,得到84個神經(jīng)元。

1. 特征圖大?。?/b>有84個單元(之所以選這個數(shù)字的原因來自于輸出層的設(shè)計(jì)),與C5層全相連。

2. 參數(shù)個數(shù):有 84* (120*(1*1)+1)=10164 個可訓(xùn)練參數(shù)。如同經(jīng)典神經(jīng)網(wǎng)絡(luò),F(xiàn)6層計(jì)算輸入向量(120)和權(quán)重向量(1*1)之間的點(diǎn)積,再加上一個偏置(+1)。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個狀態(tài)。

3.?鏈接個數(shù)/FLOPS個數(shù):10164* 1*1,左邊是濾波器在C5層滑過的神經(jīng)元個數(shù),右邊是F6層特征圖大小。1個鏈接對應(yīng)1次計(jì)算。

--------------------------------------------

輸出層:由歐式徑向基函數(shù)(Euclidean Radial Basis Function)單元組成,每類一個單元,每個有84個輸入。

--------------------------------------------

三、卷積和下采樣說明

圖3 卷積和子采樣過程

卷積過程包括:用一個可訓(xùn)練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個偏置bx,得到卷積層Cx。

子采樣過程包括:每鄰域四個像素求和變?yōu)橐粋€像素,然后通過標(biāo)量Wx+1加權(quán),再增加偏置bx+1,然后通過一個sigmoid激活函數(shù),產(chǎn)生一個大概縮小四倍的特征映射圖Sx+1。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容