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_DESC 是 DML_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 條件約束
BiasTensor、InputTensor、OutputTensor和ScaleTensor必須具有相同的 DataType和DimensionCount。
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 |