ScatterNd

clase final pública ScatterNd

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

Dispersión de `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 determinado.

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

Si los `índices` contienen duplicados, las `actualizaciones` asociadas se acumulan (suman) en el tensor de salida.

ADVERTENCIA : para los tipos de datos de punto flotante, la salida puede ser no determinista. Esto se debe a que el orden en que se aplican las actualizaciones no es determinista y cuando se agregan números de coma flotante en diferentes órdenes, el error de aproximación numérica resultante puede ser ligeramente diferente. Sin embargo, la salida será determinista si el determinismo operativo está habilitado a través tf.config.experimental.enable_op_determinism .

`índices` es un tensor entero que contiene índices en el tensor de salida. 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([[1], [3]])
     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í:

[[[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]], [[5, 5, 5, 5], [6, 6, 6, 6], [7 , 7, 7, 7], [8, 8, 8, 8]]]

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.