DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC 结构 (directml.h)

对输入张量执行平均方差规范化函数。 此运算符将计算输入张量的平均数和方差以执行规范化。 此运算符执行以下计算。

Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias).

语法

struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC {
  const DML_TENSOR_DESC   *InputTensor;
  const DML_TENSOR_DESC   *ScaleTensor;
  const DML_TENSOR_DESC   *BiasTensor;
  const DML_TENSOR_DESC   *OutputTensor;
  UINT                    AxisCount;
  const UINT              *Axes;
  BOOL                    NormalizeVariance;
  FLOAT                   Epsilon;
  const DML_OPERATOR_DESC *FusedActivation;
};

成员

InputTensor

类型: const DML_TENSOR_DESC*

包含输入数据的张量。 此张量的尺寸应为 { BatchCount, ChannelCount, Height, Width }

ScaleTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

包含 Scale 数据的可选张量。

如果 DML_FEATURE_LEVEL 小于 DML_FEATURE_LEVEL_4_0,则此张量的尺寸应为 { ScaleBatchCount, ChannelCount, ScaleHeight, ScaleWidth }。 维度 ScaleBatchCount、ScaleHeight 和 ScaleWidth 应匹配 InputTensor,或设置为 1 以自动广播整个输入中的这些维度。

如果 DML_FEATURE_LEVEL 大于或等于 DML_FEATURE_LEVEL_4_0,则可以将任何维度设置为 1,并自动广播以匹配 InputTensor

如果 DML_FEATURE_LEVEL 小于 DML_FEATURE_LEVEL_5_2,则存在 BiasTensor 时需要此张量。 如果 DML_FEATURE_LEVEL 大于或等于 DML_FEATURE_LEVEL_5_2,则无论 BiasTensor 的值如何,此张量都可以为 null。

BiasTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

包含偏差数据的可选张量。

如果 DML_FEATURE_LEVEL 小于 DML_FEATURE_LEVEL_4_0,则此张量的尺寸应为 { BiasBatchCount, ChannelCount, BiasHeight, BiasWidth }。 Dimensions BiasBatchCount、BiasHeight 和 BiasWidth 应匹配 InputTensor,或设置为 1 以自动跨输入广播这些维度。

如果 DML_FEATURE_LEVEL 大于或等于 DML_FEATURE_LEVEL_4_0,则可以将任何维度设置为 1,并自动广播以匹配 InputTensor

如果 DML_FEATURE_LEVEL 小于 DML_FEATURE_LEVEL_5_2,则存在 ScaleTensor 时需要此张量。 如果 DML_FEATURE_LEVEL 大于或等于 DML_FEATURE_LEVEL_5_2,则无论 ScaleTensor 的值如何,此张量都可以为 null。

OutputTensor

类型: const DML_TENSOR_DESC*

要写入结果的张量。 此张量的尺寸为 { BatchCount, ChannelCount, Height, Width }

AxisCount

类型: UINT

轴数。 此字段确定 Axes 数组的大小。

Axes

类型:_Field_size_ (AxisCount) 常量 UINT*

要沿其计算平均值和方差的轴。

NormalizeVariance

类型: BOOL

如果规范化层在规范化计算中包含方差,则为 TRUE。 否则为 FALSE。 如果 为 FALSE,则规范化公式为 Output = FusedActivation(Scale * (Input - Mean) + Bias)

Epsilon

类型: FLOAT

用于避免除以零的 epsilon 值。 建议将值 0.00001 作为默认值。

FusedActivation

类型:_Maybenull_ const DML_OPERATOR_DESC*

在规范化后应用的可选融合激活层。

备注

DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESCDML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC功能的超集。 此处,将 Axes 数组设置为 { 2, 3 } 等效于在 DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC 中将 CrossChannel 设置为 FALSE;而将 Axes 数组设置为 { 1, 2, 3 } 等效于将 CrossChannel 设置为 TRUE

可用性

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

张量约束

BiasTensorInputTensorOutputTensorScaleTensor 必须具有相同的 DataTypeDimensionCount

张量支持

DML_FEATURE_LEVEL_3_1 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 1 到 8 FLOAT32、FLOAT16
ScaleTensor 可选输入 1 到 8 FLOAT32、FLOAT16
BiasTensor 可选输入 1 到 8 FLOAT32、FLOAT16
OutputTensor 输出 1 到 8 FLOAT32、FLOAT16

DML_FEATURE_LEVEL_2_1 及更高版本

种类 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32、FLOAT16
ScaleTensor 可选输入 4 FLOAT32、FLOAT16
BiasTensor 可选输入 4 FLOAT32、FLOAT16
OutputTensor 输出 4 FLOAT32、FLOAT16

要求

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

请参阅

使用融合运算符提高性能