偉大的,
我在 YouTube、Google 上到處搜索,還閱讀了一些文章和研究論文,但似乎找不到我問題的確切答案
我對卷積神經網路有幾個問題,我對這個問題感到困惑:為什么我們使用 MaxPooling 大小 2x2 為什么我們不使用任何其他大小,如 3x3、4x4 ... nxn(當然小于輸入),我們甚至可以使用除 2x2 以外的任何東西嗎?我的另一個問題是:為什么我們大多數時候總是使用 MaxPooling?它取決于影像嗎?例如,如果我們有一些嘈雜的影像,那么是否適合使用 MaxPooling 或者我們應該使用任何其他型別的池化?
謝謝!
uj5u.com熱心網友回復:
MaxPool2D 通過為輸入的每個通道在輸入視窗(大小由 pool_size 定義)上取最大值,沿其空間維度(高度和寬度)對其輸入進行下采樣。例如,如果我MaxPooling2D在這個陣列上應用 2x2:
array = np.array([
[[5],[8]],
[[7],[2]]
])
然后結果將是 8,這是該陣列中元素的最大值。
另一個例子,如果我MaxPooling2D在這個陣列上應用 2x2:
array = tf.constant([[[1.], [2.], [3.]],
[[4.], [5.], [6.]],
[[7.], [8.], [9.]]])
那么輸出將是這樣的:
([
[[5.], [6.]],
[[8.], [9.]]
])
這里MaxPooling2D所做的是它滑動了一個 2x2 視窗并取其最大值,從而導致輸入陣列沿其高度和寬度的尺寸減半。如果您仍然對它的作業方式有任何疑問,請從 keras和SO中進行檢查
現在很明顯MaxPool2D對輸入進行了下采樣,讓我們??回到你的問題 -
為什么到處都使用 2x2 MaxPooling 而不是 3x3 或 4x4?
好吧,原因是它減少了資料,MaxPooling2D在形狀為 (3,3,1) 的矩陣上應用 3x3 會產生一個 (1,1,1) 矩陣,而MaxPooling2D在形狀為 (3) 的矩陣上應用 2x2 ,3,1) 將產生一個 (2,2,1) 矩陣。顯然 (2,2,1) 矩陣比 (1,1,1) 形狀的矩陣可以保存更多的資料。通常,應用MaxPooling2D池化大小超過 2x2 的操作會導致大量資料丟失,因此選擇 2x2 是更好的選擇。MaxPooling2D這就是為什么你會在 ResNet50、VGG16 等中看到 2x2的“無處不在”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432433.html
