DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC-Struktur (directml.h)
Führt die folgende lineare Quantisierungsfunktion für jedes Element in InputTensor in Bezug auf das entsprechende Element in ScaleTensor und ZeroPointTensor aus, wobei die Ergebnisse im entsprechenden Element von OutputTensor platziert werden.
// For uint8 output, Min = 0, Max = 255
// For int8 output, Min = -128, Max = 127
f(input, scale, zero_point) = clamp(round(input / scale) + zero_point, Min, Max)
Die Quantisierung umfasst die Konvertierung in einen Datentyp mit niedrigerer Genauigkeit, um die Arithmetik zu beschleunigen. Dies ist ein gängiger Weg, um die Leistung auf Kosten der Genauigkeit zu steigern. Eine Gruppe von 8-Bit-Werten kann schneller berechnet werden als eine Gruppe von 32-Bit-Werten.
Syntax
struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *ScaleTensor;
const DML_TENSOR_DESC *ZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, der die Eingaben enthält.
ScaleTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, der die Skalen enthält. Wenn InputTensorAUF INT32 festgelegt ist, muss ScaleTensorFLOAT32 sein. Andernfalls muss ScaleTensor denselben Datentyp wie InputTensor aufweisen.
ZeroPointTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, der den gewünschten Nullpunkt für die Quantisierung enthält.
OutputTensor
Typ: const DML_TENSOR_DESC*
Der Ausgabe tensor, in den die Ergebnisse geschrieben werden sollen.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_1_0
eingeführt.
Tensoreinschränkungen
- InputTensor, OutputTensor, ScaleTensor und ZeroPointTensor müssen über die gleichen DimensionCount und Sizes verfügen.
- OutputTensor und ZeroPointTensor müssen denselben Datentyp aufweisen.
Tensorunterstützung
DML_FEATURE_LEVEL_6_2 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16, INT32 |
ScaleTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16 |
ZeroPointTensor | Optionale Eingabe | 1 bis 8 | INT8, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_6_0 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16, INT32 |
ScaleTensor | Eingabe | 1 bis 8 | FLOAT32, FLOAT16 |
ZeroPointTensor | Eingabe | 1 bis 8 | INT8, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_3_0 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 1 bis 8 | FLOAT32, INT32 |
ScaleTensor | Eingabe | 1 bis 8 | FLOAT32 |
ZeroPointTensor | Eingabe | 1 bis 8 | INT8, UINT8 |
OutputTensor | Ausgabe | 1 bis 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 | FLOAT32, INT32 |
ScaleTensor | Eingabe | 4 | FLOAT32 |
ZeroPointTensor | Eingabe | 4 | INT8, UINT8 |
OutputTensor | Ausgabe | 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_1_0 und höher
Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 | FLOAT32 |
ScaleTensor | Eingabe | 4 | FLOAT32 |
ZeroPointTensor | Eingabe | 4 | UINT8 |
OutputTensor | Ausgabe | 4 | UINT8 |
Anforderungen
Kopfzeile | directml.h |