TensorScatterNdAdd

genel final dersi TensorScatterNdAdd

'İndekslere' göre mevcut bir tensöre seyrek 'güncellemeler' ekler.

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

'indeksler', 'tensor.shape' şeklindeki yeni bir tensöre endeksler içeren bir tam sayı tensördür. 'İndekslerin' son boyutu en fazla 'tensor.shape' sıralaması olabilir:

indeksler.şekil[-1] <= tensör.şekil.rank

'İndekslerin' son boyutu, öğeler (eğer 'indeks.shape[-1] = tensor.shape.rank' ise) veya dilimler (eğer 'indices.shape[-1] < tensor.shape.rank' ise) içindeki indekslere karşılık gelir "tensor.shape"in "indices.shape[-1]" boyutu boyunca. 'güncellemeler' şekilli bir tensördür

indeksler.şekil[:-1] + tensör.şekil[indisler.şekil[-1]:]

tensor_scatter_add'ın en basit biçimi, tek tek öğeleri bir tensöre indekse göre eklemektir. Örneğin, 8 öğeli bir derece 1 tensöre 4 öğe eklemek istediğimizi varsayalım.

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

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)
 
Ortaya çıkan tensör şu şekilde görünecektir:

[1, 12, 1, 11, 10, 1, 1, 13]

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 ekleme işlemi şu şekilde görünecektir:

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)
 
Ortaya çıkan tensör şu şekilde görünecektir:

[[[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'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.

Sabitler

Sicim OP_NAME Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı

Genel Yöntemler

Çıkış <T>
Çıkış olarak ()
Tensörün sembolik tutamacını döndürür.
static <T TType'ı genişletir > TensorScatterNdAdd <T>
create ( Kapsam kapsamı, İşlenen <T> tensörü, İşlenen <? genişletilmiş TNumber > endeksleri, İşlenen <T> güncellemeleri)
Yeni bir TensorScatterNdAdd işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.
Çıkış <T>
çıktı ()
Tensörden kopyalanan yeni bir tensör ve indekslere göre güncellemeler eklendi.

Kalıtsal Yöntemler

Sabitler

genel statik son Dize OP_NAME

Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı

Sabit Değer: "TensorScatterAdd"

Genel Yöntemler

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

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 TensorScatterNdAdd <T> create ( Kapsam kapsamı, İşlenen <T> tensörü, İşlenen <? extends TNumber > dizinleri, İşlenen <T> güncellemeleri)

Yeni bir TensorScatterNdAdd işlemini saran bir sınıf oluşturmaya yönelik 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
  • yeni bir TensorScatterNdAdd örneği

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

Tensörden kopyalanan yeni bir tensör ve indekslere göre güncellemeler eklendi.