Kurangi `pembaruan` jarang dari tensor yang ada menurut `indeks`.
Operasi ini membuat tensor baru dengan mengurangi `pembaruan` yang jarang dari `tensor` yang diteruskan. Operasi ini sangat mirip dengan `tf.scatter_nd_sub`, kecuali bahwa pembaruan dikurangi dari tensor yang ada (sebagai lawan dari variabel). Jika memori untuk tensor yang ada tidak dapat digunakan kembali, salinan dibuat dan diperbarui.
`indeks` adalah tensor bilangan bulat yang berisi indeks ke dalam tensor baru berbentuk `bentuk`. Dimensi terakhir dari `indeks` paling banyak dapat berupa peringkat `bentuk`:
index.shape[-1] <= shape.rank
Dimensi terakhir dari `indices` sesuai dengan indeks menjadi elemen (jika `indices.shape[-1] = shape.rank`) atau irisan (jika `indices.shape[-1] < shape.rank`) di sepanjang dimensi `indices .bentuk[-1]` dari `bentuk`. `updates` adalah tensor dengan bentuk
indices.shape[:-1] + shape[indices.shape[-1]:]
Bentuk paling sederhana dari tensor_scatter_sub adalah mengurangi elemen individu dari tensor dengan indeks. Misalnya, kita ingin menyisipkan 4 elemen yang tersebar dalam tensor peringkat-1 dengan 8 elemen.
Dalam Python, operasi pencar kurangi 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_sub(tensor, indices, updates)
print(updated)
tensor yang dihasilkan akan terlihat seperti ini:[1, -10, 1, -9, -8, 1, 1, -11]
Kita juga bisa, memasukkan seluruh irisan tensor peringkat yang lebih tinggi sekaligus. Misalnya, jika kita ingin menyisipkan dua irisan dalam dimensi pertama tensor peringkat-3 dengan dua matriks nilai baru.
Dalam Python, ini operasi pencar add 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_sub(tensor, indices, updates)
print(updated)
tensor yang dihasilkan akan terlihat seperti ini:[[[-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]] ]
Perhatikan bahwa pada CPU, jika indeks di luar batas ditemukan, kesalahan akan dikembalikan. Pada GPU, jika indeks di luar batas ditemukan, indeks diabaikan.
Metode Publik
Output <T> | asOutput () Mengembalikan pegangan simbolis tensor. |
statis <T, U meluas Nomor> TensorScatterSub <T> | |
Output <T> | Output () Tensor baru disalin dari tensor dan pembaruan dikurangi sesuai dengan indeks. |
Metode yang Diwarisi
Metode Publik
publik Keluaran <T> asOutput ()
Mengembalikan pegangan simbolis tensor.
Input ke operasi TensorFlow adalah output dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static TensorScatterSub <T> membuat ( Lingkup lingkup, Operan <T> tensor, Operan <U> indeks, Operan <T> update)
Metode pabrik untuk membuat kelas yang membungkus operasi TensorScatterSub baru.
Parameter
cakupan | lingkup saat ini |
---|---|
tensor | Tensor untuk menyalin/memperbarui. |
indeks | Tensor indeks. |
pembaruan | Pembaruan untuk disebarkan ke dalam output. |
Kembali
- contoh baru TensorScatterSub
publik Keluaran <T> Output ()
Tensor baru disalin dari tensor dan pembaruan dikurangi sesuai dengan indeks.