次の方法で共有


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" されます。