Udostępnij przez


struktura DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC (directml.h)

Średnie wartości kwantyzowane w obrębie elementów w oknie przesuwanym przez tensor wejściowy. Ten operator jest matematycznie odpowiednikiem dequantizing danych wejściowych, a następnie wykonywania średniej puli, a następnie kwantyzacji danych wyjściowych.

Dequantize, funkcja

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

Quantize, funkcja

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

Ważne

Ten interfejs API jest dostępny w ramach autonomicznego pakietu redystrybucyjnego DirectML (zobacz Microsoft.AI.DirectML w wersji 1.13 lub nowszej. Zobacz również historię wersji języka DirectML.

Składnia

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

Członkowie

InputTensor

Typ: const DML_TENSOR_DESC*

Tensor wejściowy rozmiaru{ BatchCount, ChannelCount, Height, Width } 4D i { BatchCount, ChannelCount, Depth, Height, Weight } 5D.

InputScaleTensor

Typ: const DML_TENSOR_DESC*

Tensor zawierający dane skalowania InputTensor . Oczekiwane wymiary klasy InputScaleTensor{ 1, 1, 1, 1 } , jeśli kwantyzacja na tensor jest wymagana lub { 1, ChannelCount, 1, 1 } jeśli kwantyzacja na kanał jest wymagana. Te wartości skalowania są używane do dequantizing wartości InputTensor .

Uwaga / Notatka

Wartość skali 0 powoduje niezdefiniowane zachowanie.

InputZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Opcjonalny tensor zawierający dane typu InputTensor zero point. Oczekiwane wymiary inputZeroPointTensor{ 1, 1, 1, 1 } , jeśli kwantyzacja na tensor jest wymagana lub { 1, ChannelCount, 1, 1 } jeśli kwantyzacja dla kanału jest wymagana. Te wartości zerowe są używane do dequantizing wartości InputTensor .

OutputScaleTensor

Typ: const DML_TENSOR_DESC*

Tensor zawierający dane skalowania elementu OutputTensor . Oczekiwane wymiary elementu OutputScaleTensor{ 1, 1, 1, 1 } , jeśli kwantyzacja na tensor jest wymagana, lub { 1, ChannelCount, 1, 1 } jeśli kwantyzacja na kanał jest wymagana. Te wartości skalowania są używane do kwantyzacji wartości OutputTensor .

Uwaga / Notatka

Wartość skali 0 powoduje niezdefiniowane zachowanie.

OutputZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Opcjonalny tensor zawierający dane punktu zero outputTensor . Oczekiwane wymiary parametru OutputZeroPointTensor{ 1, 1, 1, 1 } , jeśli kwantyzacja na tensor jest wymagana, lub { 1, ChannelCount, 1, 1 } jeśli kwantyzacja dla kanału jest wymagana. Ta wartość zerowa jest używana do kwantyzacji wartości OutputTensor .

OutputTensor

Typ: const DML_TENSOR_DESC*

Opis tensoru wyjściowego. Rozmiary tensoru wyjściowego można obliczyć w następujący sposób.

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

Liczba wymiarów przestrzennych wejściowych tensor InputTensor, która odpowiada również liczbie wymiarów okna przesuwnego WindowSize. Ta wartość określa również rozmiar tablic Strides, StartPadding i EndPadding . Należy ustawić wartość 2, gdy element InputTensor ma wartość 4D i 3, gdy jest to tensor 5D.

Strides

Typ: _Field_size_(DimensionCount) const UINT*

Kroki dotyczące wymiarów okna przesuwanego o rozmiarach { Height, Width } , gdy parametr DimensionCount jest ustawiony na 2 lub { Depth, Height, Width } w przypadku ustawienia wartości 3.

WindowSize

Typ: _Field_size_(DimensionCount) const UINT*

Wymiary okna przesuwnego w { Height, Width } przypadku ustawienia parametru DimensionCount na 2 lub { Depth, Height, Width } w przypadku ustawienia wartości 3.

StartPadding

Typ: _Field_size_(DimensionCount) const UINT*

Liczba elementów dopełnienia, które mają być stosowane na początku każdego wymiaru przestrzennego wejściowego tensor InputTensor. Wartości są dostępne, { Height, Width } gdy właściwość DimensionCount jest ustawiona na 2 lub { Depth, Height, Width } gdy jest ustawiona na 3.

EndPadding

Typ: _Field_size_(DimensionCount) const UINT*

Liczba elementów dopełnienia, które mają być stosowane na końcu każdego wymiaru przestrzennego wejściowego tensor InputTensor. Wartości są dostępne, { Height, Width } gdy właściwość DimensionCount jest ustawiona na 2 lub { Depth, Height, Width } gdy jest ustawiona na 3.

Dilations

Typ: _Field_size_(DimensionCount) const UINT*

Wartości dla każdego wymiaru przestrzennego wejściowego tensor InputTensor , za pomocą którego element w oknie przesuwnym jest wybierany dla każdego elementu tej wartości. Wartości są dostępne, { Height, Width } gdy właściwość DimensionCount jest ustawiona na 2 lub { Depth, Height, Width } gdy jest ustawiona na 3.

IncludePadding

Typ: BOOL

Wskazuje, czy należy uwzględnić elementy wypełnienia wokół krawędzi przestrzennych podczas obliczania średniej wartości we wszystkich elementach w oknie przesuwnym. Gdy wartość jest ustawiona na FAŁSZ, elementy dopełnienia nie są liczone jako część wartości dzielnika obliczenia średniej.

Dostępność

Ten operator został wprowadzony w DML_FEATURE_LEVEL_6_2.

Ograniczenia dotyczące tensorów

  • Elementy InputTensor i OutputTensor muszą mieć ten sam parametr DimensionCount.
  • Klasy InputTensor i InputZeroPointTensor muszą mieć ten sam typ danych.
  • Klasy OutputTensor i OutputZeroPointTensor muszą mieć ten sam typ danych.

Obsługa biblioteki Tensor

Tensor Rodzaj Obsługiwane liczby wymiarów Obsługiwane typy danych
Tensor wejściowy Dane wejściowe Od 4 do 5 INT8, UINT8
InputScaleTensor Dane wejściowe Od 1 do 5 FLOAT32
InputZeroPointTensor Opcjonalne dane wejściowe Od 1 do 5 INT8, UINT8
OutputScaleTensor Dane wejściowe Od 1 do 5 FLOAT32
OutputZeroPointTensor Opcjonalne dane wejściowe Od 1 do 5 INT8, UINT8
Tensor wyjściowy Wynik Od 4 do 5 INT8, UINT8

Wymagania

   
Nagłówek directml.h