ScatterNDUpdate¶
バージョン名: ScatterNDUpdate-3
カテゴリー: データ移動
簡単な説明: 2 番目と 3 番目の入力テンソルで指定された更新された要素を含む最初の入力テンソルのコピーを作成します。
詳細な説明: この操作は data
テンソルのコピーを生成し、その値を indices
で指定された特定のインデックス位置での更新で指定された値に更新します。出力形状は data
の形状と同じです。indices
テンソルには重複したエントリーがあってはなりません。indices
内のエントリーが重複している場合、結果は未定義です。
indices
の最後の次元は、最大でも data.shape
のランクです。indices
の最後の次元は、indices.shape[-1]
= data.shape.rank
の場合は要素へのインデックス、または indices.shape[-1]
< data.shape.rank
の場合はスライスに対応します。更新は形状を持つテンソルです indices.shape[:-1] + data.shape[indices.shape[-1]:]
例 1 は data
内の 4 つの単一要素の更新を示します。
data = [1, 2, 3, 4, 5, 6, 7, 8]
indices = [[4], [3], [1], [7]]
updates = [9, 10, 11, 12]
output = [1, 11, 3, 10, 9, 6, 7, 12]
例 2 は data
内の 4x4
形状の 2 つのスライスの更新を示します。
data = [[[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]],
[[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]],
[[8, 7, 6, 5], [4, 3, 2, 1], [1, 2, 3, 4], [5, 6, 7, 8]],
[[8, 7, 6, 5], [4, 3, 2, 1], [1, 2, 3, 4], [5, 6, 7, 8]]]
indices = [[0], [2]]
updates = [[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]]
output = [[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
[[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]],
[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]],
[[8, 7, 6, 5], [4, 3, 2, 1], [1, 2, 3, 4], [5, 6, 7, 8]]]
属性: ScatterNDUpdate には属性がありません。
入力:
1: 任意のランク
r
>= 1 およびタイプ T のデータテンソル。必須。2: 任意のランク
q
>= 1 およびタイプ T_IND のインデックスを持つindices
テンソル。インデックス・エントリー(i_0, i_1, ...,i_k)
(k = indices.shape[-1]
) 内のすべてのインデックス値i_j
は、範囲[0, s_j - 1]
内になければなりません。ここで、s_j = data.shape[j]
です。k
は最大でもr
でなければなりません。必須。3: ランク
r - indices.shape[-1] + q - 1
のタイプ T のテンソルを更新します。期待される更新ランクが 0D の場合、単一要素を持つテンソルにすることができます。 必須。
出力:
1: T タイプの
data
テンソルと等しい形状を持つテンソル。
タイプ:
T: 任意の数値タイプ。
T_IND:
int32
またはint64
例:
<layer ... type="ScatterNDUpdate">
<input>
<port id="0">
<dim>1000</dim>
<dim>256</dim>
<dim>10</dim>
<dim>15</dim>
</port>
<port id="1">
<dim>25</dim>
<dim>125</dim>
<dim>3</dim>
</port>
<port id="2">
<dim>25</dim>
<dim>125</dim>
<dim>15</dim>
</port>
</input>
<output>
<port id="3">
<dim>1000</dim>
<dim>256</dim>
<dim>10</dim>
<dim>15</dim>
</port>
</output>
</layer>