卷積神經網絡(CNN)張量(圖像)的尺寸和參數計算(深度學習)
分享一些公式計算張量(圖像)的尺寸,以及卷積神經網絡(CNN)中層參數的計算。
以AlexNet網絡為例,以下是該網絡的參數結構圖。
AlexNet網絡的層結構如下:
1.Input: 圖像的尺寸是227*227*3.
2.Conv-1: 第1層卷積層的核大小11*11,96個核。步長(stride)為4,邊緣填充(padding)為0。
3.MaxPool-1: 池化層-1對Conv-1進行池化,尺寸為3*3,步長為2.
4.Conv-2: 核尺寸:5*5,數量:256,步長:1,填充:2
5.MaxPool-2: 尺寸:3*3,步長:2
6.Conv-3: 核尺寸:3*3,數量:384,步長:1,填充:1
7: Conv-4: 結構同Conv-3.
8. Conv-5: 核尺寸:3*3,數量:256,步長:1,填充:1
9. MaxPool-3: 尺寸:3*3,步長:2
10.FC-1: 全連接層1共有4096個神經元。
11.FC-1: 全連接層2共有4096個神經元。
12.FC-3: 全連接層3共有1000個神經元。
接下來,我們對以上的網絡結構進行描述:
1.如何計算張量(圖像)的尺寸;
2.如何計算網絡的總參數;
卷積層(Conv Layer)的輸出張量(圖像)的大小
定義如下:
O=輸出圖像的尺寸。
I=輸入圖像的尺寸。
K=卷積層的核尺寸
N=核數量
S=移動步長
P =填充數
輸出圖像尺寸的計算公式如下:
輸出圖像的通道數等於核數量N。
示例:AlexNet中輸入圖像的尺寸為227*227*3.第一個卷積層有96個尺寸為11*11*3的核。步長為4,填充為0.
輸出的圖像為55*55*96(每個核對應1個通道)。
池化層(MaxPool Layer)的輸出張量(圖像)的大小
定義如下:
O=輸出圖像的尺寸。
I=輸入圖像的尺寸。
S=移動步長
PS=池化層尺寸
輸出圖像尺寸的計算公式如下:
不同於卷積層,池化層的輸出通道數不改變。
示例:每1層卷積層后的池化層的池化層尺寸為3*3,步長為2。根據前面卷積層的輸出為55*55*96。池化層的輸出圖像尺寸如下:
輸出尺寸為27*27*96。
全連接層(Fully Connected Layer)的輸出張量(圖像)的大小
全連接層輸出向量長度等於神經元的數量。
通過AlexNet改變張量(圖像)的尺寸的結構如下:
在AlexNet網絡中,輸出的圖像尺寸為227*227*3.
Conv-1,尺寸變為55*55*96,池化層后變為27*27*96。
Conv-2,尺寸變為27*27*256,池化層后變為13*13*256.
Conv-3,尺寸變為13*13*384,經過Conv-4和Conv-5變回13*13*256.
最后,MaxPool-3尺寸縮小至6*6*256.
圖像通過FC-1轉換為向量4096*1.通過FC-2尺寸未改變.最終,通過FC-3輸出1000*1的尺寸張量.
接下來,計算每層的參數數量.
Conv Layer參數數量
在CNN中,每層有兩種類型的參數:weights 和biases.總參數數量為所有weights和biases的總和.
定義如下:
WC=卷積層的weights數量
BC=卷積層的biases數量
PC=所有參數的數量
K=核尺寸
N=核數量
C =輸入圖像通道數
卷積層中,核的深度等於輸入圖像的通道數.於是每個核有K*K個參數.並且有N個核.由此得出以下的公式.
示例:AlexNet網絡中,第1個卷積層,輸入圖像的通道數(C)是3,核尺寸(K)是11*11,核數量是96. 該層的參數計算如下:
計算出Conv-2, Conv-3, Conv-4, Conv-5 的參數分別為 614656 , 885120, 1327488 和884992.卷積層的總參數就達到3,747,200.
MaxPool Layer參數數量
沒有與MaxPool layer相關的參數量.尺寸,步長和填充數都是超參數.
Fully Connected (FC) Layer參數數量
在CNN中有兩種類型的全連接層.第1種是連接到最后1個卷積層,另外1種的FC層是連接到其他的FC層.兩種情況我們分開討論.
類型1:連接到Conv Layer
定義如下:
Wcf= weights的數量
Bcf= biases的數量
O= 前卷積層的輸出圖像的尺寸
N = 前卷積層的核數量
F = 全連接層的神經元數量
示例: AlexNet網絡中第1個FC層連接至Conv Layer.該層的O為6,N為256,F為4096.
參數數目遠大於所有Conv Layer的參數和.
類型2:連接到FC Layer
定義如下:
Wff= weights的數量
Bff= biases的數量
Pff= 總參數的數量
F= 當前FC層的神經元數量
F-1 = 前FC層的神經元數量
示例:AlexNet的最后1個全連接層, F-1=4096,F=1000 .
AlexNet網絡中張量(圖像)尺寸和參數數量
AlexNet網絡中總共有5個卷積層和3個全連接層.總共有62,378,344個參數.以下是匯總表.
Layer Name |
Tensor Size |
Weights |
Biases |
Parameters |
Input Image |
227x227x3 |
0 |
0 |
0 |
Conv-1 |
55x55x96 |
34,848 |
96 |
34,944 |
MaxPool-1 |
27x27x96 |
0 |
0 |
0 |
Conv-2 |
27x27x256 |
614,400 |
256 |
614,656 |
MaxPool-2 |
13x13x256 |
0 |
0 |
0 |
Conv-3 |
13x13x384 |
884,736 |
384 |
885,120 |
Conv-4 |
13x13x384 |
1,327,104 |
384 |
1,327,488 |
Conv-5 |
13x13x256 |
884,736 |
256 |
884,992 |
MaxPool-3 |
6x6x256 |
0 |
0 |
0 |
FC-1 |
4096×1 |
37,748,736 |
4,096 |
37,752,832 |
FC-2 |
4096×1 |
16,777,216 |
4,096 |
16,781,312 |
FC-3 |
1000×1 |
4,096,000 |
1,000 |
4,097,000 |
Output |
1000×1 |
0 |
0 |
0 |
Total |
62,378,344 |