Actualización de TensorScatter

clase final pública TensorScatterUpdate

Distribuya las "actualizaciones" en un tensor existente según los "índices".

Esta operación crea un nuevo tensor aplicando "actualizaciones" dispersas al "tensor" pasado. Esta operación es muy similar a `tf.scatter_nd`, excepto que las actualizaciones se distribuyen en un tensor existente (a diferencia de un tensor cero). Si la memoria del tensor existente no se puede reutilizar, se realiza una copia y se actualiza.

Si los "índices" contienen duplicados, sus actualizaciones se acumulan (suman).

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

"índices" es un tensor entero que contiene índices en un nuevo tensor de forma "forma". La última dimensión de los "índices" puede ser como máximo el rango de "forma":

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

La última dimensión de `indices` corresponde a índices en elementos (si `indices.shape[-1] = shape.rank`) o cortes (si `indices.shape[-1] < shape.rank`) a lo largo de la dimensión `indices .forma[-1]` de `forma`. `actualizaciones` es un tensor con forma

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

La forma más sencilla de dispersión es insertar elementos individuales en un tensor por índice. Por ejemplo, digamos que queremos 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í:

>>> índices = tf.constant([[4], [3], [1], [7]]) >>> actualizaciones = tf.constant([9, 10, 11, 12]) >>> tensor = tf.ones([8], dtype=tf.int32) >>> print(tf.tensor_scatter_nd_update(tensor, índices, actualizaciones)) tf.Tensor([ 1 11 1 10 9 1 1 12], forma=(8 ,), dtipo=int32)

También podemos insertar porciones enteras de un tensor de rango superior a la vez. Por ejemplo, si quisiéramos insertar dos cortes 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í:

>>> índices = tf.constant([[0], [2]]) >>> actualizaciones = 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) >>> imprimir (tf.tensor_scatter_nd_update(tensor, índices, actualizaciones).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]]]

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

Métodos heredados

Métodos públicos

Salida pública <T> como Salida ()

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.

creación pública estática de TensorScatterUpdate <T> (alcance del alcance , tensor del operando <T>, índices del operando <U>, actualizaciones del operando <T>)

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

Parámetros
alcance alcance actual
tensor Tensor para copiar/actualizar.
índices Tensor de índice.
actualizaciones Actualizaciones para distribuir en la salida.
Devoluciones
  • una nueva instancia de TensorScatterUpdate

Salida pública <T> salida ()

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