Pooling
Pooling (input,
poolKind, # "max" or "average"
{kernel dimensions},
stride = {stride dimensions},
autoPadding = {padding flags (boolean)},
lowerPad = {lower padding (int)},
upperPad = {upper padding (int)})
プーリング操作では、プーリング入力の最大値 (最大プーリング) または平均値を選択して、新しいマトリックスを計算します。 平均プールの場合、平均の数には埋め込まれた値は含まれません。
N 次元プーリングを使用すると、任意のディメンション、ストライド、パディングの最大または平均プーリングを作成できます。 の構文は次のとおりです。
各値の説明:
input
- プール入力poolKind
- "max" または "average"{kernel dimensions}
- プーリング ウィンドウの次元 (BrainScript ベクターなど)。(4:4)
stride
- [名前付き、省略可能、既定値は 1] ストライド。autoPadding
- [名前付き、省略可能、既定値は true] 各入力ディメンションの自動埋め込みフラグ。lowerPad
- [名前付き、省略可能、既定値は 0] 各入力ディメンションの正確な下限パディングupperPad
- [名前付き、省略可能、既定値は 0] 各入力ディメンションの正確な上パディング
すべての次元配列はコロンで区切られます。 注: 非推奨 NDLNetworkBuilder
を使用する場合は、代わりにコンマ区切りで { }
囲む必要があります。
プーリング ウィンドウには任意のサイズを設定できるため、"Maxout" レイヤーなど、さまざまなプール構成を構築できます (詳細については 、Goodfellow などを 参照してください)。
MaxOutPool (inp, kW, kH, kC, hStride, vStride) =
Pooling (inp, "max", (kW:kH:kC), stride=(hStride:vStride:kC), true:true:false))
2D プールの簡略化された構文
2D プールの構文は簡略化されています。
MaxPooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
AveragePooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
次のパラメーターを使用できます。
m
- 入力マトリックス。windowWidth
- プーリング ウィンドウの幅windowHeight
- プーリング ウィンドウの高さstepW
- 幅方向に使用されるステップ (またはストライド)stepH
- 高さ方向に使用されるステップ (またはストライド)imageLayout
- [名前付き省略可能] 各イメージのストレージ形式。 これは、おそらく必要ないレガシ オプションです。 既定では、HWC
各イメージは列のメジャー表記として[channel, width, height]
格納されます。 パフォーマンスを向上させるには、cuDNN を使用することをお勧めします。この場合、設定するcudnn
必要があります。つまり、各画像は列のメジャー表記で [幅、高さ、チャネル] として格納されます。 フォーマットは GPU と CPU の両方で機能しますcudnn
。
例 (ConvReLULayer NDL マクロ):
# pool2
pool2W = 2
pool2H = 2
pool2hStride = 2
pool2vStride = 2
pool2 = MaxPooling (conv2, pool2W, pool2H, pool2hStride, pool2vStride, imageLayout="$imageLayout$")
注: 非推奨 NDLNetworkBuilder
を使用している場合、省略可能 imageLayout
なパラメーターは既定で代わりに使用 "HWC"
されます。