Convolutional Neural Networks(CNN) #2 池化層(Pooling layer)

池化層在卷積神經網路(Convolutional Neural Networks)扮演的角色也很關鍵,它可以幫助我們縮小Feature map的大小(也就是降維),也可以用來強CNN萃取出來的特徵。本篇文章就是要介紹池化層(Pooling layer)的運算規則。

池化層的概念很簡單,但它仍有許多需要注意的屬性,像是與卷積層會用到的『移動步伐Stride』在池化層也會派上用場。

本篇內容中卷積神經網路的功能,同步存放於Github:https://github.com/PoLun-Wang/DL_practice_convolutional_neural_networks

池化層(Pooling layer)

這個部分我也使用較為易懂的2D convolution作為例子來說明池化層的運算規則,如下圖(1),參數設定為輸入Feature map$=(6\times6)$、卷積核Kernel$=(3\times3)$(綠色方框)、Stride$=1$。
紅色方框就是滑動視窗,用來從輸入Feature map中框選欲進行Pooling運算的矩陣,其中滑動視窗的大小必須與Kernel大小一致。
下圖(1)的例子是進行Max pooling運算,計算規則也非常簡單,就是從滑動視窗框選到的矩陣中挑出最大值作為計算結果。

除此之外,池化層一般來說幾乎不會用到Padding,而且池化層另一個特色就是不會產生需要訓練的參數。

CNN卷積神經網路 池化層 pooling layer 教學1圖(1):Max pooling 1

 

池化層的計算過程跟卷積層是一樣的,都是透過滑動視窗框選局部的數值進行運算。

CNN卷積神經網路 池化層 pooling layer 教學2圖(2):Max pooling 2

 

Max / Mean pooling

除了Max pooling之外,還有另一種是Mean pooling,也就是Average pooling,做法也很簡單,就是將滑動視窗框選到的矩陣值加總,然後計算平均即可,如下圖(3)。

CNN卷積神經網路 池化層 pooling layer 教學3
圖(3):Max pooling / Mean pooling 比較

 

Reference
  1. Andrew Ng – Convolution Neural Networks in Coursera
  2. (paper) A guide to convolution arithmetic for deep learning

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *