DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC結構 (directml.h)
計算 批次正規化定型的反向傳播漸層。
此運算子會執行多個計算,這些計算會在個別的輸出描述中詳述。
MeanTensor、VarianceTensor和ScaleTensor中的任何維度都可以設定為 1,並自動廣播以符合InputTensor,但否則必須等於來自 InputTensor的對應維度大小。
OutputScaleGradientTensor和OutputBiasGradientTensor是使用平均數、ScaleTensor和VarianceTensor大小等於一組維度的總和來計算。
語法
struct DML_BATCH_NORMALIZATION_TRAINING_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_TRAINING_OPERATOR_DESC 。
InputGradientTensor
類型:const DML_TENSOR_DESC*
傳入漸層張量。 這通常是從前一層反向傳播的輸出取得。
MeanTensor
類型:const DML_TENSOR_DESC*
包含平均資料的張量。 這通常是 MeanTensor 從轉送中 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC 傳回的相同張量。
VarianceTensor
類型:const DML_TENSOR_DESC*
包含變異數資料的張量。 這通常與向前傳遞中DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC的 OutputVarianceTensor傳回的張量相同。
ScaleTensor
類型:const DML_TENSOR_DESC*
包含縮放資料的張量。
OutputGradientTensor
類型:const DML_TENSOR_DESC*
針對輸入中的每個對應值:
Coef0 = 1.0f / sqrt(Variance + Epsilon)
Coef1 = InputGradient * (Input - mean(Input))
InputGradientCentered = InputGradient - mean(InputGradient)
InputCentered = InputCentered - mean(InputCentered)
OutputGradient = Scale * Coef0 * (InputGradientCentered - InputCentered * mean(Coef1) / (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_4_1
引進。
Tensor 條件約束
- InputGradientTensor、InputTensor、MeanTensor、OutputBiasGradientTensor、OutputGradientTensor、OutputScaleGradientTensor、ScaleTensor和VarianceTensor必須具有相同的 DataType和DimensionCount。
- MeanTensor、OutputBiasGradientTensor、OutputScaleGradientTensor、ScaleTensor 和 VarianceTensor必須具有相同的大小。
- InputGradientTensor、 InputTensor和 OutputGradientTensor 必須具有相同 的大小。
Tensor 支援
DML_FEATURE_LEVEL_4_1和更新版本
張 | 種類 | 維度 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|---|
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 |
規格需求
標頭 | directml.h |