Conv-Neural-Network
卷積層:填充還是不填充?
AlexNet 架構使用零填充,如圖所示。但是,論文中沒有解釋為什麼要引入這種填充。
Standford CS 231n 課程教我們使用填充來保持空間大小:
我很好奇這是否是零填充的唯一原因?誰能解釋零填充背後的基本原理?謝謝!
我問的原因
假設我不需要保留空間大小。我可以只刪除填充然後不損失性能嗎?我知道隨著我們進入更深的層,它會導致空間大小的快速減小,但我也可以通過移除池化層來權衡這一點。
填充很重要的原因有兩個:
- 如果我們保留
height
andwidth
並且在從一層到另一層時不必過多擔心張量維度,則設計網絡會更容易,因為維度只會“起作用”。- 它允許我們設計更深層次的網絡。如果沒有填充,體積大小的減小會過快地減小。
- 填充實際上通過在邊界處保留信息來提高性能。
引用斯坦福講座:“除了上述在 CONV 之後保持空間大小不變的好處之外,這樣做實際上可以提高性能。如果 CONV 層不對輸入進行零填充並且只執行有效的捲積,那麼每次 CONV 後體積會減少少量,並且邊界處的信息會被“沖走”得太快。” -來源
- 正如@dontloo 已經說過的那樣,新的網絡架構需要將捲積層與 1x1、3x3 和 5x5 過濾器連接起來,如果它們不使用填充是不可能的,因為尺寸不匹配。檢查這個 inception 模塊的圖像,以更好地理解為什麼填充在這裡有用。