estrutura DML_DEPTH_TO_SPACE1_OPERATOR_DESC (directml.h)
Reorganiza (permuta) dados de profundidade em blocos de dados espaciais. O operador gera uma cópia do tensor de entrada em que os valores da dimensão de profundidade são movidos em blocos espaciais para as dimensões de altura e largura.
Essa é a transformação inversa de DML_SPACE_TO_DEPTH1_OPERATOR_DESC.
Sintaxe
struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT BlockSize;
DML_DEPTH_SPACE_ORDER Order;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor do qual ler. As dimensões do tensor de entrada são { BatchCount, InputChannelCount, InputHeight, InputWidth }
.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor no qual gravar os resultados. As dimensões do tensor de saída são { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
, em que:
- OutputChannelCount é calculado como InputChannelCount / (
BlockSize
*BlockSize
) - OutputHeight é calculado como InputHeight *
BlockSize
- OutputWidth é calculado como InputWidth *
BlockSize
BlockSize
Tipo: UINT
A largura e a altura dos blocos movidos.
Order
Tipo: DML_DEPTH_SPACE_ORDER
Confira DML_DEPTH_SPACE_ORDER.
Exemplos
Todos os exemplos nesta seção usam a entrada abaixo.
InputTensor: (Sizes:{1, 8, 2, 3}, DataType:UINT32)
[[[[0, 1, 2],
[3, 4, 5]],
[[9, 10, 11],
[12, 13, 14]],
[[18, 19, 20],
[21, 22, 23]],
[[27, 28, 29],
[30, 31, 32]],
[[36, 37, 38],
[39, 40, 41]],
[[45, 46, 47],
[48, 49, 50]],
[[54, 55, 56],
[57, 58, 59]],
[[63, 64, 65],
[66, 67, 68]]]]
Exemplo 1. Ordem de linha de coluna de profundidade
BlockSize: 2
Order: DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW
OutputTensor: (Sizes:{1, 2, 4, 6}, DataType:UINT32)
[[[[ 0, 18, 1, 19, 2, 20],
[36, 54, 37, 55, 38, 56],
[ 3, 21, 4, 22, 5, 23],
[39, 57, 40, 58, 41, 59]],
[[ 9, 27, 10, 28, 11, 29],
[45, 63, 46, 64, 47, 65],
[12, 30, 13, 31, 14, 32],
[48, 66, 49, 67, 50, 68]]]]
Exemplo 2. Ordem de profundidade de linha de coluna
BlockSize: 2
Order: DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH
OutputTensor: (Sizes:{1, 2, 4, 6}, DataType:UINT32)
[[[[ 0, 9, 1, 10, 2, 11],
[18, 27, 19, 28, 20, 29],
[ 3, 12, 4, 13, 5, 14],
[21, 30, 22, 31, 23, 32]],
[[36, 45, 37, 46, 38, 47],
[54, 63, 55, 64, 56, 65],
[39, 48, 40, 49, 41, 50],
[57, 66, 58, 67, 59, 68]]]]
Comentários
Quando Order é definido como DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW, DML_DEPTH_TO_SPACE1_OPERATOR_DESC é equivalente a DML_DEPTH_TO_SPACE_OPERATOR_DESC.
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_2_1
.
Restrições do Tensor
InputTensor e OutputTensor devem ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_5_0 e superior
Tensor | Tipo | Dimensões | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|---|
InputTensor | Entrada | { BatchCount, InputChannelCount, InputHeight, InputWidth } | 4 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputTensor | Saída | { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Dimensões | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|---|
InputTensor | Entrada | { BatchCount, InputChannelCount, InputHeight, InputWidth } | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Saída | { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Cabeçalho | directml.h |