Espalhe `atualizações` em um novo tensor de acordo com `índices`.
Cria um novo tensor aplicando `atualizações` esparsas a valores individuais ou fatias dentro de um tensor (inicialmente zero para numérico, vazio para string) da `forma` fornecida de acordo com os índices. Este operador é o inverso do operador tf.gather_nd
que extrai valores ou fatias de um determinado tensor.
Esta operação é semelhante a tensor_scatter_add, exceto que o tensor é inicializado com zero. Chamar tf.scatter_nd(indices, values, shape)
é idêntico a `tensor_scatter_add(tf.zeros(forma, valores.dtype), índices, valores)`
Se `índices` contiverem duplicatas, então suas atualizações serão acumuladas (somadas).
AVISO : A ordem em que as atualizações são aplicadas não é determinística, portanto a saída será não determinística se os `índices` contiverem duplicatas - devido a alguns problemas de aproximação numérica, os números somados em ordens diferentes podem produzir resultados diferentes.
`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 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.
![](https://tensorflow.google.cn/images/ScatterNd1.png?authuser=3&hl=pt)
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]
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.
![](https://tensorflow.google.cn/images/ScatterNd2.png?authuser=3&hl=pt)
Em Python, esta operaçã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]]])
shape = tf.constant([4, 4, 4])
scatter = tf.scatter_nd(indices, updates, shape)
print(scatter)
O tensor resultante ficaria assim:[[[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]], [[0, 0, 0, 0], [0, 0, 0, 0], [0 , 0, 0, 0], [0, 0, 0, 0]]]
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.
Constantes
Corda | OP_NAME | O nome desta operação, conforme conhecido pelo mecanismo principal do TensorFlow |
Métodos Públicos
Saída <U> | asOutput () Retorna o identificador simbólico do tensor. |
estático <U estende TType , T estende TNumber > 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
Constantes
String final estática pública OP_NAME
O nome desta operação, conforme conhecido pelo mecanismo principal do TensorFlow
Métodos Públicos
Saída pública <U> asOutput ()
Retorna o identificador simbólico do 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 índice. |
atualizações | Atualizações para dispersão na saída. |
forma | 1-D. A forma do tensor resultante. |
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.