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 Slice (see DML_SLICE1_OPERATOR_DESC).
Recall that DML_SLICE1_OPERATOR_DESC extracts a subregion of an input tensor. Given an InputGradientTensor with the same sizes as the output of an equivalent DML_SLICE1_OPERATOR_DESC, this operator produces an OutputGradientTensor with the same sizes as the input of DML_SLICE1_OPERATOR_DESC. The sliced elements are propagated to the output, and all other elements are set to 0.
As an example, consider a DML_SLICE1_OPERATOR_DESC that extracts the following elements from a tensor:
InputTensor OutputTensor
[[a, b, c, d],
[e, f, g, h], Slice [[a, c],
[i, j, k, l], --> [i, k]]
[m, n, o, p]]
If provided the same InputWindowOffsets/Sizes/Strides as in the above example, this operator would then perform the following transform.
InputGradientTensor OutputGradientTensor
[[a, 0, c, 0],
[[a, c], SliceGrad [0, 0, 0, 0],
[i, k]] --> [i, 0, k, 0],
[0, 0, 0, 0]]
Syntax
struct DML_SLICE_GRAD_OPERATOR_DESC {
const DML_TENSOR_DESC *InputGradientTensor;
const DML_TENSOR_DESC *OutputGradientTensor;
UINT DimensionCount;
const UINT *InputWindowOffsets;
const UINT *InputWindowSizes;
const INT *InputWindowStrides;
};
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_SLICE1_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_SLICE1_OPERATOR_DESC in the forward pass.
DimensionCount
Type: UINT
The number of elements in the InputWindowOffsets, InputWindowSizes, and InputWindowStrides arrays. This value must equal the DimensionCount provided in the InputGradientTensor and OutputGradientTensor.
InputWindowOffsets
Type: _Field_size_(DimensionCount) const UINT*
See InputWindowOffsets in DML_SLICE1_OPERATOR_DESC.
InputWindowSizes
Type: _Field_size_(DimensionCount) const UINT*
See InputWindowSizes in DML_SLICE1_OPERATOR_DESC.
InputWindowStrides
Type: _Field_size_(DimensionCount) const UINT*
See InputWindowStrides in DML_SLICE1_OPERATOR_DESC.
Note that unlike DML_SLICE1_OPERATOR_DESC, this operator requires non-zero strides. That's because with a zero stride, it's ambiguous as to which input element should map to each output element, and therefore backpropagation can't be performed. Like DML_SLICE1_OPERATOR_DESC, negative strides flip the input window direction along that axis.
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
DML_FEATURE_LEVEL_4_1 and above
Tensor | Kind | Supported dimension counts | Supported data types |
---|---|---|---|
InputGradientTensor | Input | 1 to 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputGradientTensor | Output | 1 to 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_1 and above
Tensor | Kind | Supported dimension counts | Supported data types |
---|---|---|---|
InputGradientTensor | Input | 1 to 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputGradientTensor | Output | 1 to 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_3_0 and above
Tensor | Kind | Supported dimension counts | Supported data types |
---|---|---|---|
InputGradientTensor | Input | 4 to 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputGradientTensor | Output | 4 to 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10 Build 20348 |
Minimum supported server | Windows 10 Build 20348 |
Header | directml.h |