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 para o tensor existente não puder ser reutilizada, uma cópia é feita e atualizada.
`índices` é um tensor inteiro contendo índices em um novo tensor de forma` forma`. A última dimensão de `índices` pode ser no máximo a classificação de` forma`:
indices.shape [-1] <= shape.rank
A última dimensão de `índices` corresponde aos índices em elementos (se` indices.shape [-1] = forma.rank`) ou fatias (se `indices.shape [-1] <forma.rank`) ao longo dos índices da dimensão .shape [-1] `de` forma`. `updates` é um tensor com forma
indices.shape [: - 1] + forma [indices.shape [-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 dispersão subtrair 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 resultando 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 vez. Por exemplo, se quisermos inserir duas fatias na primeira dimensão de um tensor de classificação 3 com duas matrizes de novos valores.
Em Python, esta operação de dispersão add 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 resultando 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
Output <T> | asOutput () Retorna o identificador simbólico de um tensor. |
estática <T, U estende Number> TensorScatterSub <T> | |
Output <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
pública Output <T> asOutput ()
Retorna o identificador simbólico de um tensor.
As entradas para as 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 ( Scope escopo, Operando <T> tensor, Operando <U> índices, Operando <T> atualizações)
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
pública Output <T> de saída ()
Um novo tensor copiado do tensor e atualizações subtraídas de acordo com os índices.