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 で、indices の形状が (data よりも) 大きくなります。
data = [
[1, 7],
[4, 3],
]
indices = [
[1, 1, 0],
[1, 0, 1],
]
axis = 1
output = [
[7, 7, 1],
[3, 4, 3],
]例 3 の indices の形状は (data よりも) 小さくなります。
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
説明: どの軸が収集されるか。負の値は、次元を後ろから数えることを意味します。
値の範囲:
[-r, r-1]ここで、r = rank(data)。タイプ: int
必須: はい
入力:
1: T タイプのテンソル。これは
rank >= 1のテンソルです。必須。2: 入力と同じランクを持つ T_IND タイプのテンソル。すべてのインデックス値は範囲
[0, s-1]内にあることが期待されます。ここで、sはdataテンソルの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>