Menambahkan `pembaruan` yang jarang ke tensor yang ada menurut `indeks`.
Operasi ini membuat tensor baru dengan menambahkan `pembaruan` yang jarang ke `tensor` yang diteruskan. Operasi ini sangat mirip dengan `tf.scatter_nd_add`, hanya saja pembaruan ditambahkan ke tensor yang sudah ada (bukan variabel). Jika memori untuk tensor yang ada tidak dapat digunakan kembali, salinan akan dibuat dan diperbarui.
`indices` adalah tensor bilangan bulat yang berisi indeks ke dalam tensor baru berbentuk `tensor.shape`. Dimensi terakhir dari `indeks` paling banyak dapat berupa peringkat `tensor.shape`:
indeks.bentuk[-1] <= tensor.bentuk.peringkat
Dimensi terakhir `indices` sesuai dengan indeks menjadi elemen (jika `indices.shape[-1] = tensor.shape.rank`) atau irisan (jika `indices.shape[-1] < tensor.shape.rank`) sepanjang dimensi `indices.shape[-1]` dari `tensor.shape`. `updates` adalah tensor dengan bentuk
indeks.bentuk[:-1] + tensor.bentuk[indeks.bentuk[-1]:]
Bentuk paling sederhana dari tensor_scatter_add adalah menambahkan elemen individual ke tensor berdasarkan indeks. Misalnya kita ingin menambahkan 4 elemen pada tensor peringkat-1 dengan 8 elemen.
Dengan Python, operasi penambahan pencar ini akan terlihat seperti ini:
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]
Kita juga dapat memasukkan seluruh bagian tensor dengan peringkat lebih tinggi sekaligus. Misalnya, jika kita ingin menyisipkan dua irisan pada dimensi pertama tensor peringkat-3 dengan dua matriks nilai baru.
Dengan Python, operasi penambahan pencar ini akan terlihat seperti ini:
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]]]
Perhatikan bahwa pada CPU, jika indeks di luar batas ditemukan, kesalahan akan dikembalikan. Pada GPU, jika ditemukan indeks di luar batas, indeks tersebut akan diabaikan.
Konstanta
Rangkaian | OP_NAME | Nama operasi ini dikenal dengan mesin inti TensorFlow |
Metode Publik
Keluaran <T> | sebagai Keluaran () Mengembalikan pegangan simbolik tensor. |
statis <T memperluas TType > TensorScatterNdAdd <T> | |
Keluaran <T> | keluaran () Tensor baru disalin dari tensor dan pembaruan ditambahkan sesuai dengan indeks. |
Metode Warisan
Konstanta
String akhir statis publik OP_NAME
Nama operasi ini dikenal dengan mesin inti TensorFlow
Metode Publik
Keluaran publik <T> sebagai Keluaran ()
Mengembalikan pegangan simbolis tensor.
Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static TensorScatterNdAdd <T> buat ( Lingkup cakupan , Tensor <T> Operand , indeks Operand <? extends TNumber >, pembaruan Operand <T>)
Metode pabrik untuk membuat kelas yang membungkus operasi TensorScatterNdAdd baru.
Parameter
cakupan | ruang lingkup saat ini |
---|---|
tensor | Tensor untuk disalin/diperbarui. |
indeks | Tensor indeks. |
pembaruan | Pembaruan untuk disebarkan ke dalam keluaran. |
Kembali
- contoh baru TensorScatterNdAdd
Keluaran publik <T> keluaran ()
Tensor baru disalin dari tensor dan pembaruan ditambahkan sesuai dengan indeks.