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

ScatterNd

ScatterNd public final class

Dispersa "actualizaciones" en un tensor de forma "forma" de acuerdo con "í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 especifiques. Esta operación es la inversa del operador `tf.gather_nd` que extrae valores o cortes de un tensor dado.

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

Si "índices" contiene duplicados, los "valores" duplicados se acumulan (suman).

ADVERTENCIA: El orden en que se aplican las actualizaciones es no determinista, por lo que la salida será no determinista si `indices` contiene duplicados; los números sumados en un orden diferente 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":

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

La última dimensión de `índices` corresponde a índices de elementos (si` indices.shape [-1] = shape.rank`) o rebanadas (si `indices.shape [-1] <shape.rank`) a lo largo de la dimensión` índices .shape [-1] `de` shape`.

`updates` es un tensor con forma:

indices.shape [: - 1] + forma [indices.shape [-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 sería el siguiente:

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

También puede insertar secciones enteras de un tensor de rango superior de una 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 sería el siguiente:

[[[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 del límite, se devuelve un error. En GPU, si se encuentra un índice fuera del límite, el índice se ignora.

Métodos públicos

Salida <U>
asOutput ()
Devuelve el identificador simbólico de un tensor.
estática <U, T se extiende Número> ScatterNd <U>
crear ( Alcance alcance, operando <T> índices, operando <U> actualizaciones, operando <T> forma)
Método de fábrica para crear una clase que envuelva 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

pública de salida <U> asOutput ()

Devuelve el identificador simbólico de un tensor.

Las entradas a 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> crear ( Alcance alcance, operando <T> índices, operando <U> actualizaciones, operando <T> forma)

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

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

pública de salida <U> salida ()

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