卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)張量(圖像)的尺寸和參數(shù)計(jì)算(深度學(xué)習(xí))
?分享一些公式計(jì)算張量(圖像)的尺寸,以及卷積神經(jīng)網(wǎng)絡(luò)(CNN)中層參數(shù)的計(jì)算。
以AlexNet網(wǎng)絡(luò)為例,以下是該網(wǎng)絡(luò)的參數(shù)結(jié)構(gòu)圖。
?
AlexNet網(wǎng)絡(luò)的層結(jié)構(gòu)如下:
1.Input:???????圖像的尺寸是227*227*3.
2.Conv-1:????第1層卷積層的核大小11*11,96個(gè)核。步長(zhǎng)(stride)為4,邊緣填充(padding)為0。
3.MaxPool-1:?????池化層-1對(duì)Conv-1進(jìn)行池化,尺寸為3*3,步長(zhǎng)為2.
4.Conv-2:????核尺寸:5*5,數(shù)量:256,步長(zhǎng):1,填充:2
5.MaxPool-2:?????尺寸:3*3,步長(zhǎng):2
6.Conv-3:?核尺寸:3*3,數(shù)量:384,步長(zhǎng):1,填充:1
7: Conv-4:???結(jié)構(gòu)同Conv-3.
8. Conv-5:???核尺寸:3*3,數(shù)量:256,步長(zhǎng):1,填充:1
9. MaxPool-3:?尺寸:3*3,步長(zhǎng):2
10.FC-1:???????全連接層1共有4096個(gè)神經(jīng)元。
11.FC-1:???????全連接層2共有4096個(gè)神經(jīng)元。
12.FC-3:???????全連接層3共有1000個(gè)神經(jīng)元。
?
接下來(lái),我們對(duì)以上的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行描述:
1.如何計(jì)算張量(圖像)的尺寸;
2.如何計(jì)算網(wǎng)絡(luò)的總參數(shù);
?
卷積層(Conv Layer)的輸出張量(圖像)的大小
定義如下:
O=輸出圖像的尺寸。
I=輸入圖像的尺寸。
K=卷積層的核尺寸
N=核數(shù)量
S=移動(dòng)步長(zhǎng)
P?=填充數(shù)
輸出圖像尺寸的計(jì)算公式如下:
?
輸出圖像的通道數(shù)等于核數(shù)量N。
示例:AlexNet中輸入圖像的尺寸為227*227*3.第一個(gè)卷積層有96個(gè)尺寸為11*11*3的核。步長(zhǎng)為4,填充為0.
輸出的圖像為55*55*96(每個(gè)核對(duì)應(yīng)1個(gè)通道)。
?
池化層(MaxPool Layer)的輸出張量(圖像)的大小
定義如下:
O=輸出圖像的尺寸。
I=輸入圖像的尺寸。
S=移動(dòng)步長(zhǎng)
PS=池化層尺寸
輸出圖像尺寸的計(jì)算公式如下:
不同于卷積層,池化層的輸出通道數(shù)不改變。
示例:每1層卷積層后的池化層的池化層尺寸為3*3,步長(zhǎng)為2。根據(jù)前面卷積層的輸出為55*55*96。池化層的輸出圖像尺寸如下:
?
輸出尺寸為27*27*96。
?
全連接層(Fully Connected Layer)的輸出張量(圖像)的大小
全連接層輸出向量長(zhǎng)度等于神經(jīng)元的數(shù)量。
?
通過(guò)AlexNet改變張量(圖像)的尺寸的結(jié)構(gòu)如下:
在AlexNet網(wǎng)絡(luò)中,輸出的圖像尺寸為227*227*3.
Conv-1,尺寸變?yōu)?5*55*96,池化層后變?yōu)?7*27*96。
Conv-2,尺寸變?yōu)?7*27*256,池化層后變?yōu)?3*13*256.
Conv-3,尺寸變?yōu)?3*13*384,經(jīng)過(guò)Conv-4和Conv-5變回13*13*256.
最后,MaxPool-3尺寸縮小至6*6*256.
圖像通過(guò)FC-1轉(zhuǎn)換為向量4096*1.通過(guò)FC-2尺寸未改變.最終,通過(guò)FC-3輸出1000*1的尺寸張量.
?
接下來(lái),計(jì)算每層的參數(shù)數(shù)量.
Conv Layer參數(shù)數(shù)量
在CNN中,每層有兩種類(lèi)型的參數(shù):weights?和biases.總參數(shù)數(shù)量為所有weights和biases的總和.
定義如下:
WC=卷積層的weights數(shù)量
BC=卷積層的biases數(shù)量
PC=所有參數(shù)的數(shù)量
K=核尺寸
N=核數(shù)量
C?=輸入圖像通道數(shù)
?
卷積層中,核的深度等于輸入圖像的通道數(shù).于是每個(gè)核有K*K個(gè)參數(shù).并且有N個(gè)核.由此得出以下的公式.
示例:AlexNet網(wǎng)絡(luò)中,第1個(gè)卷積層,輸入圖像的通道數(shù)(C)是3,核尺寸(K)是11*11,核數(shù)量是96.?該層的參數(shù)計(jì)算如下:
??計(jì)算出Conv-2, Conv-3, Conv-4, Conv-5?的參數(shù)分別為?614656 , 885120, 1327488?和884992.卷積層的總參數(shù)就達(dá)到3,747,200.
?
MaxPool Layer參數(shù)數(shù)量
沒(méi)有與MaxPool layer相關(guān)的參數(shù)量.尺寸,步長(zhǎng)和填充數(shù)都是超參數(shù).
?
Fully Connected (FC) Layer參數(shù)數(shù)量
在CNN中有兩種類(lèi)型的全連接層.第1種是連接到最后1個(gè)卷積層,另外1種的FC層是連接到其他的FC層.兩種情況我們分開(kāi)討論.
類(lèi)型1:連接到Conv Layer
定義如下:
Wcf= weights的數(shù)量
Bcf= biases的數(shù)量
O=?前卷積層的輸出圖像的尺寸
N?=?前卷積層的核數(shù)量
F?=?全連接層的神經(jīng)元數(shù)量
示例:?AlexNet網(wǎng)絡(luò)中第1個(gè)FC層連接至Conv Layer.該層的O為6,N為256,F為4096.
參數(shù)數(shù)目遠(yuǎn)大于所有Conv Layer的參數(shù)和.
?
類(lèi)型2:連接到FC Layer
定義如下:
Wff= weights的數(shù)量
Bff= biases的數(shù)量
Pff=?總參數(shù)的數(shù)量
F=?當(dāng)前FC層的神經(jīng)元數(shù)量
F-1?=?前FC層的神經(jīng)元數(shù)量
??
示例:AlexNet的最后1個(gè)全連接層, ??F-1=4096,F=1000?.
?
AlexNet網(wǎng)絡(luò)中張量(圖像)尺寸和參數(shù)數(shù)量
AlexNet網(wǎng)絡(luò)中總共有5個(gè)卷積層和3個(gè)全連接層.總共有62,378,344個(gè)參數(shù).以下是匯總表.
| 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 |
?
總結(jié)
以上是生活随笔為你收集整理的卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中的next()以及iter
- 下一篇: Conv1D和Conv2D的区别