Condividi tramite


struttura DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC (directml.h)

Esegue una convoluzione del FilterTensor con l'InputTensor . Questo operatore esegue la convoluzione forward sui dati quantizzati. Questo operatore equivale matematicamente a dequantizzare gli input, convolving e quindi a quantificare l'output.

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 sono .

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

Tipo: UINT

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 , dilations, StartPaddinge matrice di EndPadding. È supportato solo un valore pari a 2.

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

Tipo: UINT

Numero di gruppi in cui dividere l'operazione di convoluzione. GroupCount può essere usato per ottenere una convoluzione approfondita impostando il GroupCount uguale al conteggio dei canali di input. In questo modo la convoluzione viene divisa in una convoluzione separata per canale di input.

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