DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC-Struktur (directml.h)
Führt eine Konvolution des FilterTensor mit dem InputTensor aus. Dieser Operator führt Vorwärtskonvolution für quantisierte Daten aus. Dieser Operator entspricht mathematisch dem Dequantisieren der Eingaben, dem Konvolvieren und anschließenden Quantisieren der Ausgabe.
Die von diesem Operator verwendeten linearen Quantizefunktionen sind die linearen Quantisierungsfunktionen.
Dequantize-Funktion
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
Quantize-Funktion
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
Syntax
struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputScaleTensor;
const DML_TENSOR_DESC *InputZeroPointTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *FilterScaleTensor;
const DML_TENSOR_DESC *FilterZeroPointTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
UINT GroupCount;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Eingabedaten enthält. Die erwarteten Dimensionen des InputTensor sind { InputBatchCount, InputChannelCount, InputHeight, InputWidth }
.
InputScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Eingabeskalierungsdaten enthält. Die erwarteten Dimensionen von InputScaleTensor
sind { 1, 1, 1, 1 }
. Dieser Skalierungswert wird zum Dequantisieren der Eingabewerte verwendet.
InputZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die eingegebenen Nullpunktdaten enthält. Die erwarteten Dimensionen des InputZeroPointTensor sind { 1, 1, 1, 1 }
. Dieser Nullpunktwert wird zum Dequantisieren der Eingabewerte verwendet.
FilterTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Filterdaten enthält. Die erwarteten Dimensionen des FilterTensor sind { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Filterskalierungsdaten enthält. Die erwarteten Dimensionen von FilterScaleTensor
sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, OutputChannelCount, 1, 1 }
eine Quantisierung pro Kanal erforderlich ist. Dieser Skalierungswert wird zum Dequantisieren der Filterwerte verwendet.
FilterZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Filter-Nullpunktdaten enthält. Die erwarteten Dimensionen des FilterZeroPointTensor sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, OutputChannelCount, 1, 1 }
eine Quantisierung pro Kanal erforderlich ist. Dieser Nullpunktwert wird zum Dequantisieren der Filterwerte verwendet.
BiasTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein Tensor, der die Biasdaten enthält. Der Bias tensor ist ein Tensor mit Daten, der über den Ausgabe tensor am Ende der Konvolution übertragen wird, die dem Ergebnis hinzugefügt wird. Die erwarteten Dimensionen des BiasTensor gelten { 1, OutputChannelCount, 1, 1 }
für 4D.
OutputScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Ausgabeskalierungsdaten enthält. Die erwarteten Dimensionen des OutputScaleTensor sind { 1, 1, 1, 1 }
. Dieser Eingabeskalierungswert wird zum Quantisieren der Convolution-Ausgabewerte verwendet.
OutputZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Filter-Nullpunktdaten enthält. Die erwarteten Dimensionen des OutputZeroPointTensor sind { 1, 1, 1, 1 }
. Dieser Nullpunktwert der Eingabe wird verwendet, um die Konvolution der Ausgabewerte zu quantisieren.
OutputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, in den die Ergebnisse geschrieben werden sollen. Die erwarteten Dimensionen des OutputTensor sind { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
Typ: UINT
Die Anzahl der räumlichen Dimensionen für den Konvolutionsvorgang. Räumliche Dimensionen sind die niedrigeren Dimensionen des Faltungsfilter-Tensors FilterTensor. Dieser Wert bestimmt auch die Größe der Arrays Strides, Dilations, StartPadding und EndPadding . Nur der Wert 2 wird unterstützt.
Strides
Typ: _Field_size_(DimensionCount) const UINT*
Die Schritte der Faltungsoperation. Diese Schritte werden auf den Faltungsfilter angewendet. Sie sind getrennt von den Tensorschritten, die in DML_TENSOR_DESC enthalten sind.
Dilations
Typ: _Field_size_(DimensionCount) const UINT*
Die Dilaten der Konvolutionsoperation. Dilatierungen sind Schritte, die auf die Elemente des Filterkernels angewendet werden. Dies hat den Effekt, dass ein größerer Filterkernel simuliert wird, indem die internen Filterkernelelemente mit Nullen aufgefüllt werden.
StartPadding
Typ: _Field_size_(DimensionCount) const UINT*
Die Abstandswerte, die am Anfang jeder räumlichen Dimension des Filters und des Eingabe tensors des Konvolutionsvorgangs angewendet werden sollen.
EndPadding
Typ: _Field_size_(DimensionCount) const UINT*
Die Abstandswerte, die am Ende jeder räumlichen Dimension des Filters und des Eingabe tensors des Konvolutionsvorgangs angewendet werden sollen.
GroupCount
Typ: UINT
Die Anzahl der Gruppen, in die der Faltungsvorgang unterteilt werden soll. GroupCount kann verwendet werden, um tiefenweise Konvolution zu erreichen, indem GroupCount auf die Anzahl der Eingabekanäle festgelegt wird. Dadurch wird die Konvolution in eine separate Konvolution pro Eingabekanal aufgeteilt.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_1
eingeführt.
Tensoreinschränkungen
- BiasTensor, FilterTensor, InputTensor und OutputTensor müssen über dieselbe DimensionCount verfügen.
- OutputTensor und OutputZeroPointTensor müssen denselben Datentyp aufweisen.
- InputTensor und InputZeroPointTensor müssen denselben Datentyp aufweisen.
- FilterTensor und FilterZeroPointTensor müssen denselben Datentyp aufweisen.
Tensorunterstützung
DML_FEATURE_LEVEL_5_2 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 3 bis 4 | INT8, UINT8 |
InputScaleTensor | Eingabe | 1 bis 4 | FLOAT32 |
InputZeroPointTensor | Optionale Eingabe | 1 bis 4 | INT8, UINT8 |
FilterTensor | Eingabe | 3 bis 4 | INT8, UINT8 |
FilterScaleTensor | Eingabe | 1 bis 4 | FLOAT32 |
FilterZeroPointTensor | Optionale Eingabe | 1 bis 4 | INT8, UINT8 |
BiasTensor | Optionale Eingabe | 3 bis 4 | INT32 |
OutputScaleTensor | Eingabe | 1 bis 4 | FLOAT32 |
OutputZeroPointTensor | Optionale Eingabe | 1 bis 4 | INT8, UINT8 |
OutputTensor | Ausgabe | 3 bis 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_4_0 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 3 bis 4 | INT8, UINT8 |
InputScaleTensor | Eingabe | 1 bis 4 | FLOAT32 |
InputZeroPointTensor | Optionale Eingabe | 1 bis 4 | INT8, UINT8 |
FilterTensor | Eingabe | 3 bis 4 | INT8, UINT8 |
FilterScaleTensor | Eingabe | 3 bis 4 | FLOAT32 |
FilterZeroPointTensor | Optionale Eingabe | 1 bis 4 | INT8, UINT8 |
BiasTensor | Optionale Eingabe | 3 bis 4 | INT32 |
OutputScaleTensor | Eingabe | 1 bis 4 | FLOAT32 |
OutputZeroPointTensor | Optionale Eingabe | 1 bis 4 | INT8, UINT8 |
OutputTensor | Ausgabe | 3 bis 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 | INT8, UINT8 |
InputScaleTensor | Eingabe | 4 | FLOAT32 |
InputZeroPointTensor | Optionale Eingabe | 4 | INT8, UINT8 |
FilterTensor | Eingabe | 4 | INT8, UINT8 |
FilterScaleTensor | Eingabe | 4 | FLOAT32 |
FilterZeroPointTensor | Optionale Eingabe | 4 | INT8, UINT8 |
BiasTensor | Optionale Eingabe | 4 | INT32 |
OutputScaleTensor | Eingabe | 4 | FLOAT32 |
OutputZeroPointTensor | Optionale Eingabe | 4 | INT8, UINT8 |
OutputTensor | Ausgabe | 4 | INT8, UINT8 |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für