DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC 结构 (directml.h)
计算 批量规范化的反向传播梯度。 DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC 执行多个计算,详见单独的输出说明。
OutputScaleGradientTensor 和 OutputBiasGradientTensor 是使用 MeanTensor、ScaleTensor 和 VarianceTensor 大小等于 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
引入的。
张量约束
- InputGradientTensor、 InputTensor、 MeanTensor、 OutputBiasGradientTensor、 OutputGradientTensor、 OutputScaleGradientTensor、 ScaleTensor 和 VarianceTensor 必须具有相同 的 DataType 和 DimensionCount。
- MeanTensor、 OutputBiasGradientTensor、 OutputScaleGradientTensor、 ScaleTensor 和 VarianceTensor 必须具有相同 的大小。
- InputGradientTensor、 InputTensor 和 OutputGradientTensor 必须具有相同 的大小。
张量支持
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
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 |