開始使用免費開始

自己動手實作 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(____)
編輯並執行程式碼