DML_RESAMPLE_GRAD1_OPERATOR_DESC structure (directml.h)
Computes backpropagation gradients for DML_RESAMPLE2_OPERATOR_DESC.
DML_RESAMPLE2_OPERATOR_DESC rescales arbitrary dimensions of the input tensor using either nearest-neighbor sampling or bilinear interpolation. Given an InputGradientTensor with the same sizes as the output of an equivalent DML_RESAMPLE2_OPERATOR_DESC, this operator produces an OutputGradientTensor with the same sizes as the input of the DML_RESAMPLE2_OPERATOR_DESC.
As an example, consider a DML_RESAMPLE2_OPERATOR_DESC that performs a nearest-neighbor scaling of 1.5x in the width, and 0.5x in the height:
InputTensor OutputTensor
[[1, 2], Resample [1, 1, 2]
[3, 4]] -->
Notice how the 0th element of the input tensor (with value 1) contributes to two elements in the output; the 1st element (with value 2) contributes to one element in the output; and the 2nd and 3rd elements (with values 3 and 4) don't contribute to any elements of the output.
The corresponding DML_RESAMPLE_GRAD1_OPERATOR_DESC would perform the following:
InputGradientTensor OutputGradientTensor
[4, 5, 6] ResampleGrad [[9, 6],
--> [0, 0]]
Notice that the values in the OutputGradientTensor represent the weighted contributions of that element to the OutputTensor during the original DML_RESAMPLE2_OPERATOR_DESC operator.
Important
This API is available as part of the DirectML standalone redistributable package (see Microsoft.AI.DirectML version 1.9 and later. Also see DirectML version history.
Syntax
struct DML_RESAMPLE_GRAD1_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputGradientTensor;
const DML_TENSOR_DESC* OutputGradientTensor;
DML_INTERPOLATION_MODE InterpolationMode;
DML_AXIS_DIRECTION RoundingDirection;
UINT DimensionCount;
_Field_size_(DimensionCount) const FLOAT* Scales;
_Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
_Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
};
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_RESAMPLE2_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_RESAMPLE2_OPERATOR_DESC in the forward pass.
InterpolationMode
Type: DML_INTERPOLATION_MODE
See DML_RESAMPLE2_OPERATOR_DESC::InterpolationMode.
RoundingDirection
Type: DML_AXIS_DIRECTION
See DML_RESAMPLE2_OPERATOR_DESC::RoundingDirection.
DimensionCount
Type: UINT
The number of elements in the Scales, InputPixelOffsets, and OutputPixelOffsets arrays. This value must equal the DimensionCount provided in the InputGradientTensor and OutputGradientTensor.
Scales
Type: _Field_size_(DimensionCount) const FLOAT*
See DML_RESAMPLE2_OPERATOR_DESC::Scales.
InputPixelOffsets
Type: _Field_size_(DimensionCount) const FLOAT*
See DML_RESAMPLE2_OPERATOR_DESC::InputPixelOffsets.
OutputPixelOffsets
Type: _Field_size_(DimensionCount) const FLOAT*
See DML_RESAMPLE2_OPERATOR_DESC::OutputPixelOffsets.
Remarks
This operator is equivalent to DML_RESAMPLE_GRAD_OPERATOR_DESC when InterpolationMode is set to DML_INTERPOLATION_MODE_LINEAR; or when InterpolationMode is set to DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR, and RoundingDirection to DML_AXIS_DIRECTION_DECREASING, and OutputPixelOffsets are adjusted an additional -0.5.
Availability
This operator was introduced in DML_FEATURE_LEVEL_5_1.
Tensor constraints
InputGradientTensor and OutputGradientTensor must have the same DataType and DimensionCount.
Tensor support
Tensor | Kind | Supported dimension counts | Supported data types |
---|---|---|---|
InputGradientTensor | Input | 1 to 4 | FLOAT32, FLOAT16 |
OutputGradientTensor | Output | 1 to 4 | FLOAT32, FLOAT16 |
Requirements
Header | directml.h |