cnn系列文章 --池化層和簡單卷積網路示例
阿新 • • 發佈:2018-12-09
出去吃了個飯,突然感覺好沒胃口,好落寞。。。。 哎,繼續吧 一句歌詞繼續中:
《霜雪千年》 苔綠青石板街 斑駁了流水般歲月 小酌三盞兩杯 理不清纏繞的情結
典型的卷積神經網路
- convolution (Conv) 卷積層
- pooling (pool) 池化層
- fully connected (FC) 全連線層
池化層
1. max pooling(最大池化)
簡單的說就是使用過濾器對影象進行區域分割,然後輸出每個區域的最大值。
比如下圖使用的過濾器,選擇步長為2,則然後輸出即的影象,每個畫素點的值為原影象中過濾器覆蓋區域的最大值
最大池化的直觀理解:
還記得垂直邊緣檢測的例子嗎,在邊緣處,輸出影象的值很大。也就是說,當輸出影象的值很大時,意味著提取了某些特徵。
而最大池化的操作就是,只要在任何一個象限中提取到某個特徵,就都會保留到最大池化的輸出結果中。如果提取到某個特徵,則保留其最大值,比如上圖中左上角的9,而如果為提取到特徵,則最大池化後的輸出仍很小,比如右上角的2.
在實際工作中,加入最大池化後,通常網路表現的會很好。
注意當有多個通道時:是對每一通道分別進行最大池化操作,不會改變影象的通道數目。
2.average pooling (平均池化)
顧名思義,就是在每個區域上求平均值,作為平均池化的輸出值
平均池化用的很少
總結
池化操作不需要訓練引數,只有兩個超引數:
常見的超引數有:
將影象的高度和寬度減半
很少用padding,即
input:
output:
卷積神經網路示例
引數設計收LeNet-5啟發。我的建議還是在紙上推導一下呢。
接下來看一下網路結構和引數:
來計算幾個引數: 我發現208這個引數數量有點沒太搞懂
不是嗎?
- 引數大多集中在全連線層
- 隨著網路層深度增加,啟用數量在減小,但是數量不能下降的太快,否則會影響網路的表現效能。
卷積神經網路的優勢
若是全連線層需要的引數大概是14 million。
- 引數共享 某一個特徵檢測器可以在所有影象上使用,大量減少引數數量
- 稀疏連線 每一個輸出畫素值緊依賴於輸入很小的輸入值,而非全連線層的所有輸入值。更容易發現區域性特徵
通過以上兩種方式,cnn結構大量減少引數數量。
接下來講解tensorflow卷積和池化兩個函式。