天天看點

卷積神經網絡-入門

√全連接配接 NN :每個神經元與前後相鄰層的每一個神經元都有連接配接關系,輸入是特征,輸出為預測的結果。

參數個數:∑(前層 × 後層 + 後層)

卷積神經網絡-入門

一張分辨率僅僅是 28x28 的黑白圖像,就有近 40 萬個待優化的參數。現實

生活中高分辨率的彩色圖像,像素點更多,且為紅綠藍三通道資訊。

待優化的參數過多,容易導緻模型過拟合為避免這種現象,實際應用中一般不會将原始圖檔直接喂入全連接配接網絡。

√在實際應用中,會先對原始圖像進行特征提取,把提取到的特征喂給全連接配接

網絡,再讓全連接配接網絡計算出分類評估值。

卷積神經網絡-入門

例:先将此圖進行多次特征提取,再把提取後的計算機可讀特征喂給全連接配接

網絡。

√ 卷積 Convolutional

卷積是一種有效提取圖檔特征的方法 。 一般用一個正方形卷積核,周遊圖檔

上的每一個像素點。圖檔與卷積 核 重合區域内 相對應的每一個像素值 乘卷積核

内相對應點的權重,然後求和, 再 加上偏置後,最後得到輸出圖檔中的一個像

素值

卷積神經網絡-入門

例:上面是 5x5x1 的灰階圖檔,1 表示單通道,5x5 表示分辨率,共有 5 行 5

列個灰階值。若用一個 3x3x1 的卷積核對此 5x5x1 的灰階圖檔進行卷積,偏置項

b=1,則求卷積的計算是:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=1(注

意不要忘記加偏置 1)。

輸出圖檔邊長=(輸入圖檔邊長–卷積核長+1)/步長,此圖為:(5 – 3 + 1)/ 1

= 3,輸出圖檔是 3x3 的分辨率,用了 1 個卷積核,輸出深度是 1,最後輸出的是

3x3x1 的圖檔。

√ 全零填充 Padding

有時會在輸入圖檔周圍進行全零填充,這樣可以保證輸出圖檔的尺寸和輸入

圖檔一緻。

卷積神經網絡-入門

例:在前面 5x5x1 的圖檔周圍進行全零填充,可使輸出圖檔仍保持 5x5x1 的

次元。這個全零填充的過程叫做 padding。

輸出資料體的尺寸=(W−F+2P)/S+1

W:輸入資料體尺寸,

F:卷積層中神經元感覺域,

S:步長,

P:零填充的數

量。

例:輸入是 7×7,濾波器是 3×3,步長為 1,填充為 0,那麼就能得到一個 5×5

的輸出。如果步長為 2,輸出就是 3×3。

如果輸入量是 32x32x3,核是 5x5x3,不用全零填充,輸出是(32-5+1)/1=28,

如果要讓輸出量保持在 32x32x3,可以對該層加一個大小為 2 的零填充。可以根

據需求計算出需要填充幾層零。32=(32-5+2P)/1 +1,計算出 P=2,即需填充 2層零。

卷積神經網絡-入門

√**使用 padding 和不使用 padding **

卷積神經網絡-入門

上一行公式是使用 padding 的輸出圖檔邊長,下一行公式是不使用 padding

的輸出圖檔邊長。公式如果不能整除,需要向上取整數。如果用全零填充,也就

是 padding=SAME。如果不用全零填充,也就是 padding=VALID。

√Tensorflow 給出的計算卷積函數

卷積神經網絡-入門

函數中要給出四個資訊:對輸入圖檔的描述、對卷積核的描述、對卷積核滑動步長的描述以及是否使用 padding

1) 對輸入圖檔的描述:用 batch 給出一次喂入多少張圖檔,每張圖檔的分

辨率大小,比如 5 行 5 列,以及這些圖檔包含幾個通道的資訊,如果是灰階圖

則為單通道,參數寫 1,如果是彩色圖則為紅綠藍三通道,參數寫 3。

2) 對卷積核的描述:要給出卷積核的行分辨率和列分辨率、通道數以及用

了幾個卷積核。比如上圖描述,表示卷積核行列分辨率分别為 3 行和 3 列,且是

1 通道的,一共有 16 個這樣的卷積核,卷積核的通道數是由輸入圖檔的通道數

決定的,卷積核的通道數等于輸入圖檔的通道數,是以卷積核的通道數也是 1。

一共有 16 個這樣的卷積核,說明卷積操作後輸出圖檔的深度是 16,也就是輸出

為 16 通道。

3 )對卷積核滑動步長的描述:上圖第二個參數表示橫向滑動步長,第三個

參數表示縱向滑動步長。第一個 1 和最後一個 1 這裡固定的。這句表示橫向縱向

都以 1 為步長。

4 )是否使用padding: :用的是VALID。注意這裡是以字元串的形式給出VALID。

√對多通道的圖檔求卷積

多數情況下,輸入的圖檔是 RGB 三個顔色組成的彩色圖,輸入的圖檔包含了

紅、綠、藍三層資料,卷積核的深度應該等于輸入圖檔的通道數,是以使用 3x3x3

的卷積核,最後一個 3 表示比對輸入圖像的 3 個通道,這樣這個卷積核有三層,

每層會随機生成 9 個待優化的參數,一共有 27 個待優化參數 w 和一個偏置 b。

卷積神經網絡-入門

對于彩色圖,按層分解開,可以直覺表示為上面這張圖,三個顔色分量: 紅色分量、綠色分量和藍色分量。

卷積計算方法和單層卷積核相似,卷積核為了比對紅綠藍三個顔色,把三層

的卷積核套在三層的彩色圖檔上,重合的 27 個像素進行對應點的乘加運算,最

後的結果再加上偏置項 b,求得輸出圖檔中的一個值。

這個 5x5x3 的輸入圖檔加了全零填充,使用 3x3x3 的卷積核,所有 27 個點與

對應的待優化參數相乘,乘積求和再加上偏置 b 得到輸出圖檔中的一個值 6。

卷積神經網絡-入門

針對上面這幅彩色圖檔,用 conv2d 函數實作可以表示為:

一次輸入 batch 張圖檔,輸入圖檔的分辨率是 5x5,是 3 通道的,卷積核是

3x3x3,一共有 16 個卷積核,這樣輸出的深度就是 16,核滑動橫向步長是 1,縱

向步長也是 1,padding 選擇 same,保證輸出是 5x5 分辨率。由于一共用了 16

個卷積核,是以輸出圖檔是 5x5x16。

√池化 Pooling

Tensorflow 給出了計算池化的函數。 最大池化用

tf.nn.max_pool

函數,平均

用 池化用

tf.nn.avg_pool

函數。

函數中要給出四個資訊,對輸入的描述、對池化核的描述、對池化核滑動步

用 長的描述和是否使用 padding

卷積神經網絡-入門

1 )對輸入的描述:給出一次輸入 batch 張圖檔、行列分辨率、輸入通道的個

數。

2) 對池化核的描述:隻描述行分辨率和列分辨率,第一個和最後一個參數

固定是 1。

3 )對池化核滑動步長的描述:隻描述橫向滑動步長和縱向滑動步長,第一

個和最後一個參數固定是 1。

4 )**是否使用 padding **:padding 可以是使用零填充 SAME 或者不使用零填充

VALID。

√舍棄 Dropout

卷積神經網絡-入門

在神經網絡訓練過程中,為了減少過多參數常使用 dropout 的方法,将一部

分神經元按照一定機率從神經網絡中舍棄。這種舍棄是臨時性的,僅在訓練時舍

棄一些神經元;在使用神經網絡時,會把所有的神經元恢複到神經網絡中。比如

上面這張圖,在訓練時一些神經元不參加神經網絡計算了。Dropout 可以有效減

少過拟合。

Tensorflow 提供的 的 dropout 的函數:用 tf.nn.dropout 函數。第一個參數連結

上一層的輸出,第二個參數給出神經元舍棄的機率。

在實際應用中 ,用 常常在前向傳播建構神經網絡時使用 dropout來減小過拟合加快模型的訓練速度。

繼續閱讀