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