directml.h) (DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC 结构

计算 批量规范化训练的反向传播梯度。

此运算符执行多个计算,详见单独的输出说明。

MeanTensorVarianceTensorScaleTensor 中的任何维度都可以设置为 1,并自动广播以匹配 InputTensor,但必须与 InputTensor 对应的维度大小相等。

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

语法

struct DML_BATCH_NORMALIZATION_TRAINING_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_TRAINING_OPERATOR_DESC

InputGradientTensor

类型: const DML_TENSOR_DESC*

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

MeanTensor

类型: const DML_TENSOR_DESC*

包含平均值数据的张量。 这通常与 MeanTensor 在前向传递中 从DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC 返回的张量相同。

VarianceTensor

类型: const DML_TENSOR_DESC*

包含方差数据的张量。 这通常是前向传递中从 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC 返回的 OutputVarianceTensor 的张量。

ScaleTensor

类型: const DML_TENSOR_DESC*

包含刻度数据的张量。

OutputGradientTensor

类型: const DML_TENSOR_DESC*

对于输入中的每个相应值:

Coef0 = 1.0f / sqrt(Variance + Epsilon)
Coef1 = InputGradient * (Input - mean(Input))
InputGradientCentered = InputGradient - mean(InputGradient)
InputCentered = InputCentered - mean(InputCentered)
OutputGradient = Scale * Coef0 * (InputGradientCentered - InputCentered * mean(Coef1) / (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_4_1引入的。

张量约束

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

张量支持

DML_FEATURE_LEVEL_4_1 及更高版本

种类 维度 支持的维度计数 支持的数据类型
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

要求

   
标头 directml.h