DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC 结构 (directml.h)

计算 批量规范化的反向传播梯度。 DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC 执行多个计算,详见单独的输出说明。

OutputScaleGradientTensorOutputBiasGradientTensor 是使用 MeanTensor、ScaleTensorVarianceTensor 大小等于 1 的维度集的总和计算的。

语法

struct DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *MeanTensor;
  const DML_TENSOR_DESC *VarianceTensor;
  const DML_TENSOR_DESC *ScaleTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  const DML_TENSOR_DESC *OutputScaleGradientTensor;
  const DML_TENSOR_DESC *OutputBiasGradientTensor;
  FLOAT                 Epsilon;
};

成员

InputTensor

类型: const DML_TENSOR_DESC*

包含输入数据的张量。 这通常与 InputTensor 提供的张量相同,用于在前向传递中 DML_BATCH_NORMALIZATION_OPERATOR_DESC

InputGradientTensor

类型: const DML_TENSOR_DESC*

传入的渐变张量。 这通常是从上一层的反向传播的输出中获取的。

MeanTensor

类型: const DML_TENSOR_DESC*

包含平均值数据的张量。 这通常与 MeanTensor 提供的张量相同,用于在前向传递中 DML_BATCH_NORMALIZATION_OPERATOR_DESC

VarianceTensor

类型: const DML_TENSOR_DESC*

包含方差数据的张量。 这通常与 VarianceTensor 提供的张量相同,用于在前向传递 中DML_OPERATOR_BATCH_NORMALIZATION

ScaleTensor

类型: const DML_TENSOR_DESC*

包含刻度数据的张量。 这通常与 ScaleTensor 提供的张量相同,用于在前向传递中 DML_BATCH_NORMALIZATION_OPERATOR_DESC

OutputGradientTensor

类型: const DML_TENSOR_DESC*

对于输入中的每个相应值, OutputGradient = InputGradient * (Scale / sqrt(Variance + Epsilon))为 。

OutputScaleGradientTensor

类型: const DML_TENSOR_DESC*

以下计算完成或输入中的每个相应值。

OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))

OutputBiasGradientTensor

类型: const DML_TENSOR_DESC*

以下计算完成或输入中的每个相应值。

OutputBiasGradient = sum(InputGradient)

Epsilon

类型: FLOAT

向方差添加一个较小的值,以避免零。

注解

可用性

此运算符是在 中 DML_FEATURE_LEVEL_3_1引入的。

张量约束

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

张量支持

种类 维度 支持的维度计数 支持的数据类型
InputTensor 输入 { InputDimensions[] } 1 到 8 FLOAT32、FLOAT16
InputGradientTensor 输入 { InputDimensions[] } 1 到 8 FLOAT32、FLOAT16
MeanTensor 输入 { MeanDimensions[] } 1 到 8 FLOAT32、FLOAT16
VarianceTensor 输入 { MeanDimensions[] } 1 到 8 FLOAT32、FLOAT16
ScaleTensor 输入 { MeanDimensions[] } 1 到 8 FLOAT32、FLOAT16
OutputGradientTensor 输出 { InputDimensions[] } 1 到 8 FLOAT32、FLOAT16
OutputScaleGradientTensor 输出 { MeanDimensions[] } 1 到 8 FLOAT32、FLOAT16
OutputBiasGradientTensor 输出 { MeanDimensions[] } 1 到 8 FLOAT32、FLOAT16

要求

要求
最低受支持的客户端 Windows 内部版本 22000
最低受支持的服务器 Windows 内部版本 22000
标头 directml.h