directml.h) (DML_MAX_POOLING_GRAD_OPERATOR_DESC 结构
计算最大池的反向传播梯度, (请参阅 DML_MAX_POOLING2_OPERATOR_DESC) 。
考虑一个 2x2 DML_MAX_POOLING2_OPERATOR_DESC ,没有填充或扩大,步幅为 1,这会执行以下操作。
InputTensor OutputTensor IndicesTensor
[[1, 2, 3], MaxPool [[4, 4], [[4, 4],
[2, 4, 2], --> [6, 7]] [7, 8]]
[5, 6, 7]]
输入张量中每个 2x2 窗口的最大元素生成一个输出元素。 下面是 DML_MAX_POOLING_GRAD_OPERATOR_DESC的输出示例,给定了类似的参数。
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]]
实际上,此运算符使用 InputTensor 确定每个窗口中最大元素的索引,并根据这些索引将 InputGradientTensor 的值分布到 OutputGradientTensor 中。 如果索引重叠,则求和值。 任何未引用的输出元素都归零。
如果 (窗口中多个元素具有相同的最大值) ,则选择逻辑元素索引最低的元素。
语法
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;
};
成员
InputTensor
类型: const DML_TENSOR_DESC*
输入特征张量。 这通常与 InputTensor 提供的张量相同,用于在前向传递中 DML_MAX_POOLING2_OPERATOR_DESC 。
InputGradientTensor
类型: const DML_TENSOR_DESC*
传入的渐变张量。 这通常是从上一层的反向传播的输出中获取的。 通常,此张量的大小与前向传递中相应DML_MAX_POOLING2_OPERATOR_DESC的输出大小相同。
OutputGradientTensor
类型: const DML_TENSOR_DESC*
包含反向传播渐变的输出张量。 通常,此张量的大小与前向传递中相应DML_MAX_POOLING2_OPERATOR_DESC的输入大小相同。
DimensionCount
类型: UINT
Strides、WindowSize、StartPadding、EndPadding 和 Dilations 数组中的元素数。 此值必须等于 InputTensor 的 DimensionCount - 2) (空间维度计数。 由于此运算符仅支持 4D 张量,因此此参数的唯一有效值为 2。
Strides
类型:_Field_size_ (DimensionCount) const UINT*
请参阅DML_MAX_POOLING2_OPERATOR_DESC中的步幅。
WindowSize
类型:_Field_size_ (DimensionCount) const UINT*
请参阅DML_MAX_POOLING2_OPERATOR_DESC中的 WindowSize。
StartPadding
类型:_Field_size_ (DimensionCount) const UINT*
请参阅 DML_MAX_POOLING2_OPERATOR_DESC 中的 StartPadding。
EndPadding
类型:_Field_size_ (DimensionCount) const UINT*
请参阅 DML_MAX_POOLING2_OPERATOR_DESC 中的 EndPadding。
Dilations
类型:_Field_size_ (DimensionCount) const UINT*
请参阅DML_MAX_POOLING2_OPERATOR_DESC中的 Dilations。
可用性
此运算符是在 中 DML_FEATURE_LEVEL_3_0
引入的。
张量约束
- InputGradientTensor、 InputTensor 和 OutputGradientTensor 必须具有相同的 DataType 和 DimensionCount。
- InputTensor 和 OutputGradientTensor 必须具有相同 的大小。
张量支持
DML_FEATURE_LEVEL_4_0 及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
InputTensor | 输入 | { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } | 4 到 5 | FLOAT32、FLOAT16 |
InputGradientTensor | 输入 | { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } | 4 到 5 | FLOAT32、FLOAT16 |
OutputGradientTensor | 输出 | { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } | 4 到 5 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_3_0 及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
InputTensor | 输入 | { BatchCount, ChannelCount, InputHeight, InputWidth } | 4 | FLOAT32、FLOAT16 |
InputGradientTensor | 输入 | { BatchCount, ChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT32、FLOAT16 |
OutputGradientTensor | 输出 | { BatchCount, ChannelCount, InputHeight, InputWidth } | 4 | FLOAT32、FLOAT16 |
要求
最低受支持的客户端 | Windows 10内部版本 20348 |
最低受支持的服务器 | Windows 10内部版本 20348 |
标头 | directml.h |