TensorScatterUpdate

classe final pública TensorScatterUpdate

Espalhe `updates` em um tensor existente de acordo com` índices`.

Esta operação cria um novo tensor aplicando `atualizações` esparsas ao` tensor` passado. Esta operação é muito semelhante a `tf.scatter_nd`, exceto que as atualizações são espalhadas em um tensor existente (em oposição a um tensor zero). Se a memória para o tensor existente não puder ser reutilizada, uma cópia é feita e atualizada.

Se `índices` contém duplicatas, então suas atualizações são acumuladas (somadas).

AVISO : A ordem em que as atualizações são aplicadas não é determinística, então a saída será não determinística se `índices` contiver duplicatas - por causa de alguns problemas de aproximação numérica, números somados em ordem diferente podem produzir resultados diferentes.

`í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 dispersão é inserir elementos individuais em 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, essa operação de dispersão ficaria assim:

>>> índices = tf.constant ([[4], [3], [1], [7]]) >>> updates = tf.constant ([9, 10, 11, 12]) >>> tensor = tf.ones ([8], dtype = tf.int32) >>> print (tf.tensor_scatter_nd_update (tensor, índices, atualizações)) tf.Tensor ([1 11 1 10 9 1 1 12], forma = (8 ,), dtype = int32)

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, essa operação de dispersão ficaria assim:

>>> índices = 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) >>> imprimir (tf.tensor_scatter_nd_update (tensor, índices, atualizações) .numpy ()) [[[5 5 5 5] [6 6 6 6] [7 7 7 7] [8 8 8 8]] [[1 1 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.
static <T, U extends Number> TensorScatterUpdate <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 TensorScatterUpdate.
Saída <T>
saída ()
Um novo tensor com a forma dada e atualizações aplicadas 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 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 TensorScatterUpdate <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 TensorScatterUpdate.

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 TensorScatterUpdate

output public Output <T> output ()

Um novo tensor com a forma dada e atualizações aplicadas de acordo com os índices.