Condividi tramite


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, ScaleTensor deve avere lo stesso DataType di InputTensor.

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

Vedere anche

DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC