struttura DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)
Esegue una convoluzione del
Le funzioni lineari quantizzate usate da questo operatore sono le funzioni di quantizzazione lineare
Funzione Dequantize
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
Funzione Quantize
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
Sintassi
struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputScaleTensor;
const DML_TENSOR_DESC *InputZeroPointTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *FilterScaleTensor;
const DML_TENSOR_DESC *FilterZeroPointTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
UINT GroupCount;
};
Membri
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di input. Le dimensioni previste del InputTensor
InputScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di scala di input. Le dimensioni previste del InputScaleTensor
sono { 1, 1, 1, 1 }
. Questo valore di scala viene usato per dequantizzare i valori di input.
Nota
Un valore di scala pari a 0 comporta un comportamento non definito.
InputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati del punto zero di input. Le dimensioni previste del InputZeroPointTensor sono { 1, 1, 1, 1 }
. Questo valore zero point viene usato per dequantizzare i valori di input.
FilterTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati del filtro. Le dimensioni previste del FilterTensor sono { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di scalabilità dei filtri. Le dimensioni previste del FilterScaleTensor
sono { 1, 1, 1, 1 }
se è necessaria la quantizzazione per tensore o { 1, OutputChannelCount, 1, 1 }
se è necessaria la quantizzazione per canale. Questo valore di scala viene usato per dequantizzare i valori del filtro.
Nota
Un valore di scala pari a 0 comporta un comportamento non definito.
FilterZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati del punto zero filtro. Le dimensioni previste del FilterZeroPointTensor sono { 1, 1, 1, 1 }
se è necessaria la quantizzazione per tensor oppure { 1, OutputChannelCount, 1, 1 }
se è necessaria la quantizzazione per canale. Questo valore zero point viene usato per dequantizzare i valori del filtro.
BiasTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore contenente i dati di distorsione. Il tensore di distorsione è un tensore contenente i dati trasmessi nel tensore di output alla fine della convoluzione aggiunta al risultato. Le dimensioni previste di BiasTensor sono { 1, OutputChannelCount, 1, 1 }
per 4D.
OutputScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di scalabilità di output. Le dimensioni previste di OutputScaleTensor sono { 1, 1, 1, 1 }
. Questo valore di scala di input viene usato per la quantizzazione dei valori di output della convoluzione.
Nota
Un valore di scala pari a 0 comporta un comportamento non definito.
OutputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati del punto zero filtro. Le dimensioni previste di OutputZeroPointTensor sono { 1, 1, 1, 1 }
. Questo valore del punto zero di input viene usato per la quantizzazione della convoluzione dei valori di output.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore in cui scrivere i risultati. Le dimensioni previste di OutputTensor sono { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
Numero di dimensioni spaziali per l'operazione di convoluzione. Le dimensioni spaziali sono le dimensioni inferiori del tensore del filtro di convoluzione FilterTensor. Questo valore determina anche le dimensioni dellestrides
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
I progressi dell'operazione di convoluzione. Questi passi vengono applicati al filtro di convoluzione. Sono separati dai tempi del tensore inclusi in DML_TENSOR_DESC.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
Dilations dell'operazione di convoluzione. Le dilation vengono applicate agli elementi del kernel di filtro. Questo ha l'effetto di simulare un kernel di filtro più grande spaziando gli elementi interni del kernel del filtro con zeri.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Valori di spaziatura interna da applicare all'inizio di ogni dimensione spaziale del filtro e del tensore di input dell'operazione di convoluzione.
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Valori di spaziatura interna da applicare alla fine di ogni dimensione spaziale del filtro e tensore di input dell'operazione di convoluzione.
GroupCount
Numero di gruppi in cui dividere l'operazione di convoluzione.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_2_1
.
Vincoli tensor
- BiasTensor, FilterTensor, InputTensore OutputTensor devono avere lo stesso DimensionCount.
- OutputTensor e OutputZeroPointTensor devono avere lo stesso DataType.
- InputTensor e InputZeroPointTensor devono avere lo stesso DataType.
- FilterTensor e FilterZeroPointTensor devono avere lo stesso DataType.
Supporto tensor
DML_FEATURE_LEVEL_5_2 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | Da 3 a 4 | INT8, UINT8 |
InputScaleTensor | Immissione | Da 1 a 4 | FLOAT32 |
InputZeroPointTensor | Input facoltativo | Da 1 a 4 | INT8, UINT8 |
FilterTensor | Immissione | Da 3 a 4 | INT8, UINT8 |
FilterScaleTensor | Immissione | Da 1 a 4 | FLOAT32 |
FilterZeroPointTensor | Input facoltativo | Da 1 a 4 | INT8, UINT8 |
BiasTensor | Input facoltativo | Da 3 a 4 | INT32 |
OutputScaleTensor | Immissione | Da 1 a 4 | FLOAT32 |
OutputZeroPointTensor | Input facoltativo | Da 1 a 4 | INT8, UINT8 |
OutputTensor | Prodotto | Da 3 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_4_0 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | Da 3 a 4 | INT8, UINT8 |
InputScaleTensor | Immissione | Da 1 a 4 | FLOAT32 |
InputZeroPointTensor | Input facoltativo | Da 1 a 4 | INT8, UINT8 |
FilterTensor | Immissione | Da 3 a 4 | INT8, UINT8 |
FilterScaleTensor | Immissione | Da 3 a 4 | FLOAT32 |
FilterZeroPointTensor | Input facoltativo | Da 1 a 4 | INT8, UINT8 |
BiasTensor | Input facoltativo | Da 3 a 4 | INT32 |
OutputScaleTensor | Immissione | Da 1 a 4 | FLOAT32 |
OutputZeroPointTensor | Input facoltativo | Da 1 a 4 | INT8, UINT8 |
OutputTensor | Prodotto | Da 3 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 e versioni successive
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | 4 | INT8, UINT8 |
InputScaleTensor | Immissione | 4 | FLOAT32 |
InputZeroPointTensor | Input facoltativo | 4 | INT8, UINT8 |
FilterTensor | Immissione | 4 | INT8, UINT8 |
FilterScaleTensor | Immissione | 4 | FLOAT32 |
FilterZeroPointTensor | Input facoltativo | 4 | INT8, UINT8 |
BiasTensor | Input facoltativo | 4 | INT32 |
OutputScaleTensor | Immissione | 4 | FLOAT32 |
OutputZeroPointTensor | Input facoltativo | 4 | INT8, UINT8 |
OutputTensor | Prodotto | 4 | INT8, UINT8 |
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 Build 20348 |
server minimo supportato | Windows 10 Build 20348 |
intestazione |
directml.h |