DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC struttura (directml.h)

Calcola le sfumature backpropagation per il training di normalizzazione batch.

Questo operatore esegue più calcoli, dettagliati nelle descrizioni di output separate.

Qualsiasi dimensione in MeanTensor, VarianceTensor e ScaleTensor può essere impostata su 1 e essere trasmessi automaticamente in corrispondenza di InputTensor, ma in caso contrario, deve essere uguale alle dimensioni della dimensione corrispondente da InputTensor.

OutputScaleGradientTensor e OutputBiasGradientTensor vengono calcolati usando somme nel set di dimensioni per cui MeanTensor, ScaleTensor e VarianceTensor sizesor sono uguali a uno.

Sintassi

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;
};

Members

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor contenente i dati di input. Questo è in genere lo stesso tensore fornito come InputTensor per DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC nel passaggio avanti.

InputGradientTensor

Tipo: const DML_TENSOR_DESC*

Tensore sfumatura in ingresso. Questo viene in genere ottenuto dall'output di backpropagation di un livello precedente.

MeanTensor

Tipo: const DML_TENSOR_DESC*

Tensor contenente i dati medi. Questo è in genere lo stesso tensore restituito da MeanTensor da DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC nel passaggio avanti.

VarianceTensor

Tipo: const DML_TENSOR_DESC*

Tensore contenente i dati di varianza. Questo è in genere lo stesso tensore restituito come OutputVarianceTensor da DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC nel passaggio avanti.

ScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor contenente i dati di scala.

OutputGradientTensor

Tipo: const DML_TENSOR_DESC*

Per ogni valore corrispondente negli input:

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

Tipo: const DML_TENSOR_DESC*

Il calcolo seguente viene eseguito o ogni valore corrispondente negli input: OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))

OutputBiasGradientTensor

Tipo: const DML_TENSOR_DESC*

Il calcolo seguente viene eseguito o ogni valore corrispondente negli input: OutputBiasGradient = sum(InputGradient)

Epsilon

Tipo: FLOAT

Valore float ridotto aggiunto alla varianza per evitare zero.

Commenti

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_4_1.

Vincoli tensor

  • InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor e VarianceTensor deve avere lo stesso DataType e DimensionCount.
  • MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor e VarianceTensor devono avere le stesse dimensioni.
  • InputGradientTensor, InputTensor e OutputGradientTensor devono avere le stesse dimensioni.

Supporto di Tensor

DML_FEATURE_LEVEL_4_1 e versioni successive

Tensore Tipo Dimensioni Conteggi delle dimensioni supportate Tipi di dati supportati
InputTensor Input { InputDimensions[] } da 1 a 8 FLOAT32, FLOAT16
InputGradientTensor Input { InputDimensions[] } da 1 a 8 FLOAT32, FLOAT16
MeanTensor Input { MeanDimensions[] } da 1 a 8 FLOAT32, FLOAT16
VarianceTensor Input { MeanDimensions[] } da 1 a 8 FLOAT32, FLOAT16
ScaleTensor Input { MeanDimensions[] } da 1 a 8 FLOAT32, FLOAT16
OutputGradientTensor Output { InputDimensions[] } da 1 a 8 FLOAT32, FLOAT16
OutputScaleGradientTensor Output { MeanDimensions[] } da 1 a 8 FLOAT32, FLOAT16
OutputBiasGradientTensor Output { MeanDimensions[] } da 1 a 8 FLOAT32, FLOAT16

Requisiti

   
Intestazione directml.h