DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC-Struktur (directml.h)
Führt eine Mittlere Varianznormalisierungsfunktion für den Eingabe tensor aus. Dieser Operator berechnet den Mittelwert und die Varianz des Eingabe-Tensors, um die Normalisierung durchzuführen. Dieser Operator führt die folgende Berechnung aus.
Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias).
Syntax
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;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Eingabedaten enthält. Die Dimensionen dieses Tensors sollten sein { BatchCount, ChannelCount, Height, Width }
.
ScaleTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Skalierungsdaten enthält.
Wenn DML_FEATURE_LEVEL kleiner als DML_FEATURE_LEVEL_4_0 ist, sollten die Dimensionen dieses Tensors sein { ScaleBatchCount, ChannelCount, ScaleHeight, ScaleWidth }
. Die Dimensionen ScaleBatchCount, ScaleHeight und ScaleWidth sollten entweder Mit InputTensor übereinstimmen oder auf 1 festgelegt werden, um diese Dimensionen automatisch über die Eingabe zu übertragen.
Wenn DML_FEATURE_LEVEL größer oder gleich DML_FEATURE_LEVEL_4_0 ist, kann jede Dimension auf 1 festgelegt und automatisch so gesendet werden, dass sie Mit InputTensor übereinstimmt.
Wenn DML_FEATURE_LEVEL kleiner als DML_FEATURE_LEVEL_5_2 ist, ist dieser Tensor erforderlich, wenn BiasTensor vorhanden ist. Wenn DML_FEATURE_LEVEL größer oder gleich DML_FEATURE_LEVEL_5_2 ist, kann dieser Tensor unabhängig vom Wert von BiasTensor NULL sein.
BiasTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Bias-Daten enthält.
Wenn DML_FEATURE_LEVEL kleiner als DML_FEATURE_LEVEL_4_0 ist, sollten die Dimensionen dieses Tensors sein { BiasBatchCount, ChannelCount, BiasHeight, BiasWidth }
. Die Dimensionen BiasBatchCount, BiasHeight und BiasWidth sollten entweder Mit InputTensor übereinstimmen oder auf 1 festgelegt werden, um diese Dimensionen automatisch über die Eingabe zu übertragen.
Wenn DML_FEATURE_LEVEL größer oder gleich DML_FEATURE_LEVEL_4_0 ist, kann jede Dimension auf 1 festgelegt und automatisch so gesendet werden, dass sie Mit InputTensor übereinstimmt.
Wenn DML_FEATURE_LEVEL kleiner als DML_FEATURE_LEVEL_5_2 ist, ist dieser Tensor erforderlich, wenn ScaleTensor vorhanden ist. Wenn DML_FEATURE_LEVEL größer oder gleich DML_FEATURE_LEVEL_5_2 ist, kann dieser Tensor unabhängig vom Wert von ScaleTensor NULL sein.
OutputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, in den die Ergebnisse geschrieben werden sollen. Die Dimensionen dieses Tensors sind { BatchCount, ChannelCount, Height, Width }
.
AxisCount
Typ: UINT
Die Anzahl der Achsen. Dieses Feld bestimmt die Größe des Axes-Arrays .
Axes
Typ: _Field_size_(AxisCount) const UINT*
Die Achsen, auf denen der Mittelwert und die Varianz berechnet werden sollen.
NormalizeVariance
Typ: BOOL
TRUE , wenn die Normalisierungsebene Variance in die Normalisierungsberechnung einschließt. Andernfalls FALSE. Wenn FALSE, ist die Normalisierungsgleichung Output = FusedActivation(Scale * (Input - Mean) + Bias)
.
Epsilon
Typ: FLOAT
Der Epsilonwert, der verwendet werden soll, um eine Aufteilung durch null zu vermeiden. Als Standard wird der Wert 0,00001 empfohlen.
FusedActivation
Typ: _Maybenull_ const DML_OPERATOR_DESC*
Eine optionale fusionierte Aktivierungsebene, die nach der Normalisierung angewendet werden soll.
Hinweise
DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC ist eine Übermenge der Funktionalität von DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC. Das Festlegen des Axes-Arrays auf { 2, 3 }
entspricht hier dem Festlegen von CrossChannel auf FALSE in DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC. Das Festlegen des Achsenarrays auf { 1, 2, 3 }
entspricht dem Festlegen von CrossChannel auf TRUE.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_1
eingeführt.
Tensoreinschränkungen
BiasTensor, InputTensor, OutputTensor und ScaleTensor müssen über denselben DataType und DimensionCount verfügen.
Tensorunterstützung
DML_FEATURE_LEVEL_3_1 und höher
Tensor | Art | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16 |
ScaleTensor | Optionale Eingabe | 1 bis 8 | FLOAT32, FLOAT16 |
BiasTensor | Optionale Eingabe | 1 bis 8 | FLOAT32, FLOAT16 |
OutputTensor | Ausgabe | 1 bis 8 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_2_1 und höher
Tensor | Art | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 | FLOAT32, FLOAT16 |
ScaleTensor | Optionale Eingabe | 4 | FLOAT32, FLOAT16 |
BiasTensor | Optionale Eingabe | 4 | FLOAT32, FLOAT16 |
OutputTensor | Ausgabe | 4 | FLOAT32, FLOAT16 |
Anforderungen
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |
Siehe auch
Verwenden von fusionierten Operatoren für verbesserte Leistung