TensorScatterGüncellemesi

genel final sınıfı TensorScatterUpdate

'Güncellemeleri' mevcut bir tensöre 'indekslere' göre dağıtın.

Bu işlem, "tensör"de iletilen seyrek "güncellemeler"i uygulayarak yeni bir tensör oluşturur. Bu işlem, güncellemelerin mevcut bir tensöre (sıfır tensörün aksine) dağıtılması dışında "tf.scatter_nd" işlemine çok benzer. Mevcut tensörün belleği yeniden kullanılamıyorsa bir kopya oluşturulur ve güncellenir.

'Endeksler' kopyalar içeriyorsa, bunların güncellemeleri toplanır (toplanır).

UYARI : Güncellemelerin uygulanma sırası belirleyici değildir; bu nedenle, 'endeksler' kopyalar içeriyorsa çıktı belirleyici olmayacaktır; bazı sayısal yaklaşım sorunlarından dolayı, farklı sırada toplanan sayılar farklı sonuçlar verebilir.

'indeksler', yeni bir şekil 'şekli' tensörüne endeksler içeren bir tamsayı tensörüdür. 'Endekslerin' son boyutu en fazla 'şekil'in sıralaması olabilir:

indeksler.şekil[-1] <= şekil.sıralama

"İndekslerin" son boyutu, "indeksler" boyutu boyunca öğeler halindeki indekslere (eğer "indeks.şekil[-1] = şekil.rank") veya dilimlere (eğer "indeks.şekil[-1] < şekil.rank") karşılık gelir "şekil"in .şekli[-1]'. 'güncellemeler' şekilli bir tensördür

indeksler.şekil[:-1] + şekil[indeksler.şekil[-1]:]

Saçılımın en basit biçimi, tek tek elemanları bir tensöre indekse göre eklemektir. Örneğin, 8 elemanlı bir derece 1 tensöre 4 dağınık eleman eklemek istediğimizi varsayalım.

Python'da bu dağılım işlemi şöyle görünecektir:

>>> endeksler = tf.constant([[4], [3], [1], [7]]) >>> güncellemeler = tf.constant([9, 10, 11, 12]) >>> tensör = tf.ones([8], dtype=tf.int32) >>> print(tf.tensor_scatter_nd_update(tensör, indisler, güncellemeler)) tf.Tensor([ 1 11 1 10 9 1 1 12], şekil=(8 ,), dtype=int32)

Ayrıca daha yüksek dereceli bir tensörün tüm dilimlerini bir kerede ekleyebiliriz. Örneğin, bir rütbe-3 tensörün ilk boyutuna iki yeni değer matrisine sahip iki dilim eklemek istersek.

Python'da bu dağılım işlemi şöyle görünecektir:

>>> endeksler = tf.constant([[0], [2]]) >>> güncellemeler = 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]]]) >>> tensör = tf.ones([4, 4, 4], dtype=tf.int32) >>> yazdır (tf.tensor_scatter_nd_update(tensör, indeksler, güncellemeler).numpy()) [[[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]]]

CPU'da sınır dışı bir dizin bulunursa bir hata döndürüleceğini unutmayın. GPU'da sınır dışı bir dizin bulunursa dizin dikkate alınmaz.

Genel Yöntemler

Çıkış <T>
Çıkış olarak ()
Bir tensörün sembolik tutamacını döndürür.
statik <T, U Sayıyı genişletir> TensorScatterUpdate <T>
create ( Kapsam kapsamı, İşlenen <T> tensörü, İşlenen <U> endeksleri, İşlenen <T> güncellemeleri)
Yeni bir TensorScatterUpdate işlemini saran bir sınıf oluşturmak için fabrika yöntemi.
Çıkış <T>
çıktı ()
Verilen şekle sahip yeni bir tensör ve endekslere göre uygulanan güncellemeler.

Kalıtsal Yöntemler

Genel Yöntemler

genel Çıkış <T> asOutput ()

Bir tensörün sembolik tutamacını döndürür.

TensorFlow işlemlerinin girdileri, başka bir TensorFlow işleminin çıktılarıdır. Bu yöntem, girişin hesaplanmasını temsil eden sembolik bir tanıtıcı elde etmek için kullanılır.

public static TensorScatterUpdate <T> create ( Kapsam kapsamı, İşlenen <T> tensörü, İşlenen <U> endeksleri, İşlenen <T> güncellemeleri)

Yeni bir TensorScatterUpdate işlemini saran bir sınıf oluşturmak için fabrika yöntemi.

Parametreler
kapsam mevcut kapsam
tensör Kopyalanacak/güncellenecek tensör.
endeksler İndeks tensörü.
güncellemeler Çıktıya dağıtılacak güncellemeler.
İadeler
  • TensorScatterUpdate'in yeni bir örneği

genel Çıkış <T> çıkışı ()

Verilen şekle sahip yeni bir tensör ve endekslere göre uygulanan güncellemeler.