このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.tensor_scatter_nd_add

TensorFlow 1つのバージョン

追加スパースupdatesによれば、既存のテンソルへindices

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

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

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

最後の次元indices要素へのインデックスに対応する(もしindices.shape[-1] = tensor.shape.rank )またはスライス(IF indices.shape[-1] < tensor.shape.rank )寸法に沿ってindices.shape[-1]tensor.shapeupdates形状のテンソルであります

 indices.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]
 

我々はまた、すべて一度に上位テンソルの全体のスライスを挿入することができます。たとえば、私たちは新しい価値の二つの行列とランク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には、インデックスは無視されます。

tensor A Tensor 。テンソルは、コピーする/更新を。
indices A Tensor 。 :次のいずれかのタイプでなければなりませんint32int64 。インデックステンソル。
updates A Tensor 。同じ型を持つ必要がありますtensor 。出力に散布に更新します。
name 操作の名前(オプション)。

A Tensor 。同じ型を持つtensor