TensorScatterSub

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

`インデックス`に従って、既存のテンソルからスパースな `updates`を減算します。

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

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

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

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

indexs.shape [:-1] + shape [indices.shape [-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操作をラップするクラスを作成するファクトリメソッド。

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

public Output <T> output ()

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