Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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 |