estrutura DML_MAX_POOLING_GRAD_OPERATOR_DESC (directml.h)
Calcula gradientes de backpropagation para pooling máximo (consulte DML_MAX_POOLING2_OPERATOR_DESC).
Considere um DML_MAX_POOLING2_OPERATOR_DESC 2x2 sem preenchimento nem vibrações e um passo de 1, que executa o seguinte.
InputTensor OutputTensor IndicesTensor
[[1, 2, 3], MaxPool [[4, 4], [[4, 4],
[2, 4, 2], --> [6, 7]] [7, 8]]
[5, 6, 7]]
O maior elemento de cada janela 2x2 no tensor de entrada produz um elemento da saída. Abaixo está um exemplo da saída de DML_MAX_POOLING_GRAD_OPERATOR_DESC, considerando parâmetros semelhantes.
InputTensor InputGradientTensor OutputGradientTensor
[[1, 2, 3], [[1, 2], MaxPoolGrad [[0, 0, 0],
[2, 4, 2], [4, 5]] --> [0, 3, 0],
[5, 6, 7]] [0, 4, 5]]
Na verdade, esse operador usa o InputTensor para determinar o índice do maior elemento de cada janela e distribui os valores de InputGradientTensor no OutputGradientTensor com base nesses índices. Quando os índices se sobrepõem, os valores são somados. Todos os elementos de saída não referenciados são zerados.
No caso de uma vinculação (em que mais de um elemento em uma janela tem o mesmo valor máximo), o elemento com o menor índice de elemento lógico é escolhido.
Sintaxe
struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputGradientTensor;
const DML_TENSOR_DESC *OutputGradientTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *WindowSize;
const UINT *StartPadding;
const UINT *EndPadding;
const UINT *Dilations;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor do recurso de entrada. Normalmente, esse é o mesmo tensor que foi fornecido como InputTensor para DML_MAX_POOLING2_OPERATOR_DESC no passe para frente.
InputGradientTensor
Tipo: const DML_TENSOR_DESC*
O tensor de gradiente de entrada. Normalmente, isso é obtido da saída de backpropagation de uma camada anterior. Normalmente, esse tensor teria os mesmos tamanhos que a saída do DML_MAX_POOLING2_OPERATOR_DESC correspondente no passe para frente.
OutputGradientTensor
Tipo: const DML_TENSOR_DESC*
Um tensor de saída que contém os gradientes backpropagated. Normalmente, esse tensor teria os mesmos tamanhos que a entrada do DML_MAX_POOLING2_OPERATOR_DESC correspondente no passe para frente.
DimensionCount
Tipo: UINT
O número de elementos nas matrizes Strides, WindowSize, StartPadding, EndPadding e Dilations . Esse valor deve ser igual à contagem de dimensões espaciais (DimensionCount de InputTensor - 2). Como esse operador dá suporte apenas a tensores 4D, o único valor válido para esse parâmetro é 2.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
Veja Strides in DML_MAX_POOLING2_OPERATOR_DESC.
WindowSize
Tipo: _Field_size_(DimensionCount) const UINT*
Consulte WindowSize no DML_MAX_POOLING2_OPERATOR_DESC.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Consulte StartPadding em DML_MAX_POOLING2_OPERATOR_DESC.
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Consulte EndPadding em DML_MAX_POOLING2_OPERATOR_DESC.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
Consulte Dilations em DML_MAX_POOLING2_OPERATOR_DESC.
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_3_0
.
Restrições do Tensor
- InputGradientTensor, InputTensor e OutputGradientTensor devem ter os mesmos DataType e DimensionCount.
- InputTensor e OutputGradientTensor devem ter os mesmos Tamanhos.
Suporte ao Tensor
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Dimensões | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|---|
InputTensor | Entrada | { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } | 4 a 5 | FLOAT32, FLOAT16 |
InputGradientTensor | Entrada | { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } | 4 a 5 | FLOAT32, FLOAT16 |
OutputGradientTensor | Saída | { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } | 4 a 5 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_3_0 e superior
Tensor | Tipo | Dimensões | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|---|
InputTensor | Entrada | { BatchCount, ChannelCount, InputHeight, InputWidth } | 4 | FLOAT32, FLOAT16 |
InputGradientTensor | Entrada | { BatchCount, ChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT32, FLOAT16 |
OutputGradientTensor | Saída | { BatchCount, ChannelCount, InputHeight, InputWidth } | 4 | FLOAT32, FLOAT16 |
Requisitos
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Cabeçalho | directml.h |