Freigeben über


DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC Struktur (directml.h)

Führt eine Matrixmultiplikationsfunktion für quantisierte Daten aus. Dieser Operator entspricht mathematisch der Dequantisierung der Eingaben, dann der Matrix multiplizieren und dann die Ausgabe quantisieren.

Für diesen Operator muss die Matrix die Eingabe-Tensoren multiplizieren, um 4D zu sein, die als { BatchCount, ChannelCount, Height, Width }formatiert sind. Der Matrixmultiplikationsoperator führt BatchCount * ChannelCount-Anzahl unabhängiger Matrixmultiplikationen durch.

Wenn z. B. ATensorGrößen{ BatchCount, ChannelCount, M, K }hat und BTensorGrößen{ BatchCount, ChannelCount, K, N }hat und Ausgabe Der verfügt über Größen von { BatchCount, ChannelCount, M, N }. Anschließend führt der Matrixmultiplikationsoperator BatchCount * ChannelCount unabhängige Matrixmultiplikationen von Dimensionen {M,K,N} = {M,N} = {M,N} aus.

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_MATRIX_MULTIPLY_OPERATOR_DESC {
  const DML_TENSOR_DESC *ATensor;
  const DML_TENSOR_DESC *AScaleTensor;
  const DML_TENSOR_DESC *AZeroPointTensor;
  const DML_TENSOR_DESC *BTensor;
  const DML_TENSOR_DESC *BScaleTensor;
  const DML_TENSOR_DESC *BZeroPointTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
};

Angehörige

ATensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die A-Daten enthält. Die Dimensionen dieses Tensors sollten { BatchCount, ChannelCount, M, K }werden.

AScaleTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die ATensor-Skalierungsdaten enthält. Die erwarteten Dimensionen der AScaleTensor werden { 1, 1, 1, 1 }, wenn pro Tensor quantisierung erforderlich ist, oder { 1, 1, M, 1 }, wenn pro Zeilenquantisierung erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der A-Werte verwendet.

Anmerkung

Ein Skalierungswert von 0 führt zu einem nicht definierten Verhalten.

AZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die ATensor- Nullpunktdaten enthält. Die erwarteten Dimensionen des AZeroPointTensor werden { 1, 1, 1, 1 }, wenn die Quantisierung pro Tensor erforderlich ist, oder { 1, 1, M, 1 }, wenn pro Zeilenquantisierung erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der ATensor-Werte verwendet.

BTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die B-Daten enthält. Die Dimensionen dieses Tensors sollten { BatchCount, ChannelCount, K, N }werden.

BScaleTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die BTensor- Skalierungsdaten enthält. Die erwarteten Dimensionen der BScaleTensor werden { 1, 1, 1, 1 }, wenn pro Tensor-Quantisierung erforderlich ist, oder { 1, 1, 1, N }, wenn pro Spaltenquantisierung erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der BTensor--Werte verwendet.

Anmerkung

Ein Skalierungswert von 0 führt zu einem nicht definierten Verhalten.

BZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die BTensor Nullpunktdaten enthält. Die erwarteten Dimensionen der BZeroPointTensor werden { 1, 1, 1, 1 }, wenn pro Tensor-Quantisierung erforderlich ist, oder { 1, 1, 1, N }, wenn pro Spaltenquantisierung erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der BTensor--Werte verwendet.

OutputScaleTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, der die OutputTensor- Skalierungsdaten enthält. Die erwarteten Dimensionen der OutputScaleTensor werden { 1, 1, 1, 1 }, wenn die Quantisierung pro Tensor erforderlich ist, oder { 1, 1, M, 1 }, wenn die Quantisierung pro Zeile erforderlich ist. Dieser Skalierungswert wird zum Dequantisieren der OutputTensor--Werte verwendet.

Anmerkung

Ein Skalierungswert von 0 führt zu einem nicht definierten Verhalten.

OutputZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor mit dem OutputTensor Nullpunktdaten. Die erwarteten Dimensionen der OutputZeroPointTensor werden { 1, 1, 1, 1 }, wenn die Quantisierung pro Tensor erforderlich ist, oder { 1, 1, M, 1 }, wenn die Quantisierung pro Zeile erforderlich ist. Dieser Nullpunktwert wird zum Dequantisieren der OutputTensor--Werte verwendet.

OutputTensor

Typ: DML_TENSOR_DESC*

Ein Tensor, in den die Ergebnisse geschrieben werden sollen. Die Dimensionen dieses Tensors sind { BatchCount, ChannelCount, M, N }.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_1eingeführt.

Tensoreinschränkungen

  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor, und OutputZeroPointTensor muss denselben DimensionCounthaben.
  • ATensor-, BTensor-und OutputTensor- müssen denselben DimensionCount-haben.
  • BTensor- und BZeroPointTensor- müssen denselben Datentyphaben.
  • OutputTensor- und OutputZeroPointTensor- muss denselben Datentyphaben.
  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor, und OutputZeroPointTensor muss denselben DimensionCounthaben.
  • ATensor- und AZeroPointTensor- müssen denselben DataType-aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_0 und höher

Tensor Art Unterstützte Dimensionsanzahl Unterstützte Datentypen
ATensor Eingabe 2 bis 4 INT8, UINT8
AScaleTensor Eingabe 1 bis 4 FLOAT32
AZeroPointTensor Optionale Eingabe 1 bis 4 INT8, UINT8
BTensor Eingabe 2 bis 4 INT8, UINT8
BScaleTensor Eingabe 1 bis 4 FLOAT32
BZeroPointTensor Optionale Eingabe 1 bis 4 INT8, UINT8
OutputScaleTensor Eingabe 1 bis 4 FLOAT32
OutputZeroPointTensor Optionale Eingabe 1 bis 4 INT8, UINT8
OutputTensor Ausgabe 2 bis 4 INT8, UINT8

DML_FEATURE_LEVEL_2_1 und höher

Tensor Art Unterstützte Dimensionsanzahl Unterstützte Datentypen
ATensor Eingabe 4 INT8, UINT8
AScaleTensor Eingabe 4 FLOAT32
AZeroPointTensor Optionale Eingabe 4 INT8, UINT8
BTensor Eingabe 4 INT8, UINT8
BScaleTensor Eingabe 4 FLOAT32
BZeroPointTensor Optionale Eingabe 4 INT8, UINT8
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