TensorScatterSub

classe final pública TensorScatterSub

Subtrai `atualizações` esparsas de um tensor existente de acordo com `índices`.

Esta operação cria um novo tensor subtraindo `atualizações` esparsas do `tensor` passado. 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 do tensor existente não puder ser reutilizada, uma cópia será feita e atualizada.

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

índices.shape[-1] <= shape.rank

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 .forma[-1]` de `forma`. `updates` é um tensor com forma

índices.forma[:-1] + forma[indices.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 classificação 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 superior de uma só vez. Por exemplo, se quiséssemos inserir duas fatias na primeira dimensão de um tensor de posto 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>
asOutput ()
Retorna o identificador simbólico de um tensor.
estático <T, U estende número> TensorScatterSub <T>
criar (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 atualizado subtraído de acordo com os índices.

Métodos herdados

Métodos Públicos

Saída pública <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
escopo escopo atual
tensor Tensor para copiar/atualizar.
índices Tensor de índice.
atualizações Atualizações para dispersão na saída.
Devoluções
  • uma nova instância do TensorScatterSub

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

Um novo tensor copiado do tensor e atualizado subtraído de acordo com os índices.