簡單介紹CNN卷積神經網絡的概念和原理。html
已經瞭解的小夥伴能夠跳轉到Tensorflow學習筆記No.4.2學習如和用Tensorflow實現簡單的卷積神經網絡。算法
卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它的人工神經元能夠響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。 網絡
卷積神經網絡一般包含如下幾種層:ide
1.1.1局部感知(Local Connectivity)函數
普通神經網絡把輸入層和隱含層進行「全鏈接(Full Connected)「的設計。從計算的角度來說,相對較小的圖像從整幅圖像中計算特徵是可行的。可是,若是是更大的圖像(如 96x96 的圖像),要經過這種全聯通網絡的這種方法來學習整幅圖像上的特徵,從計算角度而言,將變得很是耗時。學習
卷積層解決這類問題的一種簡單方法是對隱含單元和輸入單元間的鏈接加以限制:每一個隱含單元僅僅只能鏈接輸入單元的一部分。每一個隱含單元鏈接的輸入區域大小叫R神經元的感覺野(receptive field)。優化
因爲卷積層的神經元也是三維的,因此也具備深度。卷積層的參數包含一系列過濾器(filter),每一個過濾器訓練一個深度,有幾個過濾器輸出單元就具備多少深度。spa
具體以下圖所示,樣例輸入單元大小是32×32×3, 輸出單元的深度是5, 對於輸出單元不一樣深度的同一位置,與輸入圖片鏈接的區域是相同的,可是參數(過濾器)不一樣。設計
1.1.2空間排列(Spatial arrangement)3d
一個輸出單元的大小有如下三個量控制:depth, stride 和 zero-padding。
1.1.3卷積(Convolution)
這裏簡單介紹一下卷積的工做原理:
考慮一個大小爲5×5的圖像,和一個3×3的卷積核。這裏的卷積核共有9個參數。這種狀況下,卷積覈實際上有9個神經元,他們的輸出又組成一個3×3的矩陣,稱爲特徵圖。第一個神經元鏈接到圖像的第一個3×3的局部,第二個神經元則鏈接到第二個局部(注意,有重疊!就跟你的目光掃視時也是連續掃視同樣)。具體以下圖所示。
池化(pool)即下采樣(downsamples),目的是爲了減小特徵圖。池化操做對每一個深度切片獨立,規模通常爲 2*2,相對於卷積層進行卷積運算,池化層進行的運算通常有如下幾種:
* 最大池化(Max Pooling)。取4個點的最大值。這是最經常使用的池化方法。
* 均值池化(Mean Pooling)。取4個點的均值。
* 高斯池化。借鑑高斯模糊的方法。不經常使用。
* 可訓練池化。訓練函數 ff ,接受4個點爲輸入,出入1個點。不經常使用。
最多見的池化層是規模爲2*2, 步幅爲2,對輸入的每一個深度切片進行下采樣。每一個MAX操做對四個數進行,以下圖所示:
池化操做將保存深度大小不變。
若是池化層的輸入單元大小不是二的整數倍,通常採起邊緣補零(zero-padding)的方式補成2的倍數,而後再池化。
將卷積層與池化層中獲得的張量的維度進行變換,轉變成能夠進行分類的一維數據。
4.2中將介紹如何用Tensorflow實現CNN卷積神經網絡。