Freigeben über


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_1eingefü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