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

StridesWindowSizeStartPaddingEndPaddingDilations 数组中的元素数。 此值必须等于 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引入的。

张量约束

  • InputGradientTensorInputTensorOutputGradientTensor 必须具有相同的 DataTypeDimensionCount
  • InputTensorOutputGradientTensor 必须具有相同 的大小

张量支持

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