TensorScatterSub

パブリック最終クラスTensorScatterSub

「インデックス」に従って既存のテンソルからスパースの「更新」を減算します。

この操作は、渡された `tensor` からスパースの `updates` を減算することによって、新しい tensor を作成します。この操作は `tf.scatter_nd_sub` と非常に似ていますが、更新が (変数ではなく) 既存のテンソルから減算される点が異なります。既存のテンソルのメモリを再利用できない場合は、コピーが作成されて更新されます。

`indices` は、形状 `shape` の新しいテンソルへのインデックスを含む整数テンソルです。 `index` の最後の次元は、最大でも `shape` のランクになります。

インデックス.形状[-1] <= 形状.ランク

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

インデックス.シェイプ[:-1] + シェイプ[インデックス.シェイプ[-1]:]

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

Python では、この散乱減算演算は次のようになります。

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     tensor = tf.ones([8], dtype=tf.int32)
     updated = tf.tensor_scatter_nd_sub(tensor, indices, updates)
     print(updated)
 
結果のテンソルは次のようになります。

[1、-10、1、-9、-8、1、1、-11]

また、より高いランクのテンソルのスライス全体を一度に挿入することもできます。たとえば、新しい値の 2 つの行列を持つランク 3 テンソルの最初の次元に 2 つのスライスを挿入したいとします。

Python では、この散乱加算操作は次のようになります。

indices = tf.constant([[0], [2]])
     updates = 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)
     updated = tf.tensor_scatter_nd_sub(tensor, indices, updates)
     print(updated)
 
結果のテンソルは次のようになります。

[[[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7] 、-7、-7]]、[[1、1、1、1]、[1、1、1、1]、[1、1、1、1]、[1、1、1、1]] 、[[-4、-4、-4、-4]、[-5、-5、-5、-5]、[-6、-6、-6、-6]、[-7、-7] 、-7、-7]]、[[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> TensorScatterSub <T>
create (スコープスコープ、オペランド<T> テンソル、オペランド<U> インデックス、オペランド<T> 更新)
新しい TensorScatterSub オペレーションをラップするクラスを作成するためのファクトリ メソッド。
出力<T>
出力()
テンソルからコピーされた新しいテンソルと、インデックスに従って減算された更新。

継承されたメソッド

パブリックメソッド

public Output <T> asOutput ()

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

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

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

新しい TensorScatterSub オペレーションをラップするクラスを作成するためのファクトリ メソッド。

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

public出力<T>出力()

テンソルからコピーされた新しいテンソルと、インデックスに従って減算された更新。