TensorScatterUpdate

パブリックファイナルクラスTensorScatterUpdate

「インデックス」に従って、既存のテンソルに「更新」を分散させます。

この操作は、渡された `tensor`にスパース` updates`を適用することにより、新しいテンソルを作成します。この操作は、更新が(ゼロテンソルではなく)既存のテンソルに分散されることを除いて、 `tf.scatter_nd`と非常によく似ています。既存のテンソルのメモリを再利用できない場合は、コピーが作成されて更新されます。

`indices`に重複が含まれている場合、それらの更新は累積(合計)されます。

警告:更新が適用される順序は非決定的であるため、「インデックス」に重複が含まれている場合、出力は非決定的になります。数値近似の問題があるため、異なる順序で合計された数値は異なる結果をもたらす可能性があります。

`indices`は、形状` shape`の新しいテンソルへのインデックスを含む整数テンソルです。 `indices`の最後の次元は、せいぜい` shape`のランクにすることができます。

indexs.shape [-1] <= shape.rank

`indices`の最後の次元は、次元`インデックスに沿った要素( `indices.shape [-1] = shape.rank`の場合)またはスライス(` indexs.shape [-1] <shape.rank`の場合)へのインデックスに対応します`shape`の.shape [-1]`。 `updates`は形のあるテンソルです

indexs.shape [:-1] + shape [indices.shape [-1]:]

散乱の最も単純な形式は、インデックスによってテンソルに個々の要素を挿入することです。たとえば、8つの要素を持つランク1のテンソルに4つの散在する要素を挿入するとします。

Pythonでは、このスキャッター操作は次のようになります。

>>>インデックス= tf.constant([[4]、[3]、[1]、[7]])>>>更新= tf.constant([9、10、11、12])>>>テンソル= tf.ones([8]、dtype = tf.int32)>>> print(tf.tensor_scatter_nd_update(tensor、indexes、updates))tf.Tensor([1 11 1 10 9 1 1 12]、shape =(8 、)、dtype = int32)

また、上位のテンソルのスライス全体を一度に挿入することもできます。たとえば、新しい値の2つの行列を使用してランク3テンソルの最初の次元に2つのスライスを挿入する場合です。

Pythonでは、このスキャッター操作は次のようになります。

>>>インデックス= tf.constant([[0]、[2]])>>>更新= tf.constant([[[5、5、5、5]、[6、6、6、6]、 ... [7、7、7、7]、[8、8、8、8]]、... [[5、5、5、5]、[6、6、6、6]、.. 。[7、7、7、7]、[8、8、8、8]]])>>> tensor = tf.ones([4、4、4]、dtype = tf.int32)>>> print (tf.tensor_scatter_nd_update(tensor、indexes、updates).numpy())[[[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]] [[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]]]

CPUでは、範囲外のインデックスが見つかった場合、エラーが返されることに注意してください。 GPUでは、範囲外のインデックスが見つかった場合、そのインデックスは無視されます。

パブリックメソッド

出力<T>
asOutput ()
テンソルのシンボリックハンドルを返します。
static <T、U extends Number> TensorScatterUpdate <T>
createスコープスコープ、オペランド<T>テンソル、オペランド<U>インデックス、オペランド<T>更新)
新しいTensorScatterUpdate操作をラップするクラスを作成するファクトリメソッド。
出力<T>
出力()
指定された形状と更新がインデックスに従って適用された新しいテンソル。

継承されたメソッド

パブリックメソッド

public Output <T> asOutput ()

テンソルのシンボリックハンドルを返します。

TensorFlow操作への入力は、別のTensorFlow操作の出力です。このメソッドは、入力の計算を表すシンボリックハンドルを取得するために使用されます。

public static TensorScatterUpdate <T> create スコープスコープ、オペランド<T>テンソル、オペランド<U>インデックス、オペランド<T>更新)

新しいTensorScatterUpdate操作をラップするクラスを作成するファクトリメソッド。

パラメーター
範囲現在のスコープ
テンソルコピー/更新するテンソル。
インデックスインデックステンソル。
更新出力に分散するように更新します。
戻り値
  • TensorScatterUpdateの新しいインスタンス

public Output <T> output ()

指定された形状と更新がインデックスに従って適用された新しいテンソル。