分享一些公式計算張量(圖像)的尺寸,以及卷積神經網絡(CNN)中層參數的計算。網絡
以AlexNet網絡爲例,如下是該網絡的參數結構圖。ide
AlexNet網絡的層結構以下:spa
1.Input: 圖像的尺寸是227*227*3.3d
2.Conv-1: 第1層卷積層的核大小11*11,96個核。步長(stride)爲4,邊緣填充(padding)爲0。blog
3.MaxPool-1: 池化層-1對Conv-1進行池化,尺寸爲3*3,步長爲2.ci
4.Conv-2: 核尺寸:5*5,數量:256,步長:1,填充:2table
5.MaxPool-2: 尺寸:3*3,步長:2class
6.Conv-3: 核尺寸:3*3,數量:384,步長:1,填充:1神經網絡
7: Conv-4: 結構同Conv-3.im
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 |