Aviso: esta API está obsoleta e será removida em uma versão futura do TensorFlow depois que a substituição estiver estável.

TensorScatterAdd

public final class TensorScatterAdd

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

Esta operação cria um novo tensor adicionando `atualizações` esparsas ao` tensor` passado. Esta operação é muito semelhante a `tf.compat.v1.scatter_nd_add`, exceto que as atualizações são adicionadas a 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` tensor.shape`. A última dimensão de `índices` pode ser no máximo a classificação de` tensor.shape`:

indices.shape [-1] <= tensor.shape.rank

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

indices.shape [: - 1] + tensor.shape [indices.shape [-1]:]

A forma mais simples de tensor_scatter_add é adicionar elementos individuais a um tensor por índice. Por exemplo, digamos que queremos adicionar 4 elementos em um tensor de classificação 1 com 8 elementos.

Em Python, esta operação de dispersão add 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_add(tensor, indices, updates)
     print(updated)
 
O tensor resultando ficaria assim:

[1, 12, 1, 11, 10, 1, 1, 13]

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_add(tensor, indices, updates)
     print(updated)
 
O tensor resultando ficaria assim:

[[[6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[1, 1, 1 , 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[6, 6, 6, 6], [7, 7 , 7, 7], [8, 8, 8, 8], [9, 9, 9, 9]], [[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> TensorScatterAdd <T>
criar ( 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 TensorScatterAdd.
Output <T>
saída ()
Um novo tensor copiado do tensor e atualizações adicionadas 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 TensorScatterAdd <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 TensorScatterAdd.

Parâmetros
escopo 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 TensorScatterAdd

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

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