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 durch. Dieser Operator entspricht mathematisch der Dequantisierung der Eingaben, der Konvolvierung und der anschließenden Quantisierung der Ausgabe.
Die von diesem Operator verwendeten linearen Funktionen quantisieren 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;
};
Angehörige
InputTensor
Typ: DML_TENSOR_DESC*
Ein Tensor, der die Eingabedaten enthält. Die erwarteten Dimensionen der InputTensor- sind { InputBatchCount, InputChannelCount, InputHeight, InputWidth }
.
InputScaleTensor
Typ: DML_TENSOR_DESC*
Ein Tensor, der die Eingabemaßstabdaten enthält. Die erwarteten Dimensionen der InputScaleTensor
sind { 1, 1, 1, 1 }
. Dieser Skalierungswert wird zum Dequantisieren der Eingabewerte verwendet.
Anmerkung
Ein Skalierungswert von 0 führt zu einem nicht definierten Verhalten.
InputZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Nullpunktdaten der Eingabe enthält. Die erwarteten Dimensionen der InputZeroPointTensor- sind { 1, 1, 1, 1 }
. Dieser Nullpunktwert wird zum Dequantisieren der Eingabewerte verwendet.
FilterTensor
Typ: DML_TENSOR_DESC*
Ein Tensor, der die Filterdaten enthält. Die erwarteten Dimensionen des FilterTensor- sind { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterScaleTensor
Typ: DML_TENSOR_DESC*
Ein Tensor, der die Filtermaßstabdaten enthält. Die erwarteten Dimensionen der FilterScaleTensor
werden { 1, 1, 1, 1 }
, wenn pro Tensor-Quantisierung erforderlich ist, oder { 1, OutputChannelCount, 1, 1 }
, wenn pro Kanal quantisierung erforderlich ist. Dieser Skalierungswert wird zum Dequantisieren der Filterwerte verwendet.
Anmerkung
Ein Skalierungswert von 0 führt zu einem nicht definierten Verhalten.
FilterZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die Filter-Nullpunktdaten enthält. Die erwarteten Dimensionen der FilterZeroPointTensor- sind { 1, 1, 1, 1 }
, wenn die Quantisierung pro Tensor erforderlich ist, oder { 1, OutputChannelCount, 1, 1 }
, wenn pro Kanal quantisierung erforderlich ist. Dieser Nullpunktwert wird zum Dequantisieren der Filterwerte verwendet.
BiasTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein Tensor, der die Bias-Daten enthält. Der Bias-Tensor ist ein Tensor, der Daten enthält, die über den Ausgabe-Tensor am Ende der Konvolution übertragen werden, die dem Ergebnis hinzugefügt wird. Die erwarteten Dimensionen des BiasTensor werden für 4D { 1, OutputChannelCount, 1, 1 }
.
OutputScaleTensor
Typ: DML_TENSOR_DESC*
Ein Tensor, der die Ausgabemaßstabdaten enthält. Die erwarteten Dimensionen des OutputScaleTensor sind { 1, 1, 1, 1 }
. Dieser Eingabeskalierungswert wird zum Quantisieren der Ausgabewerte für die Konvolution verwendet.This input scale value is used for quantizing the convolution output values.
Anmerkung
Ein Skalierungswert von 0 führt zu einem nicht definierten Verhalten.
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 für die Quantisierung der Ausgabewerte verwendet.
OutputTensor
Typ: 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 unteren Dimensionen des Konvolutionsfilter-Tensors FilterTensor. Dieser Wert bestimmt auch die Größe der Strides, Dilations, StartPaddingund EndPadding Arrays. Es wird nur ein Wert von 2 unterstützt.
Strides
Typ: _Field_size_(DimensionCount) UINT-*
Die Schritte des Konvolutionsvorgangs. Diese Schritte werden auf den Konvolutionsfilter angewendet. Sie sind von den Tensorschritten getrennt, die in DML_TENSOR_DESCenthalten sind.
Dilations
Typ: _Field_size_(DimensionCount) UINT-*
Die Dilationen des Konvolutionsvorgangs. Dilationen werden auf die Elemente des Filterkerns angewendet. Dadurch wird ein größerer Filterkern simuliert, indem die internen Filterkernelemente mit Nullen aufgefüllt werden.
StartPadding
Typ: _Field_size_(DimensionCount) UINT-*
Die Abstandswerte, die am Anfang jeder räumlichen Dimension des Filter- und Eingabe-Tensors des Konvolutionsvorgangs angewendet werden sollen.
EndPadding
Typ: _Field_size_(DimensionCount) 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 Konvolutionsvorgang aufgeteilt werden soll. GroupCount- kann verwendet werden, um tiefenweisen Konvolution zu erzielen, indem sie die GroupCount- auf die Anzahl der Eingabekanäle festlegen. Dadurch wird die Konvolution pro Eingabekanal in eine separate Konvolution unterteilt.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_1
eingeführt.
Tensoreinschränkungen
- BiasTensor, FilterTensor, InputTensor-und OutputTensor- müssen den gleichen DimensionCounthaben.
- OutputTensor- und OutputZeroPointTensor- muss denselben Datentyphaben.
- InputTensor- und InputZeroPointTensor- müssen denselben Datentyphaben.
- FilterTensor und FilterZeroPointTensor- muss denselben Datentyphaben.
Tensorunterstützung
DML_FEATURE_LEVEL_5_2 und höher
Tensor | Art | 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 | Art | 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 | Art | 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 |
---|---|
mindestens unterstützte Client- | Windows 10 Build 20348 |
mindestens unterstützte Server- | Windows 10 Build 20348 |
Header- | directml.h |