Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 |