Condividi tramite


struttura DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC (directml.h)

Calcola la media dei valori quantizzati tra gli elementi all'interno della finestra scorrevole sul tensore di input. Questo operatore equivale matematicamente a dequantizzare gli input, quindi a eseguire il pooling medio e quindi a quantificare l'output.

Funzione Dequantize

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Funzione Quantize

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Importante

Questa API è disponibile come parte del pacchetto ridistribuibile autonomo DirectML (vedere Microsoft.AI.DirectML versione 1.13 e successive. Vedere anche cronologia delle versioni di DirectML.

Sintassi

struct DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* InputScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
    const DML_TENSOR_DESC* OutputScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
    const DML_TENSOR_DESC* OutputTensor;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const UINT* Strides;
    _Field_size_(DimensionCount) const UINT* WindowSize;
    _Field_size_(DimensionCount) const UINT* StartPadding;
    _Field_size_(DimensionCount) const UINT* EndPadding;
    _Field_size_(DimensionCount) const UINT* Dilations;
    BOOL IncludePadding;
};

Membri

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensore di input di Dimensioni{ BatchCount, ChannelCount, Height, Width } per 4D e { BatchCount, ChannelCount, Depth, Height, Weight } per 5D.

InputScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensore contenente i dati di scala inputTensor . Le dimensioni previste di InputScaleTensor sono { 1, 1, 1, 1 } se è necessaria la quantizzazione per tensore o { 1, ChannelCount, 1, 1 } se è necessaria la quantizzazione per canale. Questi valori di scala vengono usati per dequantizzare i valori di InputTensor .

Annotazioni

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 inputTensor . Le dimensioni previste di InputZeroPointTensor sono { 1, 1, 1, 1 } se è necessaria la quantizzazione per tensore o { 1, ChannelCount, 1, 1 } se è necessaria la quantizzazione per canale. Questi valori di zero punti vengono usati per dequantizzare i valori inputTensor .

OutputScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensore contenente i dati di scalabilità di OutputTensor . Le dimensioni previste di OutputScaleTensor sono { 1, 1, 1, 1 } se è necessaria la quantizzazione per tensore o { 1, ChannelCount, 1, 1 } se è necessaria la quantizzazione per canale. Questi valori di scala vengono usati per la quantizzazione dei valori di OutputTensor .

Annotazioni

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 OutputTensor . Le dimensioni previste di OutputZeroPointTensor sono { 1, 1, 1, 1 } se è necessaria la quantizzazione per tensore o { 1, ChannelCount, 1, 1 } se è necessaria la quantizzazione per canale. Questo valore zero point viene usato per la quantizzazione dei valori di OutputTensor .

OutputTensor

Tipo: const DML_TENSOR_DESC*

Descrizione del tensore di output. Le dimensioni del tensore di output possono essere calcolate nel modo seguente.

OutputTensor->Sizes[0] = InputTensor->Sizes[0];
OutputTensor->Sizes[1] = InputTensor->Sizes[1];

for (UINT i = 0; i < DimensionCount; ++i) {
  UINT PaddedSize = InputTensor->Sizes[i + 2] + StartPadding[i] + EndPadding[i];
  OutputTensor->Sizes[i + 2] = (PaddedSize - WindowSizes[i]) / Strides[i] + 1;
}

DimensionCount

Tipo: UINT

Numero di dimensioni spaziali del tensore di input InputTensor, che corrisponde anche al numero di dimensioni della finestra temporale scorrevole WindowSize. Questo valore determina anche le dimensioni delle matrici Strides, StartPadding e EndPadding . Deve essere impostato su 2 quando InputTensor è 4D e 3 quando è un tensore 5D.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

I passi per le dimensioni della finestra scorrevole delle dimensioni { Height, Width } quando DimensionCount è impostato su 2 o { Depth, Height, Width } se impostato su 3.

WindowSize

Tipo: _Field_size_(DimensionCount) const UINT*

Dimensioni della finestra temporale scorrevole in { Height, Width } quando DimensionCount è impostato su 2 o { Depth, Height, Width } se impostato su 3.

StartPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Numero di elementi di riempimento da applicare all'inizio di ogni dimensione spaziale del tensore di input InputTensor. I valori si trovano in { Height, Width } quando DimensionCount è impostato su 2 o { Depth, Height, Width } quando è impostato su 3.

EndPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Numero di elementi di riempimento da applicare alla fine di ogni dimensione spaziale del tensore di input InputTensor. I valori si trovano in { Height, Width } quando DimensionCount è impostato su 2 o { Depth, Height, Width } quando è impostato su 3.

Dilations

Tipo: _Field_size_(DimensionCount) const UINT*

I valori per ogni dimensione spaziale del tensore di input InputTensor in base al quale viene selezionato un elemento all'interno della finestra scorrevole per ogni elemento di tale valore. I valori si trovano in { Height, Width } quando DimensionCount è impostato su 2 o { Depth, Height, Width } quando è impostato su 3.

IncludePadding

Tipo: BOOL

Indica se includere gli elementi di riempimento intorno ai bordi spaziali durante il calcolo del valore medio in tutti gli elementi all'interno della finestra scorrevole. Quando il valore è impostato su FALSE, gli elementi di riempimento non vengono conteggiati come parte del valore divisore del calcolo della media.

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_6_2.

Vincoli tensor

  • InputTensor e OutputTensor devono avere lo stesso DimensionCount.
  • InputTensor e InputZeroPointTensor devono avere lo stesso Tipo di dati.
  • OutputTensor e OutputZeroPointTensor devono avere lo stesso tipo di dati.

Supporto tensor

Tensore Tipo Conteggi delle dimensioni supportati Tipi di dati supportati
InputTensor Inserimento Da 4 a 5 INT8, UINT8
InputScaleTensor Inserimento Da 1 a 5 FLOAT32
InputZeroPointTensor Input facoltativo Da 1 a 5 INT8, UINT8
OutputScaleTensor Inserimento Da 1 a 5 FLOAT32
OutputZeroPointTensor Input facoltativo Da 1 a 5 INT8, UINT8
OutputTensor Risultato Da 4 a 5 INT8, UINT8

Requisiti

   
Intestazione directml.h