警告:このAPIは非推奨であり、置き換えが安定した後 TensorFlowの将来のバージョンで削除される予定です。

TensorScatterAdd

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

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

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

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

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

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

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

tensor_scatter_addの最も単純な形式は、インデックスによってテンソルに個々の要素を追加することです。たとえば、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_add(tensor, indices, updates)
     print(updated)
 
結果のテンソルは次のようになります。

[1、12、1、11、10、1、1、13]

また、上位のテンソルのスライス全体を一度に挿入することもできます。たとえば、新しい値の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_add(tensor, indices, updates)
     print(updated)
 
結果のテンソルは次のようになります。

[[[6、6、6、6]、[7、7、7、7]、[8、8、8、8]、[9、9、9、9]]、[[1、1、1 、1]、[1、1、1、1]、[1、1、1、1]、[1、1、1、1]]、[[6、6、6、6]、[7、7 、7、7]、[8、8、8、8]、[9、9、9、9]]、[[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> TensorScatterAdd <T>
createスコープスコープ、オペランド<T>テンソル、オペランド<U>インデックス、オペランド<T>更新)
新しいTensorScatterAdd操作をラップするクラスを作成するファクトリメソッド。
出力<T>
出力()
テンソルからコピーされた新しいテンソルと、インデックスに従って追加された更新。

継承されたメソッド

パブリックメソッド

public Output <T> asOutput ()

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

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

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

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

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

public Output <T> output ()

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