CNN理解筆記

轉載:http://www.javashuo.com/article/p-qhxvfizb-kv.html算法

概述

**卷積神經網絡(Convolutional Neural Network, CNN)相較於傳統的圖像處理算法的優勢之一在於,避免了對圖像複雜的前期預處理過程(提取人工特徵等),能夠直接輸入原始圖像。網絡

圖像處理中,每每會將圖像當作是一個或多個的二維向量,如MNIST手寫體圖片就能夠看作是一個28 × 28的二維向量(黑白圖片,只有一個顏色通道;若是是RGB表示的彩色圖片則有三個顏色通道,可表示爲三張二維向量)。傳統的神經網絡都是採用全鏈接的方式,即輸入層到隱藏層的神經元都是所有鏈接的,這樣作將致使參數量巨大,使得網絡訓練耗時甚至難以訓練,而CNN則經過**局部鏈接權值共享**等方法避免這一困難學習

卷積神經網絡CNN的結構通常包含這幾個層:.net

輸入層:用於數據的輸入 卷積層:使用卷積核進行特徵提取和特徵映射 激勵層:因爲卷積也是一種線性運算,所以須要增長非線性映射 池化層:進行下采樣,對特徵圖稀疏處理,減小數據運算量。 全鏈接層:一般在CNN的尾部進行從新擬合,減小特徵信息的損失 輸出層:用於輸出結果 固然中間還可使用一些其餘的功能層:3d

歸一化層(Batch Normalization):在CNN中對特徵的歸一化 切分層:對某些(圖片)數據的進行分區域的單獨學習 融合層:對獨立進行特徵學習的分支進行融合code

網絡結構

下圖是一個經典的CNN結構,稱爲**LeNet-5網絡**。orm

image

能夠看出,CNN中主要有兩種類型的網絡層,分別是卷積層池化/採樣層(Pooling)。卷積層的做用是提取圖像的各類特徵;池化層的做用是對原始特徵信號進行抽象,從而大幅度減小訓練參數,另外還能夠減輕模型過擬合的程度。blog

卷積層

卷積層是卷積核在上一級輸入層上經過逐一滑動窗口計算而得,卷積核中的每個參數都至關於傳統神經網絡中的權值參數,與對應的局部像素相鏈接,將卷積核的各個參數與對應的局部像素值相乘之和,(一般還要再加上一個偏置參數),獲得卷積層上的結果。以下圖所示。圖片

image

下面的動圖可以更好地解釋卷積過程:get

image

池化/採樣層

經過卷積層得到了圖像的特徵以後,理論上咱們能夠直接使用這些特徵訓練分類器(如softmax),可是這樣作將面臨巨大的計算量的挑戰,並且容易產生過擬合的現象。爲了進一步下降網絡訓練參數及模型的過擬合程度,咱們對卷積層進行**池化/採樣(Pooling)**處理。池化/採樣的方式一般有如下兩種:

  • Max-Pooling: 選擇Pooling窗口中的最大值做爲採樣值;
  • Mean-Pooling: 將Pooling窗口中的全部值相加取平均,以平均值做爲採樣值;

以下圖所示。

image

LeNet-5網絡詳解

以上較詳細地介紹了CNN的網絡結構和基本原理,下面介紹一個經典的CNN模型:LeNet-5網絡

image.png

image

image.png

image

image.png

image

image.png

LeNet-5網絡在MNIST數據集上的結果

進一步瞭解可參考:http://www.javashuo.com/article/p-zrhdrexh-mu.html

相關文章
相關標籤/搜索