TensorScatterAdd

publiczna klasa końcowa TensorScatterAdd

Dodaje rzadkie „aktualizacje” do istniejącego tensora zgodnie z „indeksami”.

Ta operacja tworzy nowy tensor poprzez dodanie rzadkich „aktualizacji” do przekazanego „tensora”. Ta operacja jest bardzo podobna do tf.compat.v1.scatter_nd_add , z tą różnicą, że aktualizacje są dodawane do istniejącego tensora (a nie do zmiennej). Jeśli nie można ponownie wykorzystać pamięci istniejącego tensora, tworzona jest i aktualizowana kopia.

`indices` jest tensorem całkowitym zawierającym indeksy w nowym tensorze kształtu `tensor.shape`. Ostatni wymiar `indeksów` może mieć co najwyżej rangę `tensor.shape`:

indices.shape[-1] <= tensor.shape.rank
 
Ostatni wymiar `indeksów` odpowiada indeksom na elementy (jeśli `indices.shape[-1] = tensor.shape. rank`) lub wycinki (jeśli `indices.shape[-1] < tensor.shape.rank`) wzdłuż wymiaru `indices.shape[-1]` `tensor.shape`. „updates” to tensor o kształcie
indices.shape[:-1] + tensor.shape[indices.shape[-1]:]
 
Najprostszą formą „tensor_scatter_nd_add” jest dodanie poszczególnych elementów do tensora według indeksu. Załóżmy na przykład, że chcemy dodać 4 elementy do tensora rangi 1 z 8 elementami.

W Pythonie ta operacja dodawania rozproszenia wyglądałaby następująco:

>>> indeksy = tf.constant([[4], [3], [1], [7]]) >>> aktualizacje = tf.constant([9, 10, 11, 12]) >>> tensor = tf.ones([8], dtype=tf.int32) >>> zaktualizowano = tf.tensor_scatter_nd_add(tensor, indeksy, aktualizacje) >>> zaktualizowano

Możemy także wstawić na raz całe wycinki tensora wyższego rzędu. Na przykład, gdybyśmy chcieli wstawić dwa wycinki w pierwszym wymiarze tensora rangi 3 z dwiema macierzami o nowych wartościach.

W Pythonie ta operacja dodawania rozproszenia wyglądałaby następująco:

>>> indeksy = tf.constant([[0], [2]]) >>> aktualizacje = 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) >>> zaktualizowano = tf.tensor_scatter_nd_add(tensor, indeksy, aktualizacje) >>> zaktualizowano

Uwaga: na procesorze, jeśli zostanie znaleziony indeks spoza limitu, zwracany jest błąd. Jeśli na GPU zostanie znaleziony indeks spoza limitu, zostanie on zignorowany.

Metody publiczne

Wyjście <T>
jako wyjście ()
Zwraca symboliczny uchwyt tensora.
statyczny <T, U rozszerza numer> TensorScatterAdd <T>
utwórz (zakres zakresu , tensor argumentu <T>, indeksy argumentu <U>, aktualizacje argumentu <T>)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację TensorScatterAdd.
Wyjście <T>
wyjście ()
Nowy tensor skopiowany z tensora i dodane aktualizacje zgodnie z indeksami.

Metody dziedziczone

Metody publiczne

publiczne wyjście <T> asOutput ()

Zwraca symboliczny uchwyt tensora.

Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.

public static TensorScatterAdd <T> create ( zakres zakresu , tensor argumentu <T>, indeksy argumentu <U>, aktualizacje argumentu <T>)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację TensorScatterAdd.

Parametry
zakres aktualny zakres
napinacz Tensor do kopiowania/aktualizowania.
indeksy Tensor indeksu.
aktualizacje Aktualizacje do rozproszenia na wyjściu.
Zwroty
  • nowa instancja TensorScatterAdd

publiczne wyjście <T> wyjście ()

Nowy tensor skopiowany z tensora i dodane aktualizacje zgodnie z indeksami.