Gather

バージョン名: Gather-1

カテゴリー: データ移動

簡単な説明: Gather 操作は、以下に従って最初の入力テンソルのデータのスライスを取得します。

詳細な説明:

output[p_0, p_1, ..., p_{axis-1}, i, ..., j, ...] =
  input1[p_0, p_1, ..., p_{axis-1}, input2[i, ..., j], ...]

ここで、axis は 3 番目の入力からの値です。

属性: Gather には属性がありません

入力:

  • 1: 任意のデータを持つテンソル。必須。

  • 2: 収集するインデックスを持つテンソル。インデックス値の範囲は [0, input1[axis] - 1] です。必須。

  • 3: スカラーまたは 1D テンソル axis は、データを収集する次元のインデックスです。例えば、axis が 1 の場合、最初の次元で収集が実行されることを意味します。負の値は逆インデックスを意味します。許可される値は [-len(input1.shape), len(input1.shape) - 1] です。必須。

出力:

  • 1: 2 番目の入力テンソルのインデックスによって収集された最初の入力テンソルの要素で構成される結果のテンソル。テンソルの形状は、[input1.shape[:axis], input2.shape, input1.shape[axis + 1:]]

例:

<layer id="1" type="Gather" ...>
    <input>
        <port id="0">
            <dim>6</dim>
            <dim>12</dim>
            <dim>10</dim>
            <dim>24</dim>
        </port>
        <port id="1">
            <dim>15</dim>
            <dim>4</dim>
            <dim>20</dim>
            <dim>28</dim>
        </port>
        <port id="2"/>        <!--  axis = 1  -->
    </input>
    <output>
        <port id="2">
            <dim>6</dim>      <!-- embedded dimension from the 1st input -->
            <dim>15</dim>     <!-- embedded dimension from the 2nd input -->
            <dim>4</dim>      <!-- embedded dimension from the 2nd input -->
            <dim>20</dim>     <!-- embedded dimension from the 2nd input -->
            <dim>28</dim>     <!-- embedded dimension from the 2nd input -->
            <dim>10</dim>     <!-- embedded dimension from the 1st input -->
            <dim>24</dim>     <!-- embedded dimension from the 1st input -->
        </port>
    </output>
</layer>