プーリング層の定義

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に示すように、例えば、$2\times 2$の領域を一つの要素に集約するような処理を行い、空間サイズを小さくしている。

図 5.7: Max pooling procedure
\includegraphics[scale=0.9]{pooling.eps}

Figure 5.7の例は、$2\times 2$のMaxプーリングをストライド$2\times 2$で行った場合の処理手順である。 Maxプーリングとは、最大値を取る演算であり、$2\times 2$とは対象の領域のサイズを表す。Figure 5.7に示す通り、$2\times 2$の領域に対して最大となる要素を取り出す。 また、ストライドは、この例では$2\times 2$に設定しているため、$2\times 2$のウィンドウの移動間隔は2要素ごとになる。 一般的には、プーリングのウィンドウサイズとストライドは同じ値に設定する[5]。

第1引数は、入力データであり、すなわち畳み込み層からの出力データを示す。 第2引数は、プーリングサイズを指定しており、[1, 縦プーリング, 横プーリング, 1]の形で表す。配列の第0要素と第3要素については、ストライドと同様である。 この場合は、$2\times 2$の領域でMaxプーリングを行っている。第3引数以降は、5.3.3と同様である。



Deguchi Lab. 2017年3月6日