def max_pool_2x2(x, W) return tf.nn.max_pool(x, kside=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
プーリング層を作成する関数を定義している。
プーリングは、縦・横方向の空間を小さくする演算である。
Figure 5.7に示すように、例えば、の領域を一つの要素に集約するような処理を行い、空間サイズを小さくしている。
Figure 5.7の例は、のMaxプーリングをストライド
で行った場合の処理手順である。
Maxプーリングとは、最大値を取る演算であり、
とは対象の領域のサイズを表す。Figure 5.7に示す通り、
の領域に対して最大となる要素を取り出す。
また、ストライドは、この例では
に設定しているため、
のウィンドウの移動間隔は2要素ごとになる。
一般的には、プーリングのウィンドウサイズとストライドは同じ値に設定する[5]。
第1引数は、入力データであり、すなわち畳み込み層からの出力データを示す。
第2引数は、プーリングサイズを指定しており、[1, 縦プーリング, 横プーリング, 1]の形で表す。配列の第0要素と第3要素については、ストライドと同様である。
この場合は、の領域でMaxプーリングを行っている。第3引数以降は、5.3.3と同様である。