Uyarı: Bu API kullanımdan kaldırıldı ve TensorFlow'un gelecekteki bir sürümünde , değişim kararlı hale geldikten sonra kaldırılacaktır.

Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

TensorScatterAdd

public final class TensorScatterAdd

"Endekslere" göre mevcut bir tensöre seyrek "güncellemeler" ekler.

Bu işlem, geçirilen "tensör" e seyrek "güncellemeler" ekleyerek yeni bir tensör oluşturur. Bu işlem, güncellemelerin mevcut bir tensöre eklenmesi dışında (bir değişkenin aksine) "tf.scatter_nd_add" ye çok benzer. Mevcut tensör hafızası yeniden kullanılamazsa, bir kopya yapılır ve güncellenir.

"indisler", "tensor.shape" şeklindeki yeni bir tensörün indekslerini içeren bir tamsayı tensörüdür. "İndekslerin" son boyutu, en fazla "tensor.shape" nin sıralaması olabilir:

indices.shape [-1] <= tensor.shape.rank

"İndislerin" son boyutu, indislere ("indices.shape [-1] = tensor.shape.rank`) veya dilimlere (" indices.shape [-1] <tensor.shape.rank`) karşılık gelir "tensor.shape" nin "indices.shape [-1]" boyutu boyunca. "güncellemeler", şekle sahip bir tensördür

indices.shape [: - 1] + tensor.shape [indices.shape [-1]:]

Tensor_scatter_add'nin en basit biçimi, tensöre indeksle ayrı elemanlar eklemektir. Örneğin, 8 elemanlı bir rank-1 tensöre 4 eleman eklemek istediğimizi varsayalım.

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

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 şöyle görünür:

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

Ayrıca, daha yüksek dereceli bir tensörün tüm dilimlerini aynı anda ekleyebiliriz. Örneğin, bir rank-3 tensörünün ilk boyutuna iki yeni değer matrisi içeren iki dilim eklemek istersek.

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

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)
 
Sonuçta ortaya çıkan tensör şöyle görünür:

[[[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ülür. GPU'da, sınır dışı bir dizin bulunursa, dizin yok sayılır.

Kamu Yöntemleri

Çıkış <T>
asOutput ()
Bir tensörün sembolik tutamacını döndürür.
statik <T, U Number> TensorScatterAdd <T> uzatır
oluştur ( Kapsam kapsamı, Operand <T> tensörü, Operand <U> indisleri, Operand <T> güncellemeleri)
Yeni bir TensorScatterAdd işlemini saran bir sınıf oluşturmak için fabrika yöntemi.
Çıkış <T>
çıktı ()
Tensörden yeni bir tensör kopyalandı ve endekslere göre güncellemeler eklendi.

Devralınan Yöntemler

Kamu Yöntemleri

public Output <T> asOutput ()

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

TensorFlow işlemlerine yönelik girdiler, başka bir TensorFlow işleminin çıktılarıdır. Bu yöntem, girdinin hesaplanmasını temsil eden sembolik bir tutamaç elde etmek için kullanılır.

public static TensorScatterAdd <T> create ( Scope kapsamı, Operand <T> tensor, Operand <U> dizinleri, Operand <T> güncellemeleri)

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

Parametreler
dürbün mevcut kapsam
tensör Kopyalamak / güncellemek için tensör.
endeksler Endeks tensörü.
güncellemeler Çıktıya dağıtmak için güncellemeler.
İadeler
  • yeni bir TensorScatterAdd örneği

public Output <T> çıkışı ()

Tensörden yeni bir tensör kopyalandı ve endekslere göre güncellemeler eklendi.