DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC-Struktur (directml.h)
Berechnet Backpropagationsverläufe für das Batchnormalisierungstraining.
Dieser Operator führt mehrere Berechnungen durch, die in den separaten Ausgabebeschreibungen beschrieben sind.
Jede Dimension in MeanTensor, VarianceTensor und ScaleTensor kann auf 1 festgelegt und automatisch übertragen werden, um InputTensor zu entsprechen. Andernfalls muss die Größe der entsprechenden Dimension von InputTensor entsprechen.
OutputScaleGradientTensor und OutputBiasGradientTensor werden mithilfe von Summen für die Größen meanTensor, ScaleTensor und VarianceTensor berechnet.
Syntax
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;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Eingabedaten enthält. Dies ist in der Regel derselbe Tensor, der wie der InputTensor bereitgestellt wurde, um im Vorwärtsdurchlauf DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC .
InputGradientTensor
Typ: const DML_TENSOR_DESC*
Der eingehende Gradienten-Tensor. Dies wird in der Regel aus der Ausgabe der Backpropagation einer vorherigen Ebene abgerufen.
MeanTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Mitteldaten enthält. Dies ist in der Regel derselbe Tensor, der von MeanTensor von DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC im Vorwärtsdurchlauf zurückgegeben wurde.
VarianceTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Varianzdaten enthält. Dies ist in der Regel derselbe Tensor, der wie der OutputVarianceTensor von DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC im Vorwärtsdurchlauf zurückgegeben wurde.
ScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Skalierungsdaten enthält.
OutputGradientTensor
Typ: const DML_TENSOR_DESC*
Für jeden entsprechenden Wert in den Eingaben:
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
Typ: const DML_TENSOR_DESC*
Die folgende Berechnung erfolgt oder jeder entsprechende Wert in den Eingaben: OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))
OutputBiasGradientTensor
Typ: const DML_TENSOR_DESC*
Die folgende Berechnung erfolgt oder jeder entsprechende Wert in den Eingaben: OutputBiasGradient = sum(InputGradient)
Epsilon
Typ: FLOAT
Ein kleiner Floatwert, der der Varianz hinzugefügt wird, um null zu vermeiden.
Hinweise
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_4_1
eingeführt.
Tensoreinschränkungen
- InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor und VarianceTensor müssen denselben DataType und DimensionCount aufweisen.
- MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor und VarianceTensor müssen die gleichen Größen aufweisen.
- InputGradientTensor, InputTensor und OutputGradientTensor müssen die gleichen Größen aufweisen.
Tensorunterstützung
DML_FEATURE_LEVEL_4_1 und höher
Tensor | Art | Dimensionen | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|---|
InputTensor | Eingabe | { InputDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
InputGradientTensor | Eingabe | { InputDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
MeanTensor | Eingabe | { MeanDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
VarianceTensor | Eingabe | { MeanDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
ScaleTensor | Eingabe | { MeanDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
OutputGradientTensor | Output | { InputDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
OutputScaleGradientTensor | Output | { MeanDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
OutputBiasGradientTensor | Output | { MeanDimensions[] } | 1 bis 8 | FLOAT32, FLOAT16 |
Requirements (Anforderungen)
Kopfzeile | directml.h |