GroupConvolution

バージョン名: GroupConvolution-1

カテゴリー: 畳み込み

簡単な説明: 入力テンソルとカーネルテンソルの 1D、2D、または 3D GroupConvolution を計算します。

詳細な説明: 入力を複数のグループに分割し、通常の畳み込みと同様にグループフィルターで畳み込み、結果を連結します。より詳しい説明は、ディープ畳み込みニューラル・ネットワークによる ImageNet 分類を参照してください。

属性: この操作には、通常の _Convolution_ と同じ属性があります。グループ数はカーネルの形状で決定されます。

  • strides

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

    • 値の範囲: 正の整数

    • タイプ: int[]

    • 必須: はい

  • pads_begin

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

    • 値の範囲: 正の整数

    • タイプ: int[]

    • 必須: はい

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

  • pads_end

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

    • 値の範囲: 正の整数

    • タイプ: int[]

    • 必須: はい

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

  • dilations

    • 説明: dilations は、フィルター内の要素 (重み) 間の幅と高さの距離を示します。例えば、dilation1,1 に等しいということは、フィルター内のすべての要素が隣接していることを意味するため、通常の畳み込みと同じになります。dilation2,2 に等しい場合は、フィルター内のすべての要素が入力行列内の隣接する要素ではなく、距離 1 で隣接する要素と照合されることを意味します。

    • 値の範囲: 正の整数

    • タイプ: int[]

    • 必須: はい

  • auto_pad

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

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

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

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

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

    • タイプ: string

    • デフォルト値: explicit

    • 必須: いいえ

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

入力:

  • 1: タイプ T およびランク 3、4 または 5 の入力テンソル。レイアウトは、[N, GROUPS * C_IN, Z, Y, X] (バッチ数、チャネル数、空間軸 Z、Y、X) です。必須。

  • 2: タイプ T およびランク 4、5、または 6 の畳み込みカーネルテンソル。レイアウトは、[GROUPS, C_OUT, C_IN, Z, Y, X] (グループ数、出力チャネル数、入力チャネル数、空間軸 Z、Y、X) です。

    • 注: グループ数はカーネルの形状で決定され、属性によって指定されるものではありません。

    • 注: 畳み込みのタイプ (1D、2D、または 3D) は入力テンソルのランクで決定され、属性によって指定されません。

      • 1D 畳み込み (入力テンソルのランク 3) は、空間軸 X が 1 つだけであることを意味します

      • 2D 畳み込み (入力テンソルのランク 4) は、2 つの空間軸 Y、X があることを意味します

      • 3D 畳み込み (入力テンソルのランク 5) は、3 つの空間軸 Z、Y、X があることを意味します

出力:

  • 1: タイプ T およびランク 3、4、または 5 の出力テンソル。レイアウトは、[N, GROUPS * C_OUT, Z, Y, X] (バッチ数、出力チャネル数、空間軸 Z、Y、X) です。

タイプ:

  • T: 任意の数値タイプ。

例:

1D GroupConvolution

<layer type="GroupConvolution" ...>
    <data dilations="1" pads_begin="2" pads_end="2" strides="1" auto_pad="explicit"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>12</dim>
            <dim>224</dim>
        </port>
        <port id="1">
            <dim>4</dim>
            <dim>1</dim>
            <dim>3</dim>
            <dim>5</dim>
        </port>
    </input>
    <output>
        <port id="2" precision="FP32">
            <dim>1</dim>
            <dim>4</dim>
            <dim>224</dim>
        </port>
    </output>

2D GroupConvolution

<layer type="GroupConvolution" ...>
    <data dilations="1,1" pads_begin="2,2" pads_end="2,2" strides="1,1" auto_pad="explicit"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>12</dim>
            <dim>224</dim>
            <dim>224</dim>
        </port>
        <port id="1">
            <dim>4</dim>
            <dim>1</dim>
            <dim>3</dim>
            <dim>5</dim>
            <dim>5</dim>
        </port>
    </input>
    <output>
        <port id="2" precision="FP32">
            <dim>1</dim>
            <dim>4</dim>
            <dim>224</dim>
            <dim>224</dim>
        </port>
    </output>

3D GroupConvolution

<layer type="GroupConvolution" ...>
    <data dilations="1,1,1" pads_begin="2,2,2" pads_end="2,2,2" strides="1,1,1" auto_pad="explicit"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>12</dim>
            <dim>224</dim>
            <dim>224</dim>
            <dim>224</dim>
        </port>
        <port id="1">
            <dim>4</dim>
            <dim>1</dim>
            <dim>3</dim>
            <dim>5</dim>
            <dim>5</dim>
            <dim>5</dim>
        </port>
    </input>
    <output>
        <port id="2" precision="FP32">
            <dim>1</dim>
            <dim>4</dim>
            <dim>224</dim>
            <dim>224</dim>
            <dim>224</dim>
        </port>
    </output>