導航:首頁 > 網路設置 > 卷積網路卷積核怎麼設置

卷積網路卷積核怎麼設置

發布時間:2023-10-31 00:12:00

㈠ 卷積神經網路

關於花書中卷積網路的筆記記錄於 https://www.jianshu.com/p/5a3c90ea0807 。

卷積神經網路(Convolutional Neural Network,CNN或ConvNet)是一種具有 局部連接、權重共享 等特性的深層前饋神經網路。卷積神經網路是受生物學上感受野的機制而提出。 感受野(Receptive Field) 主要是指聽覺、視覺等神經系統中一些神經元的特性,即 神經元只接受其所支配的刺激區域內的信號

卷積神經網路最早是主要用來處理圖像信息。如果用全連接前饋網路來處理圖像時,會存在以下兩個問題:

目前的卷積神經網路一般是由卷積層、匯聚層和全連接層交叉堆疊而成的前饋神經網路,使用反向傳播演算法進行訓練。 卷積神經網路有三個結構上的特性:局部連接,權重共享以及匯聚 。這些特性使卷積神經網路具有一定程度上的平移、縮放和旋轉不變性。

卷積(Convolution)是分析數學中一種重要的運算。在信號處理或圖像處理中,經常使用一維或二維卷積。

一維卷積經常用在信號處理中,用於計算信號的延遲累積。假設一個信號發生器每個時刻t 產生一個信號 ,其信息的衰減率為 ,即在 個時間步長後,信息為原來的 倍。假設 ,那麼在時刻t收到的信號 為當前時刻產生的信息和以前時刻延遲信息的疊加:

我們把 稱為 濾波器(Filter)或卷積核(Convolution Kernel) 。假設濾波器長度為 ,它和一個信號序列 的卷積為:

信號序列 和濾波器 的卷積定義為:

一般情況下濾波器的長度 遠小於信號序列長度 ,下圖給出一個一維卷積示例,濾波器為 :

二維卷積經常用在圖像處理中。因為圖像為一個兩維結構,所以需要將一維卷積進行擴展。給定一個圖像 和濾波器 ,其卷積為:

下圖給出一個二維卷積示例:

注意這里的卷積運算並不是在圖像中框定卷積核大小的方框並將各像素值與卷積核各個元素相乘並加和,而是先把卷積核旋轉180度,再做上述運算。

在圖像處理中,卷積經常作為特徵提取的有效方法。一幅圖像在經過卷積操作後得到結果稱為 特徵映射(Feature Map)

最上面的濾波器是常用的高斯濾波器,可以用來對圖像進行 平滑去噪 ;中間和最下面的過濾器可以用來 提取邊緣特徵

在機器學習和圖像處理領域,卷積的主要功能是在一個圖像(或某種特徵)上滑動一個卷積核(即濾波器),通過卷積操作得到一組新的特徵。在計算卷積的過程中,需要進行卷積核翻轉(即上文提到的旋轉180度)。 在具體實現上,一般會以互相關操作來代替卷積,從而會減少一些不必要的操作或開銷。

互相關(Cross-Correlation)是一個衡量兩個序列相關性的函數,通常是用滑動窗口的點積計算來實現 。給定一個圖像 和卷積核 ,它們的互相關為:

互相關和卷積的區別僅在於卷積核是否進行翻轉。因此互相關也可以稱為不翻轉卷積 。當卷積核是可學習的參數時,卷積和互相關是等價的。因此,為了實現上(或描述上)的方便起見,我們用互相關來代替卷積。事實上,很多深度學習工具中卷積操作其實都是互相關操作。

在卷積的標準定義基礎上,還可以引入濾波器的 滑動步長 零填充 來增加卷積多樣性,更靈活地進行特徵抽取。

濾波器的步長(Stride)是指濾波器在滑動時的時間間隔。

零填充(Zero Padding)是在輸入向量兩端進行補零。

假設卷積層的輸入神經元個數為 ,卷積大小為 ,步長為 ,神經元兩端各填補 個零,那麼該卷積層的神經元數量為 。

一般常用的卷積有以下三類:

因為卷積網路的訓練也是基於反向傳播演算法,因此我們重點關注卷積的導數性質:

假設 。

, , 。函數 為一個標量函數。

則由 有:

可以看出, 關於 的偏導數為 和 的卷積

同理得到:

當 或 時, ,即相當於對 進行 的零填充。從而 關於 的偏導數為 和 的寬卷積

用互相關的「卷積」表示,即為(注意 寬卷積運算具有交換性性質 ):

在全連接前饋神經網路中,如果第 層有 個神經元,第 層有 個神經元,連接邊有 個,也就是權重矩陣有 個參數。當 和 都很大時,權重矩陣的參數非常多,訓練的效率會非常低。

如果採用卷積來代替全連接,第 層的凈輸入 為第 層活性值 和濾波器 的卷積,即:

根據卷積的定義,卷積層有兩個很重要的性質:

由於局部連接和權重共享,卷積層的參數只有一個m維的權重 和1維的偏置 ,共 個參數。參數個數和神經元的數量無關。此外,第 層的神經元個數不是任意選擇的,而是滿足 。

卷積層的作用是提取一個局部區域的特徵,不同的卷積核相當於不同的特徵提取器。

特徵映射(Feature Map)為一幅圖像(或其它特徵映射)在經過卷積提取到的特徵,每個特徵映射可以作為一類抽取的圖像特徵。 為了提高卷積網路的表示能力,可以在每一層使用多個不同的特徵映射,以更好地表示圖像的特徵。

在輸入層,特徵映射就是圖像本身。如果是灰度圖像,就是有一個特徵映射,深度 ;如果是彩色圖像,分別有RGB三個顏色通道的特徵映射,深度 。

不失一般性,假設一個卷積層的結構如下:

為了計算輸出特徵映射 ,用卷積核 分別對輸入特徵映射 進行卷積,然後將卷積結果相加,並加上一個標量偏置 得到卷積層的凈輸入 再經過非線性激活函數後得到輸出特徵映射 。

在輸入為 ,輸出為 的卷積層中,每個輸出特徵映射都需要 個濾波器以及一個偏置。假設每個濾波器的大小為 ,那麼共需要 個參數。

匯聚層(Pooling Layer)也叫子采樣層(Subsampling Layer),其作用是進行特徵選擇,降低特徵數量,並從而減少參數數量。

常用的匯聚函數有兩種:

其中 為區域 內每個神經元的激活值。

可以看出,匯聚層不但可以有效地減少神經元的數量,還可以使得網路對一些小的局部形態改變保持不變性,並擁有更大的感受野。

典型的匯聚層是將每個特徵映射劃分為 大小的不重疊區域,然後使用最大匯聚的方式進行下采樣。匯聚層也可以看做是一個特殊的卷積層,卷積核大小為 ,步長為 ,卷積核為 函數或 函數。過大的采樣區域會急劇減少神經元的數量,會造成過多的信息損失。

一個典型的卷積網路是由卷積層、匯聚層、全連接層交叉堆疊而成。

目前常用卷積網路結構如圖所示,一個卷積塊為連續 個卷積層和 個匯聚層( 通常設置為 , 為 或 )。一個卷積網路中可以堆疊 個連續的卷積塊,然後在後面接著 個全連接層( 的取值區間比較大,比如 或者更大; 一般為 )。

目前,整個網路結構 趨向於使用更小的卷積核(比如 和 )以及更深的結構(比如層數大於50) 。此外,由於卷積的操作性越來越靈活(比如不同的步長),匯聚層的作用變得也越來越小,因此目前比較流行的卷積網路中, 匯聚層的比例也逐漸降低,趨向於全卷積網路

在全連接前饋神經網路中,梯度主要通過每一層的誤差項 進行反向傳播,並進一步計算每層參數的梯度。在卷積神經網路中,主要有兩種不同功能的神經層:卷積層和匯聚層。而參數為卷積核以及偏置,因此 只需要計算卷積層中參數的梯度。

不失一般性,第 層為卷積層,第 層的輸入特徵映射為 ,通過卷積計算得到第 層的特徵映射凈輸入 ,第 層的第 個特徵映射凈輸入

由 得:

同理可得,損失函數關於第 層的第 個偏置 的偏導數為:

在卷積網路中,每層參數的梯度依賴其所在層的誤差項 。

卷積層和匯聚層中,誤差項的計算有所不同,因此我們分別計算其誤差項。

第 層的第 個特徵映射的誤差項 的具體推導過程如下:

其中 為第 層使用的激活函數導數, 為上采樣函數(upsampling),與匯聚層中使用的下采樣操作剛好相反。如果下采樣是最大匯聚(max pooling),誤差項 中每個值會直接傳遞到上一層對應區域中的最大值所對應的神經元,該區域中其它神經元的誤差項的都設為0。如果下采樣是平均匯聚(meanpooling),誤差項 中每個值會被平均分配到上一層對應區域中的所有神經元上。

第 層的第 個特徵映射的誤差項 的具體推導過程如下:

其中 為寬卷積。

LeNet-5雖然提出的時間比較早,但是是一個非常成功的神經網路模型。基於LeNet-5 的手寫數字識別系統在90年代被美國很多銀行使用,用來識別支票上面的手寫數字。LeNet-5 的網路結構如圖:

不計輸入層,LeNet-5共有7層,每一層的結構為:

AlexNet是第一個現代深度卷積網路模型,其首次使用了很多現代深度卷積網路的一些技術方法,比如採用了ReLU作為非線性激活函數,使用Dropout防止過擬合,使用數據增強來提高模型准確率等。AlexNet 贏得了2012 年ImageNet 圖像分類競賽的冠軍。

AlexNet的結構如圖,包括5個卷積層、3個全連接層和1個softmax層。因為網路規模超出了當時的單個GPU的內存限制,AlexNet 將網路拆為兩半,分別放在兩個GPU上,GPU間只在某些層(比如第3層)進行通訊。

AlexNet的具體結構如下:

在卷積網路中,如何設置卷積層的卷積核大小是一個十分關鍵的問題。 在Inception網路中,一個卷積層包含多個不同大小的卷積操作,稱為Inception模塊。Inception網路是由有多個inception模塊和少量的匯聚層堆疊而成

v1版本的Inception模塊,採用了4組平行的特徵抽取方式,分別為1×1、3× 3、5×5的卷積和3×3的最大匯聚。同時,為了提高計算效率,減少參數數量,Inception模塊在進行3×3、5×5的卷積之前、3×3的最大匯聚之後,進行一次1×1的卷積來減少特徵映射的深度。如果輸入特徵映射之間存在冗餘信息, 1×1的卷積相當於先進行一次特徵抽取

㈡ 卷積神經網路參數解析

(1)現象:

        (1-1)一次性將batch數量個樣本feed神經網路,進行前向傳播;然後再進行權重的調整,這樣的一整個過程叫做一個回合(epoch),也即一個batch大小樣本的全過程就是一次迭代。

        (1-2)將訓練數據分塊,做成批(batch training)訓練可以將多個訓練數據元的loss function求和,使用梯度下降法,最小化 求和後的loss function ,進而對神經網路的參數進行優化更新

(2)一次迭代:包括前向傳播計算輸出向量、輸出向量與label的loss計算和後向傳播求loss對權重向量 w 導數(梯度下降法計算),並實現權重向量 w 的更新。

(3)優點:

        (a)對梯度向量(代價函數對權值向量 w 的導數)的精確估計,保證以最快的速度下降到局部極小值的收斂性;一個batch一次梯度下降;

        (b)學習過程的並行運行;

        (c)更加接近隨機梯度下降的演算法效果;

        (d)Batch Normalization 使用同批次的統計平均和偏差對數據進行正則化,加速訓練,有時可提高正確率 [7]

(4)現實工程問題:存在計算機存儲問題,一次載入的batch大小受到內存的影響;

(5)batch參數選擇:

        (5-1)從收斂速度的角度來說,小批量的樣本集合是最優的,也就是我們所說的mini-batch,這時的batch size往往從幾十到幾百不等,但一般不會超過幾千

        (5-2)GPU對2的冪次的batch可李叢核以發揮更佳的性能,因此設置成16、32、64、128...時往往要比設置為整10、整100的倍數時表現更優

    (6)4種加速批鄭槐梯度下降的方法 [8] :

        (6-1)使用動量-使用權重的 速度 而非 位置 來改變權重。

        (6-2)針對不同權重參數使用不同學習率。

        (6-3)RMSProp-這是Prop 的均方根 ( Mean Square ) 改進形式,Rprop 僅僅使用梯度的符號,RMSProp 是其針對 Mini-batches 的平均化版本

        (6-4)利用曲率信息的最優化方法。

(1)定義:運用梯度下降演算法優化loss成本函數時,權重向量的更新規則中,在梯度項前會乘以一個系數,這個系數就叫學習速率η

(2)效果:

        (2-1)學習率η越小,每次迭代權值向量變化小,學習速度慢,軌跡在權值空間中較光滑,收斂慢;

        (2-2)學習率η越大,每次迭代權值向量變化大,學習速度快,但是有可能使變化處於震盪中,無法收斂;

    (3)處理方法:

        (3-1)既要加快學習速度又要保持穩定的方法修改delta法哪掘則,即添加動量項。

    (4)選擇經驗:

        (4-1)基於經驗的手動調整。 通過嘗試不同的固定學習率,如0.1, 0.01, 0.001等,觀察迭代次數和loss的變化關系,找到loss下降最快關系對應的學習率。

        (4-2)基於策略的調整。

                (4-2-1)fixed 、exponential、polynomial

                (4-2-2)自適應動態調整。adadelta、adagrad、ftrl、momentum、rmsprop、sgd

    (5)學習率η的調整:學習速率在學習過程中實現自適應調整(一般是衰減)

        (5-1)非自適應學習速率可能不是最佳的。

        (5-2)動量是一種自適應學習速率方法的參數,允許沿淺方向使用較高的速度,同時沿陡峭方向降低速度前進

        (5-3)降低學習速率是必要的,因為在訓練過程中,較高學習速率很可能陷入局部最小值。

參考文獻:

[1]  Simon Haykin. 神經網路與機器學習[M]. 機械工業出版社, 2011.

[2]   訓練神經網路時如何確定batch的大小?

[3]   學習筆記:Batch Size 對深度神經網路預言能力的影響  

[4]   機器學習演算法中如何選取超參數:學習速率、正則項系數、minibatch size.  http://blog.csdn.net/u012162613/article/details/44265967

[5]   深度學習如何設置學習率 . http://blog.csdn.net/mao_feng/article/details/52902666

[6]   調整學習速率以優化神經網路訓練. https://zhuanlan.hu.com/p/28893986

[7]   機器學習中用來防止過擬合的方法有哪些

[8]   Neural Networks for Machine Learning by Geoffrey Hinton .

[9]   如何確定卷積神經網路的卷積核大小、卷積層數、每層map個數

[10]   卷積神經網路的卷積核大小、卷積層數、每層map個數都是如何確定下來的呢?

㈢ Lecture 9 卷積神經網路架構

首先回顧一下在數字識別領域有巨大成功的LeNet-5,該網路結構為 [CONV-POOL-CONV-POOL-FC-FC]。卷積層使用5x5的卷積核,步長為1;池化層使用2x2的區域,步長為2;後面是全連接層。如下圖所示:

而2012年的 AlexNet 是第一個在ImageNet大賽上奪冠的大型CNN網路,它的結構和LeNet-5很相似,只是層數變多了——[CONV1-MAX POOL1-NORM1-CONV2-MAX POOL2-NORM2-CONV3-CONV4-CONV5-Max POOL3-FC6-FC7-FC8],共有5個卷積層、3個池化層、2個歸一化層和三個全連接層。如下圖所示:

之所以分成上下兩個部分,是因為當時的GPU容量太小,只能用兩個來完成。還有一些細節是:

AlexNet奪得ImageNet大賽2012的冠軍時,將正確率幾乎提高了10%,2013年的冠軍是ZFNet,和AlexNet使用相同的網路架構,只是對超參數進一步調優:

這樣將錯誤率從16.4%降低到11.7%

14年的冠亞軍GoogLeNet和VGG分別有22層和19層,下面來分別介紹。

VGG 相對於AlexNet使用更小的卷積核,層數也更深。VGG有16層和19層兩種。卷積核只使用3x3,步長為1,pad為1;池化區域2x2,步長為2。

那麼為什麼使用3x3的小卷積核呢?

下面看一下VGG-16的參數和內存使用情況:

VGG網路的一些細節是:

下面來看一下分類的第一名,GoogLeNet。

先說明 GoogLeNet 的一些細節:

「Inception」模塊 是一種設計的比較好的區域網拓撲結構,然後將這些模塊堆疊在一起。

這種拓撲結構對來自前一層的輸入,並行應用多種不同的濾波操作,比如1x1卷積、3x3卷積、5x5卷積和3x3池化。然後將所有濾波器的輸出在深度上串聯在一起。如下圖所示:

但是這種結構的一個問題是計算復雜度大大增加。比如考慮下面的網路設置

輸入為28x28x256,而串聯後的輸出為28x28x672。(假設每個濾波操作都通過零填充保持輸入尺寸)並且運算花費也非常高:

由於池化操作會保持原輸入的深度,所以網路的輸出一定會增加深度。解決辦法是在進行卷積操作前添加一個「瓶頸層」,該層使用1x1卷積,目的是保留原輸入空間尺寸的同時,減小深度,只要卷積核的數量小於原輸入的深度即可。

使用這種結構,同樣的網路參數設置下,的確會減少計算量:

最終得到的輸出為28x28x480。此時總運算量為:

Inception mole堆疊成垂直結構,這里方便描述,將模型水平放置:

所以含參數的層總計3+18+1 = 22層。此外,橙色部分的層不計入總層數,這兩塊的結構都是:AveragePool 5x5+3(V) - Conv 1x1+1(S) - FC - FC - SoftmaxActivation - Output。「該相對較淺的網路在此分類任務上的強大表現表明,網路中間層產生的特徵應該是非常有區別性的。 通過添加連接到這些中間層的輔助分類器,我們期望在分類器的較低階段中鼓勵區分,增加回傳的梯度信號,並提供額外的正則化。 這些輔助分類器採用較小的卷積核,置於第三和第六個Inception mole的輸出之上。 在訓練期間,它們的損失會加到折扣權重的網路總損失中(輔助分類的損失加權為0.3)。 在預測時,這些輔助網路被丟棄。」——引自原論文

從2015年開始,網路的層數爆發式的增長,15-17年的冠軍都是有152層,開始了「深度革命」!

ResNet 是一種非常深的網路,使用了殘差連接。細節是:

表現這么好的ResNet僅僅是因為深嗎?答案是否定的,研究表明一個56層的卷積層堆疊網路訓練誤差和測試誤差都比一個20層的網路要大,並且不是過擬合的原因,而是更深的網路優化更難。但是一個更深的模型至少能和一個較淺的模型表現一樣好,如果想把一個較淺的層變成較深的層,可以用下面的方式來構建:將原來比較淺的層拷貝到較深的層中,然後添加一些等於本身的映射層。現在較深的模型可以更好的學習。

ResNet通過使用多個有參層來學習輸入與輸入輸出之間的 殘差映射( resial mapping ) ,而非像一般CNN網路(如AlexNet/VGG等)那樣使用有參層來直接學習輸入輸出之間的 底層映射( underlying mapping)

若將輸入設為X,將某一有參網路層映射設為H,那麼以X為輸入的該層的輸出將為H(X)。通常的CNN網路會直接通過訓練學習出參數函數H的表達式,從而直接得到 X 到 H(X) 的映射。而 殘差學習 則是致力於使用多個有參網路層來學習輸入到輸入、輸出間的殘差(H(X) - X)的映射,即學習 X -> (H(X) - X) ,然後加上X的 自身映射(identity mapping) 。也就是說網路的輸出仍然是 H(X) - X + X = H(X),只是學習的只是 (H(X) - X),X部分直接是本身映射。

殘差學習單元通過本身映射的引入在輸入、輸出之間建立了一條直接的關聯通道,從而使得強大的有參層集中精力學習輸入、輸出之間的殘差。一般我們用 來表示殘差映射,那麼殘差學習單元的輸出即為: 。當輸入、輸出通道數相同時,自然可以直接使用 X 進行相加。而當它們之間的通道數目不同時,我們就需要考慮建立一種有效的自身映射函數從而可以使得處理後的輸入 X 與輸出 Y 的通道數目相同即 。

當X與Y通道數目不同時,有兩種自身映射方式。一種是簡單地將X相對Y缺失的通道直接補零從而使其能夠相對齊,另一種則是通過使用1x1的卷積來表示 Ws 映射從而使得最終輸入與輸出的通道一致。

實驗表明使用一般意義上的有參層來直接學習殘差比直接學習輸入、輸出間映射要容易得多(收斂速度更快),也有效得多(可通過使用更多的層來達到更高的分類精度)。比如在極端情況下,如果自身映射是最優的,那麼將殘差設為零比通過使用一堆非線性層進行自身映射更容易。

完整的網路結構如下:

對於ResNet-50+的網路,為提高計算效率,使用類似GoogLeNet的「瓶頸層」。像Inception模塊那樣通過使用1x1卷積來巧妙地縮減或擴張特徵圖維度從而使得3x3 卷積的卷積核數目不受上一層輸入的影響,它的輸出也不會影響到下一層。不過它純是為了節省計算時間進而縮小整個模型訓練所需的時間而設計的,對最終的模型精度並無影響。

ResNet的實際訓練如下:

實際的訓練效果為可以堆疊很多的層而不使准確率下降:152在ImageNet上, 1202層在CIFAR上。現在和預想中的一致,網路越深,訓練准確率越高。橫掃了2015年所有的獎項,第一次超過人類的識別率。

下面左圖通過Top1准確率來比較各種網路的准確性;右圖是不同網路的運算復雜度,橫軸為計算量,圓圈大小表示內存佔用。其中 Inception-v4是 Resnet + Inception。

圖中可以看出:

還可以比較前向傳播時間和功率消耗:

㈣ 卷積神經網路CNN(Convolutional Neural Network)

上圖計算過程為,首先我們可以將右邊進行卷積的可以稱為過濾器也可以叫做核,覆蓋到左邊第一個區域,然後分別按照對應位置相乘再相加,3*1+1*1+2*1+0*0+0*0+0*0+1*(-1)+8*(-1)+2*(-1)=-5;
按照上述的計算方法逐步按右移一個步長(步長可以設定為1,2,...等),然後按往下移,逐漸計算相應的值,得出最終的值。

如上圖顯示,對於第一個圖像矩陣對應的圖,一邊是白色,一邊是黑色,那麼中間就會存在一個垂直的邊緣,我們可以選擇一個垂直邊緣檢測過濾器,如乘法右邊的矩陣,那麼兩者做卷積後得出的圖會顯示如等號右邊的結果矩陣對應的灰度圖中間會有一個白色的中間帶,也就是檢測出來的邊緣,那為什麼感覺中間邊緣帶會比較寬呢?而不是很細的一個局域呢?原因是我們輸入的圖像只有6*6,過於小了,如果我們選擇輸出更大的尺寸的圖,那麼結果來說就是相對的一個細的邊緣檢測帶,也就將我們的垂直邊緣特徵提取出來了。
上述都是人工選擇過濾器的參數,隨著神經網路的發展我們可以利用反向傳播演算法來學習過濾器的參數

我們可以將卷積的顧慮器的數值變成一個參數,通過反向傳播演算法去學習,這樣學到的過濾器或者說卷積核就能夠識別到很多的特徵,而不是依靠手工選擇過濾器。

- padding 操作,卷積經常會出現兩個問題:
1.每經過一次卷積圖像都會縮小,如果卷積層很多的話,後面的圖像就縮的很小了;
2.邊緣像素利用次數只有一次,很明顯少於位於中間的像素,因此會損失邊緣圖像信息。
為了解決上述的問題,我們可以在圖像邊緣填充像素,也就是 padding 操作了。

如果我們設置在圖像邊緣填充的像素數為p,那麼經過卷積後的圖像是:(n+2p-f+1)x(n+2p-f+1).
如何去選擇p呢
通常有兩種選擇:
-Valid:也就是說不填充操作(no padding),因此如果我們有nxn的圖像,fxf的過濾器,那麼我們進行卷積nxn fxf=(n-f+1)x(n-f+1)的輸出圖像;
-Same:也就是填充後是輸出圖像的大小的與輸入相同,同樣就有(n+2p)x(n+2p)
fxf=nxn,那麼可以算,n+2p-f+1=n,得到p=(f-1)/2。
通常對於過濾器的選擇有一個默認的准則就是選擇過濾器的尺寸是奇數的過濾器。
- 卷積步長設置(Strided COnvolution)
卷積步長也就是我們進行卷積操作時,過濾器每次移動的步長,上面我們介紹的卷積操作步長默認都是1,也就是說每次移動過濾器時我們是向右移動一格,或者向下移動一格。
但是我們可以對卷積進行步長的設置,也就是我們能夠對卷積移動的格數進行設置。同樣假如我們的圖像是nxn,過濾器是fxf,padding設置是p,步長strided設置為s,那麼我們進行卷積操作後輸出的圖像為((n+2p-f)/s+1)x((n+2p-f)/s+1),那麼這樣就會出現一個問題,如果計算結果不是整數怎麼辦?

一般是選擇向下取整,也就是說明,只有當我們的過濾器完全在圖像上能夠覆蓋時才對它進行計算,這是一個慣例。
實際上上述所述的操作在嚴格數學角度來說不是卷積的定義,卷積的定義上我們計算的時候在移動步長之前也就是對應元素相乘之前是需要對卷積核或者說我們的過濾器進行鏡像操作的,經過鏡像操作後再把對應元素進行相乘這才是嚴格意義上的卷積操作,在數學角度上來說這個操作不算嚴格的卷積操作應該是屬於互相關操作,但是在深度學習領域中,大家按照慣例都省略了反轉操作,也把這個操作叫做卷積操作

我們知道彩色圖像有RGB三個通道,因此對於輸入來說是一個三維的輸入,那麼對三維輸入的圖像如何進行卷積操作呢?

例子,如上圖我們輸入圖像假設為6×6×3,3代表有RGB三個通道channel,或者可以叫depth深度,過濾器的選擇為3×3×3,其中需要規定的是,顧慮器的channel必須與輸入圖像的channel相同,長寬沒有限制,那麼計算過程是,我們將過濾器的立體覆蓋在輸入,這樣對應的27個數對應相乘後相加得到一個數,對應到我們的輸出,因此這樣的方式進行卷積後我們得出的輸出層為4×4×1。如果我們有多個過濾器,比如我們分別用兩個過濾器一個提取垂直特徵,一個提取水平特徵,那麼輸出圖4×4×2 。也就是代表我們輸出的深度或者說通道與過濾器的個數是相等的。

第l層的卷積標記如下:

加入我們的過濾器是3×3×3規格的,如果我們設定10個過濾器,那麼需要學習的參數總數為每個過濾器為27個參數然後加上一個偏差bias那麼每個過濾器的參數為28個,所以十個過濾器的參數為280個。從這里也就可以看出,不管我們輸入的圖片大小是多大,我們都只需要計算這些參數,因此參數共享也就很容易理解了。

為了縮減模型的大小,提高計算速度,同時提高所提取特徵的魯棒性,我們經常會使用池化層。池化層的計算方式與卷積類似,只是我們需要對每一個通道都進行池化操作。
池化的方式一般有兩種:Max Pooling和Average Pooling。

上面為Max Pooling,那麼計算方法與卷積類似,首先設定超參數比如過濾器的大小與步長,然後覆蓋到對應格子上面,用最大值取代其值作為輸出的結果,例如上圖為過濾器選擇2×2,步長選擇為2,因此輸出就是2×2的維度,每個輸出格子都是過濾器對應維度上輸入的最大值。如果為平均池化,那麼就是選擇其間的平均值作為輸出的值。
因此從上面的過程我們看到,通過池化操作能夠縮小模型,同時能讓特徵值更加明顯,也就提高了提取特徵的魯棒性。

閱讀全文

與卷積網路卷積核怎麼設置相關的資料

熱點內容
網路t0t1是什麼意思 瀏覽:414
進手機軟體出現網路錯誤 瀏覽:966
wifi已連接但是本地顯示網路 瀏覽:109
隔壁裝了寬頻影響手機網路嗎 瀏覽:27
手機怎麼操控家裡網路 瀏覽:52
無錫網路公司哪個好 瀏覽:547
手機共享網路電腦顯示受限 瀏覽:983
我要看網路的3多少 瀏覽:917
網路服務中心有哪些專業 瀏覽:854
網路安全公司如何運作 瀏覽:238
常州計算機網路設備選購 瀏覽:780
信號好網路好的手機有哪些 瀏覽:896
中國電信使命網路安全 瀏覽:78
手機網路快慢是手機哪個控制 瀏覽:58
網路和虛擬化哪個好 瀏覽:708
王者榮耀哪個運營商的網路穩定 瀏覽:993
聚焦網路安全活動的目的 瀏覽:888
物聯網卡移動網路狀態斷開 瀏覽:506
網路用詞制杖是什麼意思 瀏覽:701
愛普生3158清除網路設置 瀏覽:239

友情鏈接