'İndekslere' göre mevcut bir tensörden seyrek 'güncellemeleri' çıkarır.
Bu işlem, "tensör"de iletilen seyrek "güncellemeleri" çıkararak yeni bir tensör oluşturur. Bu işlem, güncellemelerin (bir değişkenin aksine) mevcut bir tensörden çıkarılması dışında "tf.scatter_nd_sub" işlemine çok benzer. Mevcut tensörün belleği yeniden kullanılamıyorsa bir kopya oluşturulur ve güncellenir.
'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[indisler.şekil[-1]:]
tensor_scatter_sub'un en basit biçimi, tek tek öğeleri bir tensörden indekse göre çıkarmaktır. Ö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 çıkarma 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_sub(tensor, indices, updates)
print(updated)
Ortaya çıkan tensör şöyle görünecektir:[1, -10, 1, -9, -8, 1, 1, -11]
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 şuna benzer:
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)
Ortaya çıkan tensör şöyle görünecektir:[[[-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]] ]
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. |
statik <T TType'ı genişletir > TensorScatterNdSub <T> | |
Çıkış <T> | çıktı () Tensörden kopyalanan yeni bir tensör ve endekslere göre çıkarılan güncellemeler. |
Kalıtsal Yöntemler
Sabitler
genel statik son Dize OP_NAME
Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı
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 TensorScatterNdSub <T> create ( Kapsam kapsamı, İşlenen <T> tensörü, İşlenen <? extends TNumber > dizinleri, İşlenen <T> güncellemeleri)
Yeni bir TensorScatterNdSub 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. |
İade
- TensorScatterNdSub'un yeni bir örneği
genel Çıkış <T> çıkışı ()
Tensörden kopyalanan yeni bir tensör ve endekslere göre çıkarılan güncellemeler.