TensorScatterSub

clase final pública TensorScatterSub

Resta "actualizaciones" dispersas de un tensor existente de acuerdo con los "índices".

Esta operación crea un nuevo tensor restando `actualizaciones` escasas del `tensor` pasado. Esta operación es muy similar a `tf.scatter_nd_sub`, excepto que las actualizaciones se restan de un tensor existente (a diferencia de una variable). Si la memoria del tensor existente no se puede reutilizar, se hace una copia y se actualiza.

`índices` es un tensor entero que contiene índices en un nuevo tensor 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 en 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 tensor_scatter_sub es restar elementos individuales de 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 resta de dispersión se vería así:

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     tensor = tf.ones([8], dtype=tf.int32)
     updated = tf.tensor_scatter_nd_sub(tensor, indices, updates)
     print(updated)
 
El tensor resultante se vería así:

[1, -10, 1, -9, -8, 1, 1, -11]

También podemos insertar rebanadas enteras de un tensor de mayor rango 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 adició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]]])
     tensor = tf.ones([4, 4, 4],dtype=tf.int32)
     updated = tf.tensor_scatter_nd_sub(tensor, indices, updates)
     print(updated)
 
El tensor resultante se vería así:

[[[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7 , -7, -7]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]] , [[-4, -4, -4, -4], [-5, -5, -5, -5], [-6, -6, -6, -6], [-7, -7 , -7, -7]], [[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> TensorScatterSub <T>
crear ( ámbito de ámbito, tensor de operando <T>, índices de operando <U>, actualizaciones de operando <T>)
Método de fábrica para crear una clase que envuelve una nueva operación TensorScatterSub.
Salida <T>
salida ()
Un nuevo tensor copiado de tensor y actualizaciones restadas 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 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.

TensorScatterSub <T> estático público crear ( alcance de alcance, tensor de operando <T>, índices de operando <U>, actualizaciones de operando <T>)

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

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

salida pública <T> salida ()

Un nuevo tensor copiado de tensor y actualizaciones restadas según los índices.