Advertencia: esta API está obsoleta y se eliminará en una versión futura de TensorFlow una vez que el reemplazo sea ​​estable.

ScatterNd

clase final pública ScatterNd

Dispersa las 'actualizaciones' en un tensor de forma 'forma' de acuerdo con los 'índices'.

Actualice el tensor de entrada dispersando "actualizaciones" dispersas de acuerdo con valores individuales en los "índices" especificados. Esta operación devuelve un tensor de `salida` con la `forma` que especifique. Esta operación es la inversa del operador tf.gather_nd que extrae valores o segmentos de un tensor dado.

Esta operación es similar a tf.tensor_scatter_nd_add , excepto que el tensor se inicializa en cero. Llamar tf.scatter_nd(indices, values, shape) es idéntico a llamar a `tf.tensor_scatter_nd_add(tf.zeros(forma, valores.dtipo), índices, valores)`

Si los `índices` contienen duplicados, los `valores` duplicados se acumulan (se suman).

ADVERTENCIA : El orden en que se aplican las actualizaciones no es determinista, por lo que la salida no será determinista si los "índices" contienen duplicados; los números sumados en diferente orden pueden producir resultados diferentes debido a algunos problemas de aproximación numérica.

`índices` es un tensor entero de forma `forma`. La última dimensión de `índices` puede ser como máximo el rango de `forma`:

índices.forma[-1] <= forma.rango

La última dimensión de `índices` corresponde a índices de elementos (si `índices.forma[-1] = forma.rango`) o porciones (si `índices.forma[-1] < forma.rango`) a lo largo de la dimensión `índices .forma[-1]` de `forma`.

`updates` es un tensor con forma:

índices.forma[:-1] + forma[índices.forma[-1]:]

La forma más simple de la operación de dispersión es insertar elementos individuales en un tensor por índice. Considere un ejemplo en el que desea insertar 4 elementos dispersos en un tensor de rango 1 con 8 elementos.

En Python, esta operación de dispersión se vería así:

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)
 
El tensor resultante se vería así:

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

También puede insertar porciones enteras de un tensor de mayor rango a la vez. Por ejemplo, puede insertar dos sectores en la primera dimensión de un tensor de rango 3 con dos matrices de nuevos valores.

En Python, esta operación de dispersión se vería así:

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)
 
El tensor resultante se vería así:

[[[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]]]

Tenga en cuenta que en la CPU, si se encuentra un índice fuera de límite, se devuelve un error. En GPU, si se encuentra un índice fuera de límite, se ignora el índice.

Métodos públicos

Salida <U>
como salida ()
Devuelve el identificador simbólico de un tensor.
estático <U, T extiende Número> ScatterNd <U>
crear ( ámbito de ámbito, índices de operando <T>, actualizaciones de operando <U>, forma de operando <T>)
Método de fábrica para crear una clase que envuelve una nueva operación ScatterNd.
Salida <U>
salida ()
Un nuevo tensor con la forma dada y actualizaciones aplicadas según los índices.

Métodos Heredados

Métodos públicos

Salida pública <U> como salida ()

Devuelve el identificador simbólico de un tensor.

Las entradas de las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.

public static ScatterNd <U> create ( alcance del alcance, índices del operando <T>, actualizaciones del operando <U>, forma del operando <T>)

Método de fábrica para crear una clase que envuelve una nueva operación ScatterNd.

Parámetros
alcance alcance actual
índices Tensor de índices.
actualizaciones Valores a dispersar en el tensor de salida.
forma 1-D. La forma del tensor de salida.
Devoluciones
  • una nueva instancia de ScatterNd

Salida pública <U> salida ()

Un nuevo tensor con la forma dada y actualizaciones aplicadas según los índices.