ScatterNd

classe final pública ScatterNd

Espalha `atualizações` em um tensor de forma `forma` de acordo com `índices`.

Espalhe `atualizações` esparsas de acordo com valores individuais nos `índices` especificados. Esta operação retorna um tensor de saída com a `forma` que você especifica. Esta operação é o inverso do operador tf.gather_nd que extrai valores ou fatias de um determinado tensor.

Esta operação é semelhante a tf.tensor_scatter_nd_add , exceto que o tensor é inicializado com zero. Chamar tf.scatter_nd(indices, updates, shape) é idêntico a chamar `tf.tensor_scatter_nd_add(tf.zeros(shape, updates.dtype), indices, updates)`

Se `indices` contém duplicatas, as `atualizações` associadas são acumuladas (somadas) no tensor de saída.

AVISO : Para tipos de dados de ponto flutuante, a saída pode ser não determinística. Isso ocorre porque a ordem na qual as atualizações são aplicadas não é determinística e quando os números de ponto flutuante são adicionados em ordens diferentes, o erro de aproximação numérica resultante pode ser ligeiramente diferente. No entanto, a saída será determinística se o determinismo operacional estiver habilitado via tf.config.experimental.enable_op_determinism .

`indices` é um tensor inteiro contendo índices no tensor de saída. 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 de 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 operação de dispersão é inserir elementos individuais em um tensor por índice. Considere um exemplo onde você deseja inserir 4 elementos dispersos em um tensor de classificação 1 com 8 elementos.

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

indices = tf.constant([[4], [3], [1], [7]])
     updates = tf.constant([9, 10, 11, 12])
     shape = tf.constant([8])
     scatter = tf.scatter_nd(indices, updates, shape)
     print(scatter)
 
O tensor resultante ficaria assim:

[0, 11, 0, 10, 9, 0, 0, 12]

Você também pode inserir fatias inteiras de um tensor de classificação superior de uma só vez. Por exemplo, você pode 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 ficaria assim:

indices = tf.constant([[1], [3]])
     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]]])
     shape = tf.constant([4, 4, 4])
     scatter = tf.scatter_nd(indices, updates, shape)
     print(scatter)
 
O tensor resultante ficaria assim:

[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[5, 5, 5 , 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]], [[0, 0, 0, 0], [0, 0 , 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[5, 5, 5, 5], [6, 6, 6, 6], [7 , 7, 7, 7], [8, 8, 8, 8]]]

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 <U>
asOutput ()
Retorna o identificador simbólico de um tensor.
estático <U, T estende número> ScatterNd <U>
criar (escopo do escopo , índices do operando <T>, atualizações do operando <U>, forma do operando <T>)
Método de fábrica para criar uma classe que envolve uma nova operação ScatterNd.
Saída <U>
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

Saída pública <U> 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 ScatterNd <U> create (escopo do escopo , índices do operando <T>, atualizações do operando <U>, forma do operando <T>)

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

Parâmetros
escopo escopo atual
índices Tensor de índices.
atualizações Valores a serem espalhados no tensor de saída.
forma 1-D. A forma do tensor de saída.
Devoluções
  • uma nova instância de ScatterNd

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

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