TensorScatterSub

classe final pública TensorScatterSub

Subtrai `updates` esparsas de um tensor existente de acordo com `indices`.

Esta operação cria um novo tensor subtraindo `updates` esparsas do passado em `tensor`. Esta operação é muito semelhante a `tf.scatter_nd_sub`, exceto que as atualizações são subtraídas de um tensor existente (em oposição a uma variável). Se a memória para o tensor existente não puder ser reutilizada, uma cópia é feita e atualizada.

`indices` é um tensor inteiro contendo índices em um novo tensor de forma `shape`. A última dimensão de `índices` pode ser no máximo a classificação de `forma`:

índices.forma[-1] <= forma.classificação

A última dimensão de `indices` corresponde a índices em elementos (se `indices.shape[-1] = shape.rank`) ou fatias (se `indices.shape[-1] < shape.rank`) ao longo da dimensão `indices .shape[-1]` de `shape`. `updates` é um tensor com forma

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

A forma mais simples de tensor_scatter_sub é subtrair elementos individuais de um tensor por índice. Por exemplo, digamos que queremos inserir 4 elementos dispersos em um tensor de rank 1 com 8 elementos.

Em Python, esta operação de subtração de dispersão ficaria assim:

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)
 
O tensor resultante ficaria assim:

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

Também podemos inserir fatias inteiras de um tensor de classificação mais alta de uma só vez. Por exemplo, se quisermos inserir duas fatias na primeira dimensão de um tensor de rank 3 com duas matrizes de novos valores.

Em Python, esta operação de adição de dispersão ficaria assim:

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)
 
O tensor resultante ficaria assim:

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

Observe que na CPU, se um índice fora do limite for encontrado, um erro será retornado. Na GPU, se um índice fora do limite for encontrado, o índice será ignorado.

Métodos públicos

Saída <T>
comoSaída ()
Retorna o identificador simbólico de um tensor.
estático <T, U estende Número> TensorScatterSub <T>
create ( Escopo do escopo, tensor do operando <T>, índices do operando <U>, atualizações do operando <T>)
Método de fábrica para criar uma classe que envolve uma nova operação TensorScatterSub.
Saída <T>
saída ()
Um novo tensor copiado do tensor e atualizações subtraídas de acordo com os índices.

Métodos Herdados

Métodos públicos

Public Output <T> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para operações do TensorFlow são saídas de outra operação do TensorFlow. Este método é usado para obter um identificador simbólico que representa o cálculo da entrada.

public static TensorScatterSub <T> create ( Escopo do escopo, tensor do Operando <T>, índices do Operando <U>, atualizações do Operando <T>)

Método de fábrica para criar uma classe que envolve uma nova operação TensorScatterSub.

Parâmetros
alcance escopo atual
tensor Tensor para copiar/atualizar.
índices Tensor de índice.
atualizações Atualizações para espalhar na saída.
Devoluções
  • uma nova instância de TensorScatterSub

saída pública <T> saída ()

Um novo tensor copiado do tensor e atualizações subtraídas de acordo com os índices.