卷積神經網絡入門(深度學習準備二)

一、卷積神經網絡組成

卷積神經網絡由 卷積層、池化層、全鏈接層組成,本文主要展現每個層次的組成以及基本參數運算法則。html

  • 卷積層(Convolution Layer)

   卷積層的主要做用是對輸入的數據進行特徵提取,而完成該功能的是卷積層中的卷積核(Filter),卷積核能夠當作是一個指定窗口大小的掃描器。掃描器經過一次又一次地掃描輸入的數據,來提取數據中的特徵。舉個例子,假設有一個 32*32*3 地圖像,其中 32*32 指圖像的高度和寬度, 3 指圖像的深度,即圖像有三個色彩通道(R: red、G: green、B: blue)。咱們定義一個3*3*3的卷積核,那麼 3*3 就是指卷積核的高度和寬度, 3 指卷積核的深度,一般卷積核的高度和深度爲 3*3 或者 5*5,深度同要是別的圖像。若是輸入的圖像是單色彩通道的,那麼卷積核的深度就是 1,以此類推。算法

   卷積核處理圖像矩陣的方法以下:網絡

 

 

     如上圖所示,輸入圖像是一個 4*4*1 的單色彩通道圖像,卷積核大小爲 2*2*1 ,步長爲1(即每移動一次,卷積核滑動的窗口位置變化),每一次卷積的操做過程就是將對應位置相乘,求和獲得輸出特徵圖矩陣的位置。ide

    對於第一個元素,假設輸入圖像矩陣爲W,卷積核矩陣爲X,輸出圖像矩陣爲Z,那麼:函數

    Z00=W00*X00+W01*X01+W10*X10+W11*X11;htm

    Z01=W01*X00+W02*X01+W11*X10+W12*X11;blog

    ……圖片

    Z22=W22*X00+W23*X01+W32*X10+W33*X11;get

    

    卷積效果能夠經過邊界像素填充方式提高。咱們在對輸入圖像進行卷積以前,有兩種邊界像素填充方式能夠選擇,分別是Valid和Same。Valid就是直接對輸入圖像進行卷積,不對輸入圖像進行任何前期處理和像素填充,這種方式可能會致使圖像中部分像素點不能被滑動窗口(卷積核)捕捉;Same方式則是在輸入圖像以前將輸入圖像的最外層加上指定層數的值全爲0的像素邊界,這樣可以使得輸入圖像的所有像素都能別滑動窗口(卷積核)捕捉。具體可參照下圖。input

    Valid模式,輸入圖像5*5*1,卷積核3*3*1,卷積核步長爲1:

 

    Same模式,輸入圖像7*7*1,卷積核3*3*1,卷積核步長爲2:

 

 

 

 

 (上圖轉載自http://www.javashuo.com/article/p-wjfdqyut-mb.html,做者gloomyfish

 

經過對卷積過程的計算,咱們能夠得出一個卷積的通用公式:

 

 

  其中W(Weight)和H(Height)分別表示圖像的寬度和高度,下標 input 表示輸入圖像的相關參數,output 表示輸出圖像的相關參數,filter 表示卷積核相關的參數,S表示卷積核的步長,P(Padding)表示在圖像邊緣增長的邊界層數。若是選擇的是 Same 模式,那麼 P 的值等於圖像增長的邊界層數;而 Valid 模式下,P = 0.

  用一個實例來講明:對於一個 7*7*1 的輸入圖像,圖像最外層使用了一層邊界像素填充,卷積核大小爲 3*3*1,步長爲1,使用的是Same模式,那麼輸出圖像的寬度和高度爲爲(7-3+2*1)/1 + 1 =7,深度同輸入圖像,即輸出圖像深度爲 1,單色彩通道。

  其中還能夠加入偏置,即如同前一篇博文所講(http://www.javashuo.com/article/p-kbtdzucw-ku.html),相似於這裏只計算了 z=WT*X,以後能夠再加入b做爲偏置使得圖像不通過原點。

  • 池化層

  池化層能夠當作是卷積神經網絡中的一種提取輸入數據的核心特徵的方式,不只實現了對數據的壓縮,還減小了參與模型運算的參數,從而提升了計算效率。池化層處理的輸入數據通常狀況下是通過卷積操做以後生成的特徵圖。經常使用的池化層方法是最大池化層和平均池化層,以下圖所示:

 

    池化層也須要定義一個相似於卷積核的滑動窗口,稱之爲目標特徵圖,而輸入的卷積層的原始輸入數據稱爲原特徵圖。目標特徵圖的寬度和高度、步長相似卷積核,在此再也不贅述,最大池化層就是將一個滑動窗口的最大值賦值給目標特徵圖相應位置。而平均池化層就是將一個滑動窗口內的數值求平均值,將平均值賦值給目標特徵圖對應位置。(平均分母爲滑動窗口內數的個數)

    一樣的,咱們也能夠總結出一個適用於池化層的通用公式:

    其中W(Weight)和H(Height)分別表示圖像的寬度和高度,下標 input 表示輸入圖像的相關參數,output 表示輸出圖像的相關參數,filter 表示卷積核相關的參數,S表示滑動窗口的步長。

    一樣的,舉個例子,由卷積層獲得某圖像的特徵圖爲 16*16*6 大小,池化層的滑動窗口大小爲 2*2*6,步長 stride 爲 2,因而能夠獲得目標特徵圖大小爲[(16-2)/2+1]*[(16-2)/2+1]*6=8*8*6,獲得的特徵圖寬度和高度比原特徵圖壓縮了近一半,這也印證了池化層的做用——最大限度地提取輸入的特徵圖的核心特徵,還能對輸入的特徵圖進行壓縮。

  • 全鏈接層

  全鏈接層主要做用是將輸入圖像在通過卷積和池化操做後提取的特徵進行壓縮(不難看出,卷積層提取特徵圖,池化層壓縮特徵圖並提取核心特徵,全鏈接層壓縮特徵),並根據壓縮的特徵完成模型的分類功能。

  舉個例子:假設對於一張圖片,咱們通過卷積和池化過程以後,獲得了特徵矩陣,大小爲1*3072,而全鏈接層的權重參數矩陣爲10*3072,即以下圖所示

  則在全鏈接以後,獲得的將是一個1*10的核心特徵矩陣,這10個參數已是一個分類的結果,再經激活函數的進一步處理,就能讓咱們的分類預測結果更加明顯。

 

加油!在禿頭的路上高歌猛進!

相關文章
相關標籤/搜索