Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Combina uma matriz de patches formados de uma janela deslizante em um tensor grande contendo.
Considere um tensor de entrada em lote que contém blocos locais deslizantes, por exemplo, patches de imagens, de forma (N,C×∏(WindowSizes),BlockCount), em que N é a dimensão do lote, C×∏(WindowSizes) é o número de valores dentro de uma janela (uma janela tem locais espaciais ∏(WindowSizes) cada um contendo um vetor canal C) e BlockCount é o número total de blocos. Essa operação combina esses blocos locais no tensor de saída grande da forma (N,C, OutputSize[0],OutputSize[1],...) somando os valores sobrepostos. Os argumentos devem satisfazer:
BlocksPerDimension[d] = ( SpatialSize[d] + StartPadding[d] + EndPadding[d] - Dilations[d] * (WindowSizes[d] - 1) - 1 ) / stride[d] ) + 1
BlockCount = ∏d BlocksPerDimension[d]
Em que:
- <0 = d < ContagemDimensão
O OutputSize (o tamanho de OutputTensor) descreve a forma espacial do tensor grande que contém os blocos locais deslizantes.
Os argumentos StartPadding, EndPadding, Strides e Dilations especificam como os blocos deslizantes são recuperados.
Importante
Essa API está disponível como parte do pacote redistribuível autônomo do DirectML (consulte Microsoft.AI.DirectML versão 1.15.1 e posterior. Consulte também de histórico de versões do DirectML.
Sintaxe
struct DML_FOLD_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
UINT DimensionCount;
_Field_size_(DimensionCount) const UINT* WindowSizes;
_Field_size_(DimensionCount) const UINT* Strides;
_Field_size_(DimensionCount) const UINT* Dilations;
_Field_size_(DimensionCount) const UINT* StartPadding;
_Field_size_(DimensionCount) const UINT* EndPadding;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de entrada do qual ler.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de saída para o qual gravar os resultados.
DimensionCount
Tipo: UINT
As dimensões espaciais do InputTensor. DimensionCount deve ser <= 6.
WindowSizes
Tipo: _Field_size_(DimensionCount) const UINT*
O tamanho da janela deslizante. Tamanho do patch extraído.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
O passo da janela deslizante (com dimensões WindowSizes) nas dimensões espaciais de entrada. Eles são separados dos passos tensores incluídos em DML_TENSOR_DESC. Tamanho da etapa dos patches extraídos.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
As vibrações da janela deslizante (com dimensões WindowSizes) nas dimensões espaciais de entrada, dimensionando o espaço entre os pontos do kernel. Vibrações do patch extraído.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Uma matriz que contém a quantidade de preenchimento zero implícito a ser aplicado ao início de cada dimensão espacial do InputTensor. Inicie o preenchimento do tensor de origem.
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Uma matriz que contém a quantidade de preenchimento zero implícito a ser aplicado ao final de cada dimensão espacial do InputTensor. Preenchimento final do tensor de origem.
Exemplos
Exemplo 1
Uma dobra de 1 canal.
InputTensor: (Sizes:{1, 9, 4}, DataType:FLOAT32)
[[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.],
[16., 17., 18., 19.],
[20., 21., 22., 23.],
[24., 25., 26., 27.],
[28., 29., 30., 31.],
[32., 33., 34., 35.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 0., 5., 13., 9.],
[ 14., 38., 54., 32.],
[ 38., 86., 102., 56.],
[ 26., 57., 65., 35.]]]]
Exemplo 2
Uma dobra acolchoável de 1 canal.
InputTensor: (Sizes:{1, 9, 8}, DataType:FLOAT32)
[[[ 0., 1., 2., 3., 4., 5., 6., 7.],
[ 8., 9., 10., 11., 12., 13., 14., 15.],
[16., 17., 18., 19., 20., 21., 22., 23.],
[24., 25., 26., 27., 28., 29., 30., 31.],
[32., 33., 34., 35., 36., 37., 38., 39.],
[40., 41., 42., 43., 44., 45., 46., 47.],
[48., 49., 50., 51., 52., 53., 54., 55.],
[56., 57., 58., 59., 60., 61., 62., 63.],
[64., 65., 66., 67., 68., 69., 70., 71.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 26., 70., 102., 60.],
[ 78., 183., 231., 129.],
[ 84., 195., 243., 135.],
[ 82., 182., 214., 116.]]]]
Exemplo 3
Uma dobra acolchoável de dois canais.
InputTensor: (Sizes:{1, 18, 8}, DataType:FLOAT32)
[[[ 0., 1., 2., 3., 4., 5., 6., 7.],
[ 8., 9., 10., 11., 12., 13., 14., 15.],
[ 16., 17., 18., 19., 20., 21., 22., 23.],
[ 24., 25., 26., 27., 28., 29., 30., 31.],
[ 32., 33., 34., 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44., 45., 46., 47.],
[ 48., 49., 50., 51., 52., 53., 54., 55.],
[ 56., 57., 58., 59., 60., 61., 62., 63.],
[ 64., 65., 66., 67., 68., 69., 70., 71.],
[ 72., 73., 74., 75., 76., 77., 78., 79.],
[ 80., 81., 82., 83., 84., 85., 86., 87.],
[ 88., 89., 90., 91., 92., 93., 94., 95.],
[ 96., 97., 98., 99., 100., 101., 102., 103.],
[104., 105., 106., 107., 108., 109., 110., 111.],
[112., 113., 114., 115., 116., 117., 118., 119.],
[120., 121., 122., 123., 124., 125., 126., 127.],
[128., 129., 130., 131., 132., 133., 134., 135.],
[136., 137., 138., 139., 140., 141., 142., 143.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 2, 4, 4}, DataType:FLOAT32)
[[[[ 26., 70., 102., 60.],
[ 78., 183., 231., 129.],
[ 84., 195., 243., 135.],
[ 82., 182., 214., 116.]],
[[170., 358., 390., 204.],
[294., 615., 663., 345.],
[300., 627., 675., 351.],
[226., 470., 502., 260.]]]]
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_6_4.
Restrições do Tensor
InputTensor e OutputTensor devem ter o mesmo DimensionCount.
Suporte ao Tensor
| Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
|---|---|---|---|
| Tensor de entrada | Entrada | 3 a 8 | |
| Tensor de saída | Saída | 3 a 8 |
Requisitos
| cabeçalho | directml.h |