卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)
卷積神經網絡(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 |
?
總結
以上是生活随笔為你收集整理的卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的next()以及iter
- 下一篇: Conv1D和Conv2D的区别