Partager via


DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC structure (directml.h)

Exécute une fonction de normalisation de variance moyenne sur le tenseur d’entrée. Cet opérateur calcule la moyenne et la variance du tenseur d’entrée pour effectuer la normalisation. Cet opérateur effectue le calcul suivant.

Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias).

Syntaxe

struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC {
  const DML_TENSOR_DESC   *InputTensor;
  const DML_TENSOR_DESC   *ScaleTensor;
  const DML_TENSOR_DESC   *BiasTensor;
  const DML_TENSOR_DESC   *OutputTensor;
  UINT                    AxisCount;
  const UINT              *Axes;
  BOOL                    NormalizeVariance;
  FLOAT                   Epsilon;
  const DML_OPERATOR_DESC *FusedActivation;
};

Membres

InputTensor

Type : const DML_TENSOR_DESC*

Tenseur contenant les données d’entrée. Les dimensions de ce tenseur doivent être { BatchCount, ChannelCount, Height, Width }.

ScaleTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

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

Si DML_FEATURE_LEVEL est inférieur à DML_FEATURE_LEVEL_4_0, les dimensions de ce tenseur doivent être { ScaleBatchCount, ChannelCount, ScaleHeight, ScaleWidth }. Les dimensions ScaleBatchCount, ScaleHeight et ScaleWidth doivent correspondre à InputTensor ou être définies sur 1 pour diffuser automatiquement ces dimensions dans l’entrée.

Si DML_FEATURE_LEVEL est supérieur ou égal à DML_FEATURE_LEVEL_4_0, toute dimension peut être définie sur 1 et être automatiquement diffusée pour correspondre à InputTensor.

Si DML_FEATURE_LEVEL est inférieur à DML_FEATURE_LEVEL_5_2, ce tenseur est requis si BiasTensor est présent. Si DML_FEATURE_LEVEL est supérieur ou égal à DML_FEATURE_LEVEL_5_2, ce tenseur peut être null quelle que soit la valeur de BiasTensor.

BiasTensor

Type : _Maybenull_ const DML_TENSOR_DESC*

Tenseur facultatif contenant les données Bias.

Si DML_FEATURE_LEVEL est inférieur à DML_FEATURE_LEVEL_4_0, les dimensions de ce tenseur doivent être { BiasBatchCount, ChannelCount, BiasHeight, BiasWidth }. Les dimensions BiasBatchCount, BiasHeight et BiasWidth doivent correspondre à InputTensor ou être définies sur 1 pour diffuser automatiquement ces dimensions dans l’entrée.

Si DML_FEATURE_LEVEL est supérieur ou égal à DML_FEATURE_LEVEL_4_0, toute dimension peut être définie sur 1 et être automatiquement diffusée pour correspondre à InputTensor.

Si DML_FEATURE_LEVEL est inférieur à DML_FEATURE_LEVEL_5_2, ce tenseur est requis si ScaleTensor est présent. Si DML_FEATURE_LEVEL est supérieur ou égal à DML_FEATURE_LEVEL_5_2, ce tenseur peut être null quelle que soit la valeur de ScaleTensor.

OutputTensor

Type : const DML_TENSOR_DESC*

Tenseur dans lequel écrire les résultats. Les dimensions de ce tenseur sont { BatchCount, ChannelCount, Height, Width }.

AxisCount

Type : UINT

Nombre d’axes. Ce champ détermine la taille du tableau Axes .

Axes

Type : _Field_size_(AxisCount) const UINT*

Axes le long desquels calculer la moyenne et la variance.

NormalizeVariance

Type : BOOL

TRUE si la couche de normalisation inclut variance dans le calcul de normalisation. Sinon, FALSE. Si la valeur est FALSE, l’équation de normalisation est Output = FusedActivation(Scale * (Input - Mean) + Bias).

Epsilon

Type : FLOAT

Valeur epsilon à utiliser pour éviter la division par zéro. La valeur 0,00001 est recommandée par défaut.

FusedActivation

Type : _Maybenull_ const DML_OPERATOR_DESC*

Couche d’activation fusionnée facultative à appliquer après la normalisation.

Notes

DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC est un sur-ensemble de fonctionnalités de DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC. Ici, définir le tableau Axes sur équivaut à { 2, 3 } définir CrossChannel sur FALSE dans DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC ; alors que définir le tableau Axes sur { 1, 2, 3 } équivaut à affecter à CrossChannel la valeur TRUE.

Disponibilité

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

Contraintes tensoriels

BiasTensor, InputTensor, OutputTensor et ScaleTensor doivent avoir les mêmes DataType et DimensionCount.

Prise en charge des tenseurs

DML_FEATURE_LEVEL_3_1 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée 1 à 8 FLOAT32, FLOAT16
ScaleTensor Entrée facultative 1 à 8 FLOAT32, FLOAT16
BiasTensor Entrée facultative 1 à 8 FLOAT32, FLOAT16
OutputTensor Sortie 1 à 8 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_2_1 et versions ultérieures

Tenseur Genre Nombre de dimensions pris en charge Types de données pris en charge
InputTensor Entrée 4 FLOAT32, FLOAT16
ScaleTensor Entrée facultative 4 FLOAT32, FLOAT16
BiasTensor Entrée facultative 4 FLOAT32, FLOAT16
OutputTensor Sortie 4 FLOAT32, FLOAT16

Configuration requise

   
Client minimal pris en charge Windows 10 Build 20348
Serveur minimal pris en charge Windows 10 Build 20348
En-tête directml.h

Voir aussi

Utilisation d’opérateurs fusionnés pour améliorer les performances