DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC-Struktur (directml.h)
Führt eine Matrixmultiplikationsfunktion für quantisierte Daten aus. Dieser Operator entspricht mathematisch dem Dequantisieren der Eingaben, der anschließenden Matrix multiplizieren und der anschließenden Quantisierung der Ausgabe.
Dieser Operator erfordert, dass die Matrix-Multiplikations-Eingabe-Tensoren 4D sein, die als { BatchCount, ChannelCount, Height, Width }
formatiert sind. Der Matrixmultiplikationsoperator führt BatchCount * ChannelCount number of independent matrix multipliications aus.
Wenn beispielsweise ATensorgrößen von { BatchCount, ChannelCount, M, K }
hat und BTensorGrößen von { BatchCount, ChannelCount, K, N }
hat und OutputTensorgrößen von { BatchCount, ChannelCount, M, N }
hat, führt der Matrixmultiplikationsoperator BatchCount * ChannelCount unabhängige Matrixmultiplikationen der Dimensionen {M,K} x {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;
};
Member
ATensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die A-Daten enthält. Die Dimensionen dieses Tensors sollten sein { BatchCount, ChannelCount, M, K }
.
AScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die ATensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von AScaleTensor
sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
wenn eine Quantisierung pro Zeile erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der A-Werte verwendet.
AZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die ATensor-Nullpunktdaten enthält. Die erwarteten Dimensionen des AZeroPointTensor sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
eine Quantisierung pro Zeile erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der ATensor-Werte verwendet.
BTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die B-Daten enthält. Die Dimensionen dieses Tensors sollten sein { BatchCount, ChannelCount, K, N }
.
BScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die BTensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von BScaleTensor
sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, 1, N }
eine Quantisierung pro Spalte erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der BTensor-Werte verwendet.
BZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die BTensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von BZeroPointTensor
sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, 1, N }
eine Quantisierung pro Spalte erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der BTensor-Werte verwendet.
OutputScaleTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die OutputTensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von OutputScaleTensor
sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
eine Quantisierung pro Zeile erforderlich ist. Dieser Skalierungswert wird zum Dequantisieren der OutputTensor-Werte verwendet.
OutputZeroPointTensor
Typ: _Maybenull_ const DML_TENSOR_DESC*
Ein optionaler Tensor, der die OutputTensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von OutputZeroPointTensor
sind { 1, 1, 1, 1 }
, wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, 1, M, 1 }
eine Quantisierung pro Zeile erforderlich ist. Dieser Nullpunktwert wird zum Dequantisieren der OutputTensor-Werte verwendet.
OutputTensor
Typ: const 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_1
eingeführt.
Tensoreinschränkungen
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor und OutputZeroPointTensor müssen über dieselbe DimensionCount verfügen.
- ATensor, BTensor und OutputTensor müssen über dasselbe DimensionCount-Objekt verfügen.
- BTensor und BZeroPointTensor müssen denselben Datentyp aufweisen.
- OutputTensor und OutputZeroPointTensor müssen denselben Datentyp aufweisen.
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor und OutputZeroPointTensor müssen über dieselbe DimensionCount verfügen.
- ATensor und AZeroPointTensor müssen denselben Datentyp aufweisen.
Tensorunterstützung
DML_FEATURE_LEVEL_4_0 und höher
Tensor | Variante | 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 | Variante | 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
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |