卷積神經網路引數計算及卷積層輸出尺寸計算

2022-09-07 23:06:23 字數 2287 閱讀 1340

一、卷積神經網路引數計算

cnn乙個牛逼的地方就在於通過感受野和權值共享減少了神經網路需要訓練的引數的個數,所謂權值共享就是同乙個feature map中神經元權值共享,該feature map中的所有神經元使用同乙個權值。因此引數個數與神經元的個數無關,只與卷積核的大小及feature map的個數相關。但是共有多少個連線個數就與神經元的個數相關了,神經元的個數也就是特徵圖的大小。

下面以最經典的lenet-5例子來逐層分析各層的引數及連線個數。

c1層是乙個卷積層,由6個特徵圖feature map構成。特徵圖中每個神經元與輸入為5*5的鄰域相連。特徵圖的大小為28*28,這樣能防止輸入的連線掉到邊界之外(32-5+1=28)。c1有156個可訓練引數(每個濾波器5*5=25個unit引數和乙個bias引數,一共6個濾波器,共(5*5+1)*6=156個引數),共156*(28*28)=122,304個連線。

s2層是乙個下取樣層,有6個14*14的特徵圖。特徵圖中的每個單元與c1中相對應特徵圖的2*2鄰域相連線。s2層每個單元的4個輸入相加,乘以乙個可訓練引數,再加上乙個可訓練偏置。每個單元的2*2感受野並不重疊,因此s2中每個特徵圖的大小是c1中特徵圖大小的1/4(行和列各1/2)。s2層有12(6*(1+1)=12)個可訓練引數和5880(14*14*(2*2+1)*6=5880)個連線。

c3層也是乙個卷積層,它同樣通過5x5的卷積核去卷積層s2,然後得到的特徵map就只有10x10個神經元,但是它有16種不同的卷積核,所以就存在16個特徵map了。 c3中每個特徵圖由s2中所有6個或者幾個特徵map組合而成。為什麼不把s2中的每個特徵圖連線到每個c3的特徵圖呢?原因有2點。第一,不完全的連線機制將連線的數量保持在合理的範圍內。第二,也是最重要的,其破壞了網路的對稱性。由於不同的特徵圖有不同的輸入,所以迫使他們抽取不同的特徵(希望是互補的)。

例如,存在的乙個方式是:c3的前6個特徵圖以s2中3個相鄰的特徵圖子集為輸入。接下來6個特徵圖以s2中4個相鄰特徵圖子集為輸入。然後的3個以不相鄰的4個特徵圖子集為輸入。最後乙個將s2中所有特徵圖為輸入。這樣c3層有1516(6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516)個可訓練引數和151600(10*10*1516=151600)個連線。

s4層是乙個下取樣層,由16個5*5大小的特徵圖構成。特徵圖中的每個單元與c3中相應特徵圖的2*2鄰域相連線,跟c1和s2之間的連線一樣。s4層有32個可訓練引數(每個特徵圖1個因子和乙個偏置16*(1+1)=32)和2000(16*(2*2+1)*5*5=2000)個連線。

c5層是乙個卷積層,有120個特徵圖。每個單元與s4層的全部16個單元的5*5鄰域相連。由於s4層特徵圖的大小也為5*5(同濾波器一樣),故c5特徵圖的大小為1*1(5-5+1=1):這構成了s4和c5之間的全連線。之所以仍將c5標示為卷積層而非全相聯層,是因為如果lenet-5的輸入變大,而其他的保持不變,那麼此時特徵圖的維數就會比1*1大。c5層有48120(120*(16*5*5+1)=48120由於與全部16個單元相連,故只加乙個偏置)個可訓練連線。

f6層有84個單元(之所以選這個數字的原因來自於輸出層的設計),與c5層全相連。有10164(84*(120*(1*1)+1)=10164)個可訓練引數。如同經典神經網路,f6層計算輸入向量和權重向量之間的點積,再加上乙個偏置。然後將其傳遞給sigmoid函式產生單元i的乙個狀態。

最後,輸出層由歐式徑向基函式(euclidean radial basis function)單元組成,每類乙個單元,每個有84個輸入。

二、神經網路時間複雜度和空間複雜度(引數量計算和計算量計算)

三、卷積層輸出尺寸計算

先定義幾個引數

則輸出為n*n,其中n = (w − f + 2p )/s+1。具體計算如下:

卷積中的特徵圖大小計算方式有兩種,分別是『valid』和『same』,卷積和池化都適用,除不盡的結果都向上取整。

1.如果計算方式採用'valid',則:

其中為輸出特徵圖的大小,

為輸入特徵圖的大小,f為卷積核大小,stride為卷積步長。

2.如果計算方式採用'same',輸出特徵圖的大小與輸入特徵圖的大小保持不變,

其中padding為特徵圖填充的圈數。若採用'same'方式,kernel_size=1時,padding=0;kernel_size=3時,padding=1;kernel_size=5時,padding=3,以此類推。

**:

卷積神經網路 卷積層

1 2 該部落格主要是對網上知識點的學習和整理,方便日後複習。侵刪。卷積神經網路 cnn 一般由輸入層 卷積層 啟用函式 池化層 全連線層組成,即input 輸入層 conv 卷積層 relu 啟用函式 pool 池化層 fc 全連線層 當我們給定乙個 x 的圖案,計算機怎麼識別這個圖案就是 x 呢...

卷積神經網路 卷積神經網路啟用層

在生物意義上的神經元中,只有前面的樹突傳遞的訊號的加權和值大於某乙個特定的閾值的時候,後面的神經元才會被啟用。簡單的說啟用函式的意義在於判定每個神經元的輸出 放在人臉識別卷積神經網路中來思考,卷積層的啟用函式的意義在於這一塊區域的特徵強度如果沒有達到一定的標準,就輸出0,表明這種特徵提取方式 卷積核...

卷積神經網路 定義卷積層

import torch in channels,out channels 5,10 in 決定卷積核的channel out 決定卷積核的個數 width,hight 100,100kernel size 3 卷積核的邊長 卷積核一般為奇數邊長正方形 batch size 1input torch...