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 のdataテンソル。必須。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>