struttura DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC (directml.h)
Esegue la funzione di quantizzazione lineare seguente per ogni elemento in InputTensor rispetto all'elemento corrispondente in ScaleTensor e ZeroPointTensor, inserendo i risultati nell'elemento corrispondente di OutputTensor.
// 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)
La quantizzazione prevede la conversione in un tipo di dati con precisione inferiore per accelerare l'aritmetica. È un modo comune per migliorare le prestazioni al costo della precisione. Un gruppo di valori a 8 bit può essere calcolato più velocemente di un gruppo di valori a 32 bit.
Sintassi
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;
};
Membri
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente gli input.
ScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente le scale.
Nota
Un valore di scala pari a 0 comporta un comportamento non definito.
Se InputTensor è INT32, ScaleTensor deve essere FLOAT32. In caso contrario,
ZeroPointTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente il punto zero desiderato per la quantizzazione.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output in cui scrivere i risultati.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0
.
Vincoli tensor
- InputTensor, OutputTensor, ScaleTensore ZeroPointTensor devono avere lo stesso DimensionCount e dimensioni .
- OutputTensor e ZeroPointTensor devono avere lo stesso DataType.
Supporto tensor
DML_FEATURE_LEVEL_6_2 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | Da 1 a 8 | FLOAT32, FLOAT16, INT32 |
ScaleTensor | Immissione | Da 1 a 8 | FLOAT32, FLOAT16 |
ZeroPointTensor | Input facoltativo | Da 1 a 8 | INT8, UINT8 |
OutputTensor | Prodotto | Da 1 a 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_6_0 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | Da 1 a 8 | FLOAT32, FLOAT16, INT32 |
ScaleTensor | Immissione | Da 1 a 8 | FLOAT32, FLOAT16 |
ZeroPointTensor | Immissione | Da 1 a 8 | INT8, UINT8 |
OutputTensor | Prodotto | Da 1 a 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_3_0 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | Da 1 a 8 | FLOAT32, INT32 |
ScaleTensor | Immissione | Da 1 a 8 | FLOAT32 |
ZeroPointTensor | Immissione | Da 1 a 8 | INT8, UINT8 |
OutputTensor | Prodotto | Da 1 a 8 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | 4 | FLOAT32, INT32 |
ScaleTensor | Immissione | 4 | FLOAT32 |
ZeroPointTensor | Immissione | 4 | INT8, UINT8 |
OutputTensor | Prodotto | 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_1_0 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | 4 | FLOAT32 |
ScaleTensor | Immissione | 4 | FLOAT32 |
ZeroPointTensor | Immissione | 4 | UINT8 |
OutputTensor | Prodotto | 4 | UINT8 |
Fabbisogno
Requisito | Valore |
---|---|
intestazione |
directml.h |