DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC結構 (directml.h)
計算 批次正規化的反向傳播漸層。 DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC 會執行多個計算,這些計算會在個別的輸出描述中詳述。
OutputScaleGradientTensor 和 OutputBiasGradientTensor 是使用平均數、ScaleTensor 和 VarianceTensor 大小等於一組維度的總和來計算。
語法
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
引進。
Tensor 條件約束
- InputGradientTensor、InputTensor、MeanTensor、OutputBiasGradientTensor、OutputGradientTensor、OutputScaleGradientTensor、ScaleTensor 和 VarianceTensor 必須具有相同的 DataType 和 DimensionCount。
- MeanTensor、OutputBiasGradientTensor、OutputScaleGradientTensor、ScaleTensor 和 VarianceTensor 必須具有相同的大小。
- InputGradientTensor、 InputTensor 和 OutputGradientTensor 必須具有相同 的大小。
Tensor 支援
張 | 種類 | 維度 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|---|
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 |