DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC structure (directml.h)
Computes backpropagation gradients for average pooling (see DML_AVERAGE_POOLING_OPERATOR_DESC).
Consider a 2x2 DML_AVERAGE_POOLING_OPERATOR_DESC, without padding and a stride of 1, that performs the following.
InputTensor OutputTensor
[[[[1, 2, 3], AvgPool [[[[3, 4],
[4, 5, 6], --> [6, 7]]]]
[7, 8, 9]]]]
Each 2x2 window in the input tensor is averaged to produce one element of the output (reading zeros for elements beyond the edge). Here's an example of the output of DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC given similar parameters.
InputGradientTensor OutputGradientTensor
[[[[1, 2], AvgPoolGrad [[[[0.25, 0.75, 0.5],
[3, 4]]]] --> [ 1, 2.5, 1.5],
[0.75, 1.75, 1]]]]
Notice that the values in the OutputGradientTensor represent the weighted contributions of that element to the OutputTensor during the original DML_AVERAGE_POOLING_OPERATOR_DESC operator.
Syntax
struct DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC {
const DML_TENSOR_DESC *InputGradientTensor;
const DML_TENSOR_DESC *OutputGradientTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *WindowSize;
const UINT *StartPadding;
const UINT *EndPadding;
BOOL IncludePadding;
};
Members
InputGradientTensor
Type: const DML_TENSOR_DESC*
The incoming gradient tensor. This is typically obtained from the output of backpropagation of a preceding layer. Typically this tensor would have the same sizes as the output of the corresponding DML_AVERAGE_POOLING_OPERATOR_DESC in the forward pass.
OutputGradientTensor
Type: const DML_TENSOR_DESC*
An output tensor containing the backpropagated gradients. Typically this tensor would have the same sizes as the input of the corresponding DML_AVERAGE_POOLING_OPERATOR_DESC in the forward pass.
DimensionCount
Type: UINT
The number of elements in the Strides, WindowSize, StartPadding, and EndPadding arrays. This value must equal the spatial dimension count. The spatial dimension count is 2 if 4D tensors are provided, or 3 if 5D tensors are provided.
Strides
Type: _Field_size_(DimensionCount) const UINT*
See Strides in DML_AVERAGE_POOLING_OPERATOR_DESC.
WindowSize
Type: _Field_size_(DimensionCount) const UINT*
See WindowSize in DML_AVERAGE_POOLING_OPERATOR_DESC.
StartPadding
Type: _Field_size_(DimensionCount) const UINT*
See StartPadding in DML_AVERAGE_POOLING_OPERATOR_DESC.
EndPadding
Type: _Field_size_(DimensionCount) const UINT*
See EndPadding in DML_AVERAGE_POOLING_OPERATOR_DESC.
IncludePadding
Type: BOOL
See IncludePadding in DML_AVERAGE_POOLING_OPERATOR_DESC.
Availability
This operator was introduced in DML_FEATURE_LEVEL_3_0
.
Tensor constraints
InputGradientTensor and OutputGradientTensor must have the same DataType and DimensionCount.
Tensor support
Tensor | Kind | Supported dimension counts | Supported data types |
---|---|---|---|
InputGradientTensor | Input | 4 to 5 | FLOAT32, FLOAT16 |
OutputGradientTensor | Output | 4 to 5 | FLOAT32, FLOAT16 |
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10 Build 20348 |
Minimum supported server | Windows 10 Build 20348 |
Header | directml.h |