AvgPool

バージョン名: AvgPool-1

カテゴリー: プーリング

簡単な説明: リファレンス

詳細な説明: リファレンス。Average Pool は、入力をカーネル属性で指定されたサイズのプーリング領域に分割し、各領域の平均値を計算することでダウンサンプリングを実行するプーリング操作です。出力形状は次のように計算されます。

H_out = (H + pads_begin[0] + pads_end[0] - kernel[0] / strides[0]) + 1

W_out = (H + pads_begin[1] + pads_end[1] - kernel[1] / strides[1]) + 1

D_out = (H + pads_begin[2] + pads_end[2] - kernel[2] / strides[2]) + 1

属性: Pooling 属性は、レイヤーノードの子である data ノードで指定されます。

  • strides

    • 説明: strides は、3D プーリングの場合は (z、y、x) 軸上、2D プーリングの場合は (y、x) 軸上で、特徴マップ上のウィンドウをスライドさせる距離 (ピクセル単位) です。例えば、strides が “4,2,1” に等しい場合は、フィルターを奥行き次元で 4 ピクセル、高さ次元で 2 ピクセル、幅次元で 1 ピクセルずつスライドさせることを意味します。

    • 値の範囲: 0 から始まる整数値

    • タイプ: int[]

    • 必須: はい

  • pads_begin

    • 説明: pads_begin は、各軸に沿って先頭に追加するピクセル数です。例えば、pads_begin が “1,2” に等しい場合は、入力の上部に 1 ピクセル、入力の左側に 2 ピクセルを追加することを意味します。

    • 値の範囲: 0 から始まる整数値

    • タイプ: int[]

    • 必須: はい

    • 注: auto_pad 属性が指定されている場合、この属性は無視されます。

  • pads_end

    • 説明: pads_end は、各軸に沿って終了点に追加するピクセル数です。例えば、pads_end が “1,2” に等しい場合は、入力の下部に 1 ピクセル、入力の右側に 2 ピクセルを追加することを意味します。

    • 値の範囲: 0 から始まる整数値

    • タイプ: int[]

    • 必須: はい

    • 注: auto_pad 属性が指定されている場合、この属性は無視されます。

  • kernel

    • 説明: kernel は各フィルターのサイズです。例えば、カーネルが (2, 3) に等しい場合は、各フィルターの高さが 2、幅が 3 であることを意味します。

    • 値の範囲: 1 から始まる整数値

    • タイプ: int[]

    • 必須: はい

  • exclude-pad

    • 説明: exclude-pad は、パディング領域の値プーリングの一種です。例えば、exclude-pad が “true” の場合、パディングから得られたゼロ値は平均化計算に含まれません。

    • 値の範囲: true または false

    • タイプ: ブール値

    • 必須: はい

  • rounding_type

    • 説明: rounding_type は、適用される丸めのタイプです。

    • 値の範囲:

      • ceil

      • floor

    • タイプ: 文字列

    • デフォルト値 : floor

    • 必須: いいえ

  • auto_pad

    • 説明: auto_pad パディングの計算方法。
      設定可能な値:

      • explicit: pads_beginpads_end からの明示的なパディング値を使用します。

      • same_lower (same_lower) - 入力は出力サイズに一致するようにパディングされます。パディング値が奇数の場合、追加のパディングが最後 (先頭) に追加されます。

      • valid - パディングを使用しません。

    • タイプ: 文字列

    • デフォルト値: explicit

    • 必須: いいえ

    • 注: auto_pad が指定されている場合、pads_beginpads_end 属性は無視されます。

入力:

  • 1: 3D、4D または 5D 入力テンソル。必須。

出力:

  • 1: 入力形状は、[N,C,H][N,C,H,W] または [N,C,H,W,D] のいずれかです。この場合、対応する出力形状は [N,C,H_out][N,C,H_out,W_out] または [N,C,H_out,W_out,D_out] になります。

数学定式化

\[output_{j} = \frac{\sum_{i = 0}^{n}x_{i}}{n}\]

例:

<layer ... type="AvgPool" ... >
    <data auto_pad="same_upper" exclude-pad="true" kernel="2,2" pads_begin="0,0" pads_end="1,1" strides="2,2"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </input>
    <output>
        <port id="1">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </output>
</layer>

<layer ... type="AvgPool" ... >
    <data auto_pad="same_upper" exclude-pad="false" kernel="5,5" pads_begin="0,0" pads_end="1,1" strides="2,2"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </input>
    <output>
        <port id="1">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </output>
</layer>

<layer ... type="AvgPool" ... >
    <data auto_pad="explicit" exclude-pad="true" kernel="5,5" pads_begin="1,1" pads_end="1,1" strides="3,3"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </input>
    <output>
        <port id="1">
            <dim>1</dim>
            <dim>3</dim>
            <dim>10</dim>
            <dim>10</dim>
        </port>
    </output>
</layer>

<layer ... type="AvgPool" ... >
    <data auto_pad="explicit" exclude-pad="false" kernel="5,5" pads_begin="1,1" pads_end="1,1" strides="2,2"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </input>
    <output>
        <port id="1">
            <dim>1</dim>
            <dim>3</dim>
            <dim>15</dim>
            <dim>15</dim>
        </port>
    </output>
</layer>

<layer ... type="AvgPool" ... >
    <data auto_pad="valid" exclude-pad="true" kernel="5,5" pads_begin="1,1" pads_end="1,1" strides="2,2"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>3</dim>
            <dim>32</dim>
            <dim>32</dim>
        </port>
    </input>
    <output>
        <port id="1">
            <dim>1</dim>
            <dim>3</dim>
            <dim>14</dim>
            <dim>14</dim>
        </port>
    </output>
</layer>