Share via


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_1eingefü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