Pembaruan TensorScatter

TensorScatterUpdate kelas akhir publik

Menyebarkan `pembaruan` ke dalam tensor yang ada menurut `indeks`.

Operasi ini membuat tensor baru dengan menerapkan `pembaruan` yang jarang ke `tensor` yang diteruskan. Operasi ini sangat mirip dengan `tf.scatter_nd`, hanya saja pembaruannya tersebar ke tensor yang sudah ada (bukan tensor nol). Jika memori untuk tensor yang ada tidak dapat digunakan kembali, salinan akan dibuat dan diperbarui.

Jika `indeks` berisi duplikat, maka pembaruannya diakumulasikan (dijumlahkan).

PERINGATAN : Urutan penerapan pembaruan bersifat nondeterministik, jadi keluarannya akan nondeterministik jika `indeks` berisi duplikat -- karena beberapa masalah perkiraan numerik, angka yang dijumlahkan dalam urutan berbeda mungkin menghasilkan hasil berbeda.

`indices` adalah tensor bilangan bulat yang berisi indeks ke dalam tensor baru dengan bentuk `shape`. Dimensi terakhir dari `indeks` paling banyak dapat berupa peringkat `bentuk`:

indeks.bentuk[-1] <= bentuk.peringkat

Dimensi terakhir `indeks` sesuai dengan indeks ke dalam elemen (jika `indeks.bentuk[-1] = bentuk.peringkat`) atau irisan (jika `indeks.bentuk[-1] < bentuk.peringkat`) sepanjang `indeks dimensi .bentuk[-1]` dari `bentuk`. `updates` adalah tensor dengan bentuk

indeks.bentuk[:-1] + bentuk[indeks.bentuk[-1]:]

Bentuk pencar yang paling sederhana adalah dengan menyisipkan elemen individual ke dalam tensor berdasarkan indeks. Misalnya, kita ingin menyisipkan 4 elemen tersebar di tensor peringkat-1 dengan 8 elemen.

Dengan Python, operasi pencar ini akan terlihat seperti ini:

>>> indeks = tf.constant([[4], [3], [1], [7]]) >>> pembaruan = tf.constant([9, 10, 11, 12]) >>> tensor = tf.ones([8], dtype=tf.int32) >>> print(tf.tensor_scatter_nd_update(tensor, indeks, pembaruan)) tf.Tensor([ 1 11 1 10 9 1 1 12], shape=(8 ,), tiped=int32)

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 pencar ini akan terlihat seperti ini:

>>> indeks = tf.constant([[0], [2]]) >>> pembaruan = 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) >>> print (tf.tensor_scatter_nd_update(tensor, indeks, pembaruan).numpy()) [[[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 1 1] [1 1 1 1] [1 1 1 1] [1 1 1 1]] [[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[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.

Metode Publik

Keluaran <T>
sebagai Keluaran ()
Mengembalikan pegangan simbolik tensor.
statis <T, U memperluas Nomor> TensorScatterUpdate <T>
buat ( Lingkup lingkup, Tensor Operand <T>, Indeks Operand <U>, Pembaruan Operand <T>)
Metode pabrik untuk membuat kelas yang membungkus operasi TensorScatterUpdate baru.
Keluaran <T>
keluaran ()
Tensor baru dengan bentuk tertentu dan pembaruan diterapkan sesuai dengan indeks.

Metode Warisan

Metode Publik

Keluaran publik <T> sebagai Keluaran ()

Mengembalikan pegangan simbolik tensor.

Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.

public static TensorScatterUpdate <T> buat ( Cakupan cakupan , tensor Operand <T>, indeks Operand <U>, pembaruan Operand <T>)

Metode pabrik untuk membuat kelas yang membungkus operasi TensorScatterUpdate 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 TensorScatterUpdate

Keluaran publik <T> keluaran ()

Tensor baru dengan bentuk tertentu dan pembaruan diterapkan sesuai dengan indeks.