Freigeben über


DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC-Struktur (directml.h)

Durchschnittliche quantisierte Werte für die Elemente innerhalb des gleitenden Fensters über den Eingabe-Tensor. Dieser Operator entspricht mathematisch der Dequantisierung der Eingaben, der durchschnittlichen Poolerstellung und der anschließenden Quantisierung der Ausgabe.

Dequantize function

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

Quantize function

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

Wichtig

Diese API ist als Teil des eigenständigen weiterverteilbare Pakets DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.13 und höher). Siehe auch DirectML-Versionsverlauf.

Syntax

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;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Ein Eingabe-Tensor der Größen{ BatchCount, ChannelCount, Height, Width } für 4D und { BatchCount, ChannelCount, Depth, Height, Weight } für 5D.

InputScaleTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die InputTensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von InputScaleTensor sind { 1, 1, 1, 1 } , wenn die Quantisierung pro Tensor erforderlich ist oder { 1, ChannelCount, 1, 1 }, wenn die Quantisierung pro Kanal erforderlich ist. Diese Skalierungswerte werden zum Dequantisieren der InputTensor-Werte verwendet.

InputZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die InputTensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von InputZeroPointTensor sind { 1, 1, 1, 1 } , wenn die Quantisierung pro Tensor erforderlich ist oder { 1, ChannelCount, 1, 1 }, wenn die Quantisierung pro Kanal erforderlich ist. Diese Nullpunktwerte werden zum Dequantisieren der InputTensor-Werte verwendet.

OutputScaleTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die OutputTensor-Skalierungsdaten enthält. Die erwarteten Dimensionen von OutputScaleTensor sind { 1, 1, 1, 1 } , wenn die Quantisierung pro Tensor erforderlich ist oder { 1, ChannelCount, 1, 1 }, wenn die Quantisierung pro Kanal erforderlich ist. Diese Skalierungswerte werden zum Quantisieren der OutputTensor-Werte verwendet.

OutputZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die OutputTensor-Nullpunktdaten enthält. Die erwarteten Dimensionen von OutputZeroPointTensor sind { 1, 1, 1, 1 } , wenn die Quantisierung pro Tensor erforderlich ist oder { 1, ChannelCount, 1, 1 }, wenn die Quantisierung pro Kanal erforderlich ist. Dieser Nullpunktwert wird zum Quantisieren der OutputTensor-Werte verwendet.

OutputTensor

Typ: const DML_TENSOR_DESC*

Eine Beschreibung des Ausgabe-Tensor. Die Größen des Ausgabe-Tensors können wie folgt berechnet werden.

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

Typ: UINT

Die Zahl der räumlichen Dimensionen des Eingabe-Tensor InputTensor, der auch der Zahl der Dimensionen des gleitenden Fensters WindowSize entspricht. Dieser Wert bestimmt auch die Größe der Arrays Strides, StartPadding und EndPadding. Er sollte auf 2 festgelegt werden, wenn InputTensor 4D ist, und 3, wenn es sich um einen 5D-Tensor handelt.

Strides

Typ: _Field_size_(DimensionCount) const UINT*

Die Abstände für die Größenabmessungen für das gleitende Fenster, { Height, Width }wenn der DimensionCount auf 2 festgelegt ist, oder { Depth, Height, Width } wenn er auf 3 festgelegt ist.

WindowSize

Typ: _Field_size_(DimensionCount) const UINT*

Die Abmessungen für das gleitende Fenster, { Height, Width }wenn der DimensionCount auf 2 festgelegt ist, oder { Depth, Height, Width } wenn er auf 3 festgelegt ist.

StartPadding

Typ: _Field_size_(DimensionCount) const UINT*

Die Anzahl der Abstandselemente, die am Anfang jeder räumlichen Dimension des Eingabe-Tensor InputTensor angewendet werden sollen. Die Werte befinden sich in { Height, Width } wenn DimensionCount auf 2 festgelegt ist oder { Depth, Height, Width } wenn sie auf 3 festgelegt ist.

EndPadding

Typ: _Field_size_(DimensionCount) const UINT*

Die Anzahl der Abstandselemente, die am Ende jeder räumlichen Dimension des Eingabe-Tensor InputTensor angewendet werden sollen. Die Werte befinden sich in { Height, Width } wenn DimensionCount auf 2 festgelegt ist oder { Depth, Height, Width } wenn sie auf 3 festgelegt ist.

Dilations

Typ: _Field_size_(DimensionCount) const UINT*

Die Werte für jede räumliche Dimension des Eingabe-Tensor InputTensor, mit dem ein Element innerhalb des gleitenden Fensters für jedes Element dieses Werts ausgewählt wird. Die Werte befinden sich in { Height, Width } wenn DimensionCount auf 2 festgelegt ist oder { Depth, Height, Width } wenn sie auf 3 festgelegt ist.

IncludePadding

Typ: BOOL

Gibt an, ob die Abstandselemente um die räumlichen Kanten beim Berechnen des Mittelwerts für alle Elemente innerhalb des gleitenden Fensters eingeschlossen werden sollen. Wenn der Wert auf FALSE festgelegt ist, werden die Abstandselemente nicht als Teil des Divisorwerts der durchschnittlichen Berechnung gezählt.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_6_2 eingeführt.

Tensor-Einschränkungen

  • InputTensor und OutputTensor müssen denselben DimensionCount haben.
  • InputTensor und InputZeroPointTensor müssen denselben DataType haben.
  • OutputTensor und OutputZeroPointTensor müssen denselben DataType haben.

Tensor-Unterstützung

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 bis 5 INT8, UINT8
InputScaleTensor Eingabe 1 bis 5 FLOAT32
InputZeroPointTensor Optionale Eingabe 1 bis 5 INT8, UINT8
OutputScaleTensor Eingabe 1 bis 5 FLOAT32
OutputZeroPointTensor Optionale Eingabe 1 bis 5 INT8, UINT8
OutputTensor Output 4 bis 5 INT8, UINT8

Anforderungen

   
Übergeordnet directml.h