您當前的位置:首頁 > 攝影

CNN基礎--卷積層計算、卷積層引數量、卷積層計算量

作者:由 行走的芒果派 發表于 攝影時間:2021-08-02

【一、卷積層的計算】

(1)卷積核如何工作

CNN基礎--卷積層計算、卷積層引數量、卷積層計算量

CNN基礎--卷積層計算、卷積層引數量、卷積層計算量

如上圖,

3*3

的卷積核作用於輸入資料,

對應數值相乘再相加

,得到該次計算結果

29

,卷積核在輸入資料上按照步長

stride=1

向右/向下移動,依次計算得到後續數值,如下圖:

CNN基礎--卷積層計算、卷積層引數量、卷積層計算量

(2)卷積層feature map大小計算:

卷積層輸出feature map大小計算公式:

N = (W - F + 2P) / S + 1

(一般向下取整)。

下圖為卷積核的移動演示圖:

CNN基礎--卷積層計算、卷積層引數量、卷積層計算量

no padding, stride=1

CNN基礎--卷積層計算、卷積層引數量、卷積層計算量

padding=1, stride=2

【二、卷積層的引數量】

卷積層的引數:

filter

,若一個

3 * 3

的卷積核,其引數為

9

個;再加上通道數,其引數就是:

通道數 * 9

(1)普通卷積層引數計算:

params = channels_{out}  *  (kernel_{w} * kernel_{h} * channels_{in}) + bias,其中bias=channels_{out}

有一張通道為

3

,大小為

224*224

的圖片,卷積核大小為:

2*2

,輸出通道數為

32

,則一個卷積核的引數

2*2*3=12

;則

32

個卷積核的引數為

32*(2*2*3) + 32=416

, 其中最後的

32

為偏置項引數。

(2)池化層引數計算:

池化(Pooling):也稱為欠取樣或下采樣;主要用於特徵降維,壓縮資料和引數的數量,減小過擬合,同時提高模型的容錯性;pooling在不同的 depth 上是分開執行的,池化操作是分開應用到各個特徵圖的,因此池化不需要引數控制。

(3)全連線層引數計算:

例如某一網路最後一層卷積層輸出的大小為

7*7*512

,全連線層輸出尺寸為

1 * 1024

;則需卷積層的尺寸為:

7 * 7 * 1024

,所以所需引數為

512 * 7 * 7 * 1024 + 1024 =25691136

。(引數量巨大,這也是為什麼說

全連線層引數冗餘

的原因,全連線層引數就可佔整個網路引數80%左右)

【三、卷積層的計算量】

(1)普通卷積層的計算量

進行一次卷積操作的計算量,應該如何計算呢?

卷積層計算量 = 卷積矩陣操作 + 融合操作 + 偏置項操作

注意:其中矩陣操作包括:先乘法,再加法

若有一張通道為

3

,大小為

7*7

的圖片,卷積核大小為:

5*5

stride

1,

padding

0,

輸出通道數為

64

,其輸出feature map的大小為

3*3*64

,feature map中的每一個畫素點,都是

64

5\times5\times3 的filter

共同作用於

7*7*3

的圖片計算一次得到的。

對於feature map上某一通道的某一點:

它的卷積矩陣操作計算量為

[(5*5*3)+(5*5-1)*3 + (3-1)]=149,

其中

(5*5*3)

代表矩陣乘法次數,

(5*5-1)*3

代表矩陣加法次數,

(3-1)

代表通道融合操作,偏置項操作計算量等於輸出通道數

64,

所以feature map中某一通道的一個畫素點的計算量為:

149+64=213

對於整個feature map:

計算量 = 單個通道中單個畫素點的計算量 * feature map的大小*輸出通道數

3*3*64*213=122688

,這僅僅是單張圖片的計算量,若是多張圖片,則需要乘以batch size。

(2)全連線層的計算量

若需對

7*7*512

的資料進行全連線操作,其輸出尺寸為

1 * 1024

(即1*1024*1*1),其

filter:7*7*512

,則所需計算量為:

1024*(1*1)*[(7*7*512)+512*(7*7-1) + (512-1)] + 1024,

其中

1024

為輸出通道數,

(1*1)

為輸出feature map尺寸,

7*7*512

為某一通道feature map中某一畫素的矩陣操作乘法的計算量,

512*(7*7-1)

為某一通道feature map中某一畫素的矩陣操作加法的計算量,

(512-1)

為通道融合加法的計算量,最後的

1024

為偏置項操作計算量。

因此可以發現:減少網路引數應主要針對全連線層;進行計算量最佳化時,重點應放在卷積層。

如有錯誤,還請指正。

標簽: 卷積  計算  Feature  map  引數