GatherElements

バージョン名: GatherElements-6

カテゴリー: データ移動

簡単な説明: GatherElements は、indices テンソルで指定された位置にある入力 data テンソルから要素を取得します。

詳細な説明: GatherElements は、indices テンソルで指定された位置にある data テンソルから要素を取得します。data テンソルと indices テンソルは同じランク r >= 1 を持ちます。オプション 属性 axis は、indices で指定されたインデックスを持つ要素がどの軸に沿って取得されるかを決定します。indices テンソルは、axis の次元を除いて data テンソルと同じ形状を持ちます。出力は indices テンソルの各要素の値 (data テンソルから収集された) で構成され、indices と同じ形状になります。

例えば、3D の場合 (r = 3)、出力は次の方程式によって決定されます。

out[i][j][k] = data[indices[i][j][k]][j][k] if axis = 0
out[i][j][k] = data[i][indices[i][j][k]][k] if axis = 1
out[i][j][k] = data[i][j][indices[i][j][k]] if axis = 2

例 1 - 具体的な値を含む:

data = [
    [1, 2],
    [3, 4],
]
indices = [
    [0, 1],
    [0, 0],
]
axis = 0
output = [
    [1, 4],
    [1, 2],
]

例 2 - axis = 1 で、data よりも大きな形状の indices:

data = [
    [1, 7],
    [4, 3],
]
indices = [
    [1, 1, 0],
    [1, 0, 1],
]
axis = 1
output = [
    [7, 7, 1],
    [3, 4, 3],
]

例 3 - data よりも小さな形状の indices:

data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
indices = [
    [1, 0, 1],
    [1, 2, 0],
]
axis = 0
output = [
    [4, 2, 6],
    [4, 8, 3],
]

属性:

  • axis

    • 説明: Which axis to gather on.負の値は、次元を後ろから数えることを意味します。

    • 値の範囲: [-r, r-1]、ここで r = rank(data) です。

    • タイプ: int

    • 必須: はい

入力:

  • 1: T タイプのテンソル。これは rank >= 1 のテンソルです。必須。

  • 2: 入力と同じランクを持つ T_IND タイプのテンソル。すべてのインデックス値は範囲 [0, s-1] 内にあることが期待されます。ここで、sdata テンソルの axis 次元に沿ったサイズです。必須。

出力:

  • 1: T タイプの収集された値を持つテンソル。テンソルは indices と同じ形状を持っています。

タイプ:

  • T: サポートされるタイプ。

  • T_IND: int32 または int64

例:

<... type="GatherElements" ...>
    <data axis="1" />
    <input>
        <port id="0">
            <dim>3</dim>
            <dim>7</dim>
            <dim>5</dim>
        </port>
        <port id="1">
            <dim>3</dim>
            <dim>10</dim>
            <dim>5</dim>
        </port>
    </input>
    <output>
        <port id="2">
            <dim>3</dim>
            <dim>10</dim>
            <dim>5</dim>
        </port>
    </output>
</layer>