ScatterNd

public final class ScatterNd

Spargi "aggiornamenti" in un nuovo tensore secondo "indici".

Crea un nuovo tensore applicando "aggiornamenti" sparsi a singoli valori o sezioni all'interno di un tensore (inizialmente zero per numerico, vuoto per stringa) della "forma" data secondo gli indici. Questo operatore è l'inverso dell'operatore `tf.gather_nd` che estrae valori o sezioni da un dato tensore.

Questa operazione è simile a tensor_scatter_add, tranne per il fatto che il tensore è inizializzato con zero. Chiamare `tf.scatter_nd (indici, valori, forma)` è identico a `tensor_scatter_add (tf.zeros (shape, values.dtype), indices, values)`

Se "indici" contiene duplicati, i loro aggiornamenti vengono accumulati (sommati).

ATTENZIONE : L'ordine in cui vengono applicati gli aggiornamenti è non deterministico, quindi l'output sarà non deterministico se "indici" contiene duplicati - a causa di alcuni problemi di approssimazione numerica, i numeri sommati in un ordine diverso possono produrre risultati diversi.

`indices` è un tensore intero contenente indici in un nuovo tensore di forma` shape`. L'ultima dimensione di "indici" può essere al massimo il rango di "forma":

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

L'ultima dimensione di "indici" corrisponde agli indici in elementi (se "indices.shape [-1] = shape.rank`) o sezioni (se" indices.shape [-1] <shape.rank`) lungo gli indici di .shape [-1] `di` shape`. "update" è un tensore con forma

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

La forma più semplice di dispersione è inserire singoli elementi in un tensore per indice. Ad esempio, supponiamo di voler inserire 4 elementi dispersi in un tensore di rango 1 con 8 elementi.

In Python, questa operazione di dispersione sarebbe simile a questa:

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     shape = tf.constant([8])
     scatter = tf.scatter_nd(indices, updates, shape)
     print(scatter)
 
Il tensore risultante sarebbe simile a questo:

[0, 11, 0, 10, 9, 0, 0, 12]

Possiamo anche inserire intere fette di un tensore di rango più alto tutte in una volta. Ad esempio, se volessimo inserire due sezioni nella prima dimensione di un tensore di rango 3 con due matrici di nuovi valori.

In Python, questa operazione di dispersione sarebbe simile a questa:

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]]])
     shape = tf.constant([4, 4, 4])
     scatter = tf.scatter_nd(indices, updates, shape)
     print(scatter)
 
Il tensore risultante sarebbe simile a questo:

[[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]], [[0, 0, 0 , 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[5, 5, 5, 5], [6, 6 , 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]], [[0, 0, 0, 0], [0, 0, 0, 0], [0 , 0, 0, 0], [0, 0, 0, 0]]]

Notare che sulla CPU, se viene trovato un indice fuori limite, viene restituito un errore. Sulla GPU, se viene trovato un indice fuori limite, l'indice viene ignorato.

Metodi pubblici

Uscita <U>
asOutput ()
Restituisce la maniglia simbolica di un tensore.
static <U, T estende Number> ScatterNd <U>
create ( ambito ambito, indici operando <T>, aggiornamenti operando <U>, forma operando <T>)
Metodo Factory per creare una classe che esegue il wrapping di una nuova operazione ScatterNd.
Uscita <U>
output ()
Un nuovo tensore con la forma data e gli aggiornamenti applicati secondo gli indici.

Metodi ereditati

Metodi pubblici

output pubblico <U> asOutput ()

Restituisce la maniglia simbolica di un tensore.

Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.

public static ScatterNd <U> create ( ambito ambito, indici operando <T>, aggiornamenti operando <U>, forma operando <T>)

Metodo Factory per creare una classe che esegue il wrapping di una nuova operazione ScatterNd.

Parametri
scopo ambito attuale
indici Tensore dell'indice.
aggiornamenti Aggiornamenti per diffondersi nell'output.
forma 1-D. La forma del tensore risultante.
ritorna
  • una nuova istanza di ScatterNd

output pubblico <U> output ()

Un nuovo tensore con la forma data e gli aggiornamenti applicati secondo gli indici.