自分でプーリング演算を書いてみましょう
これまでに見たように、CNN には非常に多くのパラメータが含まれることがあります。プーリング層は、ニューラルネットワークの畳み込み層の間に挿入され、出力を要約して圧縮し、次の層で必要となるパラメータ数を減らすためによく使われます。これにより、学習をより速く進めたい場合や、非常に多くのパラメータを学習するだけのデータがない場合に役立ちます。
プーリング層は、ある種の畳み込みとして説明できます。入力の各ウィンドウに対して最大の画素値を見つけ、その画素だけを通過させます。本演習では、以前に2次元の畳み込み演算を書くために使用したコードを基に、独自の最大値プーリング(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(____)