共用方式為


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*

包含輸入資料的張量。 這個 tensor 的維度應該是 { BatchCount, ChannelCount, Height, Width }

ScaleTensor

類型: _Maybenull_ const DML_TENSOR_DESC*

包含 Scale 資料的選擇性張量。

如果 DML_FEATURE_LEVEL 小於 DML_FEATURE_LEVEL_4_0,則這個 tensor 的維度應該是 { 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,則這個 tensor 的維度應該是 { 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*

要寫入結果的張量。 這個 tensor 的維度為 { BatchCount, ChannelCount, Height, Width }

AxisCount

類型: UINT

座標軸的數目。 此欄位會決定 Axes 陣列的大小。

Axes

類型:_Field_size_ (AxisCount) const 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 引進的。

Tensor 條件約束

BiasTensorInputTensor、OutputTensorScaleTensor必須具有相同的 DataTypeDimensionCount

Tensor 支援

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

另請參閱

使用融合運算子來提升效能