Aktualizacja TensorScatter

publiczna klasa końcowa TensorScatterUpdate

Rozrzuć „aktualizacje” na istniejący tensor zgodnie z „indeksami”.

Ta operacja tworzy nowy tensor poprzez zastosowanie rzadkich „aktualizacji” do przekazanego „tensora”. Ta operacja jest bardzo podobna do `tf.scatter_nd`, z tą różnicą, że aktualizacje są rozproszone na istniejącym tensorze (w przeciwieństwie do tensora zerowego). Jeśli nie można ponownie wykorzystać pamięci istniejącego tensora, tworzona jest i aktualizowana kopia.

Jeżeli `indeksy` zawierają duplikaty, wówczas ich aktualizacje są kumulowane (sumowane).

OSTRZEŻENIE : Kolejność stosowania aktualizacji jest niedeterministyczna, więc wynik będzie niedeterministyczny, jeśli „indeksy” zawierają duplikaty — z powodu pewnych problemów z przybliżeniem numerycznym liczby zsumowane w innej kolejności mogą dawać różne wyniki.

„indeksy” to tensor liczb całkowitych zawierający indeksy w nowym tensorze kształtu „shape”. Ostatni wymiar „wskaźników” może mieć co najwyżej rangę „kształtu”:

indeksy.kształt[-1] <= kształt.rank

Ostatni wymiar „indeksu” odpowiada indeksom na elementy (jeśli „indices.shape[-1] = kształt.rank”) lub plasterki (jeśli „indices.shape[-1] < kształt.rank”) wzdłuż wymiaru „indeksy” .shape[-1]` z `kształt`. „aktualizacje” to tensor z kształtem

indeksy.kształt[:-1] + kształt[indeksy.kształt[-1]:]

Najprostszą formą rozproszenia jest wstawienie poszczególnych elementów do tensora według indeksu. Załóżmy na przykład, że chcemy wstawić 4 rozproszone elementy do tensora rangi 1 z 8 elementami.

W Pythonie ta operacja 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) >>> print(tf.tensor_scatter_nd_update(tensor, indeksy, aktualizacje)) tf.Tensor([ 1 11 1 10 9 1 1 12], kształt=(8 ,), dtyp=int32)

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 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) >>> print (tf.tensor_scatter_nd_update(tensor, indeksy, aktualizacje).numpy()) [[[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]] [[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]]]

Należy pamiętać, że 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> TensorScatterUpdate <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ę TensorScatterUpdate.
Wyjście <T>
wyjście ()
Nowy tensor o zadanym kształcie i aktualizacjach zastosowanych 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 TensorScatterUpdate <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ę TensorScatterUpdate.

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

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

Nowy tensor o zadanym kształcie i aktualizacjach zastosowanych zgodnie z indeksami.