Partager via


structure DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC (directml.h)

Effectue une normalisation par lot sur l’entrée. Cet opérateur effectue le calcul suivant : Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias + FusedAdd).

Toute dimension dans ScaleTensor et BiasTensor peut être définie sur 1 et être automatiquement diffusée pour correspondre à InputTensor, mais dans le cas contraire doit être égale à la taille de la dimension correspondante de InputTensor. MeanTensor et VarianceTensor sont calculés sur l’entrée dans l’ensemble de dimensions pour lesquelles les tailles ScaleTensor et BiasTensor sont égales à une.

Syntaxe

struct DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC {
  const DML_TENSOR_DESC   *InputTensor;
  const DML_TENSOR_DESC   *ScaleTensor;
  const DML_TENSOR_DESC   *BiasTensor;
  const DML_TENSOR_DESC   *FusedAddTensor;
  const DML_TENSOR_DESC   *OutputTensor;
  const DML_TENSOR_DESC   *OutputMeanTensor;
  const DML_TENSOR_DESC   *OutputVarianceTensor;
  FLOAT                   Epsilon;
  const DML_OPERATOR_DESC *FusedActivation;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Tenseur contenant les données d’entrée.

ScaleTensor

Type : const DML_TENSOR_DESC*

Tenseur contenant les données de mise à l’échelle.

BiasTensor

Type : const DML_TENSOR_DESC*

Tenseur contenant les données Bias.

FusedAddTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Tenseur facultatif contenant des données ajoutées au résultat avant FusedActivation, le cas échéant.

OutputTensor

Type : const DML_TENSOR_DESC*

Tenseur dans lequel écrire les résultats.

OutputMeanTensor

Type : const DML_TENSOR_DESC*

Tenseur dans lequel écrire la moyenne de l’entrée.

OutputVarianceTensor

Type : const DML_TENSOR_DESC*

Tenseur dans lequel écrire la variance de l’entrée.

Epsilon

Type : FLOAT

Valeur epsilon à utiliser pour éviter la division par zéro.

FusedActivation

Type : _Maybenull_ const DML_OPERATOR_DESC*

Couche d’activation fusionnée facultative à appliquer après la normalisation. Pour plus d’informations, consultez Utilisation d’opérateurs fusionnés pour améliorer les performances.

Remarques

Disponibilité

Cet opérateur a été introduit dans DML_FEATURE_LEVEL_4_1.

Contraintes tensoriels

  • BiasTensor, FusedAddTensor, InputTensor, OutputMeanTensor, OutputTensor, OutputVarianceTensor et ScaleTensor doivent avoir les mêmes DataType et DimensionCount.
  • BiasTensor, OutputMeanTensor, OutputVarianceTensor et ScaleTensor doivent avoir les mêmes tailles.
  • FusedAddTensor, InputTensor et OutputTensor doivent avoir les mêmes tailles.

Prise en charge des tenseurs

DML_FEATURE_LEVEL_4_1 et versions ultérieures

Tenseur Genre Dimensions Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée { InputDimensions[] } 1 à 8 FLOAT32, FLOAT16
ScaleTensor Entrée { ScaleDimensions[] } 1 à 8 FLOAT32, FLOAT16
BiasTensor Entrée { ScaleDimensions[] } 1 à 8 FLOAT32, FLOAT16
FusedAddTensor Entrée facultative { InputDimensions[] } 1 à 8 FLOAT32, FLOAT16
OutputTensor Sortie { InputDimensions[] } 1 à 8 FLOAT32, FLOAT16
OutputMeanTensor Sortie { ScaleDimensions[] } 1 à 8 FLOAT32, FLOAT16
OutputVarianceTensor Sortie { ScaleDimensions[] } 1 à 8 FLOAT32, FLOAT16

Configuration requise

Condition requise Valeur
En-tête directml.h

Voir aussi