DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC 结构 (directml.h)
对输入执行批量规范化。 此运算符执行以下计算: Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias + FusedAdd)
。
ScaleTensor 和 BiasTensor 中的任何维度都可以设置为 1,并自动广播以匹配 InputTensor,但否则必须等于 InputTensor 中相应维度的大小。 MeanTensor 和 VarianceTensor 是在 ScaleTensor 和 BiasTensor 大小等于一个维度集的输入上计算的。
语法
struct DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *ScaleTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *FusedAddTensor;
const DML_TENSOR_DESC *OutputTensor;
const DML_TENSOR_DESC *OutputMeanTensor;
const DML_TENSOR_DESC *OutputVarianceTensor;
FLOAT Epsilon;
const DML_OPERATOR_DESC *FusedActivation;
};
成员
InputTensor
类型: const DML_TENSOR_DESC*
包含输入数据的张量。
ScaleTensor
类型: const DML_TENSOR_DESC*
包含 Scale 数据的张量。
BiasTensor
类型: const DML_TENSOR_DESC*
包含偏差数据的张量。
FusedAddTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
一个可选的张量,其中包含在 FusedActivation 之前添加到结果中的数据(如果有)。
OutputTensor
类型: const DML_TENSOR_DESC*
要向其写入结果的张量。
OutputMeanTensor
类型: const DML_TENSOR_DESC*
要向其写入输入平均值的张量。
OutputVarianceTensor
类型: const DML_TENSOR_DESC*
要向其写入输入方差的张量。
Epsilon
类型: FLOAT
用于避免除以零的 epsilon 值。
FusedActivation
类型:_Maybenull_ const DML_OPERATOR_DESC*
在规范化后应用的可选融合激活层。 有关详细信息,请参阅 使用融合运算符提高性能。
注解
可用性
此运算符是在 中引入的 DML_FEATURE_LEVEL_4_1
。
张量约束
- BiasTensor、 FusedAddTensor、 InputTensor、 OutputMeanTensor、 OutputTensor、 OutputVarianceTensor 和 ScaleTensor 必须具有相同 的 DataType 和 DimensionCount。
- BiasTensor、 OutputMeanTensor、 OutputVarianceTensor 和 ScaleTensor 必须具有相同 的大小。
- FusedAddTensor、 InputTensor 和 OutputTensor 必须具有相同 的大小。
Tensor 支持
DML_FEATURE_LEVEL_4_1 及更高版本
张 | 种类 | 维度 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|---|
InputTensor | 输入 | { InputDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
ScaleTensor | 输入 | { ScaleDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
BiasTensor | 输入 | { ScaleDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
FusedAddTensor | 可选输入 | { InputDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | { InputDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
OutputMeanTensor | 输出 | { ScaleDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
OutputVarianceTensor | 输出 | { ScaleDimensions[] } | 1 到 8 | FLOAT32、FLOAT16 |
要求
要求 | 值 |
---|---|
Header | directml.h |