SpaceToDepth para tensores do tipo T.
Reorganiza blocos de dados espaciais em profundidade. Mais especificamente, esta operação gera uma cópia do tensor de entrada onde os valores das dimensões `altura` e `largura` são movidos para a dimensão `profundidade`. O atributo `block_size` indica o tamanho do bloco de entrada.
* Blocos não sobrepostos de tamanho `block_size x block size` são reorganizados em profundidade em cada local. * A profundidade do tensor de saída é `block_size * block_size * input_profundidade`. * As coordenadas Y, X dentro de cada bloco da entrada tornam-se o componente de ordem superior do índice do canal de saída. * A altura e largura do tensor de entrada devem ser divisíveis por block_size.
O atributo `data_format` especifica o layout dos tensores de entrada e saída com as seguintes opções: "NHWC": `[ lote, altura, largura, canais ]` "NCHW": `[ lote, canais, altura, largura ]` " NCHW_VECT_C": `qint8 [lote, canais / 4, altura, largura, 4]`
É útil considerar a operação como a transformação de um Tensor 6-D. por exemplo, para data_format = NHWC, cada elemento no tensor de entrada pode ser especificado por meio de 6 coordenadas, ordenadas diminuindo a significância do layout da memória como: n,oY,bY,oX,bX,iC (onde n=índice de lote, oX, oY significa X ou coordenadas Y dentro da imagem de saída, bX, bY significa coordenadas dentro do bloco de entrada, iC significa canais de entrada). A saída seria uma transposição para o seguinte layout: n,oY,oX,bY,bX,iC
Esta operação é útil para redimensionar as ativações entre convoluções (mas mantendo todos os dados), por exemplo, em vez de agrupar. Também é útil para treinar modelos puramente convolucionais.
Por exemplo, dada uma entrada de formato `[1, 2, 2, 1]`, data_format = "NHWC" e block_size = 2:
x = [[[[1], [2]],
[[3], [4]]]]
Esta operação produzirá um tensor de forma `[1, 1, 1, 4]`: [[[[1, 2, 3, 4]]]]
Aqui, a entrada tem um lote de 1 e cada elemento do lote tem formato `[2, 2, 1]`, a saída correspondente terá um único elemento (ou seja, largura e altura são ambos 1) e terá uma profundidade de 4 canais (1 * tamanho_do_bloco * tamanho_do_bloco). A forma do elemento de saída é `[1, 1, 4]`.Para um tensor de entrada com maior profundidade, aqui de forma `[1, 2, 2, 3]`, por exemplo
x = [[[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]]]
Esta operação, para block_size de 2, retornará o seguinte tensor de forma `[1, 1, 1, 12]` [[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]
Da mesma forma, para a seguinte entrada de formato `[1 4 4 1]` e um tamanho de bloco de 2: x = [[[[1], [2], [5], [6]],
[[3], [4], [7], [8]],
[[9], [10], [13], [14]],
[[11], [12], [15], [16]]]]
o operador retornará o seguinte tensor de forma `[1 2 2 4]`: x = [[[[1, 2, 3, 4],
[5, 6, 7, 8]],
[[9, 10, 11, 12],
[13, 14, 15, 16]]]]
Classes aninhadas
aula | SpaceToDepth.Opções | Atributos opcionais para SpaceToDepth |
Constantes
Corda | OP_NAME | O nome desta operação, conforme conhecido pelo mecanismo principal do TensorFlow |
Métodos Públicos
Saída <T> | asOutput () Retorna o identificador simbólico do tensor. |
estático <T estende TType > SpaceToDepth <T> | |
SpaceToDepth.Options estático | dataFormat (String dataFormat) |
Saída <T> | saída () |
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 <T> 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 SpaceToDepth <T> create (escopo do escopo , entrada Operand <T>, Long blockSize, Opções... opções)
Método de fábrica para criar uma classe que envolve uma nova operação SpaceToDepth.
Parâmetros
escopo | escopo atual |
---|---|
tamanho do bloco | O tamanho do bloco espacial. |
opções | carrega valores de atributos opcionais |
Devoluções
- uma nova instância do SpaceToDepth