自己動手實作 pooling 運算
如前所述,CNN 往往包含大量參數。為了精簡表示並減少下一層的參數量,常會在神經網路的卷積層之間加入 pooling 層。若你想加快訓練,或是手邊資料不足以學到非常多的參數,這會很有幫助。
Pooling 層可以看作是一種特殊的卷積。對於輸入中的每個視窗,它會找出像素值的最大值,並且只傳遞這個像素。在本練習中,你會依據先前用來實作二維卷積的程式碼,撰寫你自己的最大池化(max pooling)運算。
本練習屬於課程
使用 Keras 進行影像建模
練習說明
- 以索引存取輸入陣列(
im),選取正確的視窗。 - 找出該視窗中的最大值。
- 將結果填入輸出陣列(
result)中對應的位置。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Result placeholder
result = np.zeros((im.shape[0]//2, im.shape[1]//2))
# Pooling operation
for ii in range(result.shape[0]):
for jj in range(result.shape[1]):
result[ii, jj] = np.max(____)