Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ś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 są { 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 są { 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 są { 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 są { 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 |