Aracılığıyla paylaş


DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC yapısı (directml.h)

Giriş tensoru üzerinden kayan pencere içindeki öğeler arasında nicelenmiş değerlerin ortalamasını alır. Bu işleç matematiksel olarak girişlerin dequantizing, ardından ortalama havuz oluşturma ve ardından çıktıyı niceleme ile eşdeğerdir.

İşlevi dequantize

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

Quantize işlevi

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

Önemli

Bu API, DirectML tek başına yeniden dağıtılabilir paketinin bir parçası olarak kullanılabilir (bkz . Microsoft.AI.DirectML sürüm 1.13 ve üzeri. Ayrıca bkz . DirectML sürüm geçmişi.

Sözdizimi

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

Üyeler

InputTensor

Tür: const DML_TENSOR_DESC*

4B ve 5B için { BatchCount, ChannelCount, Height, Width }{ BatchCount, ChannelCount, Depth, Height, Weight }.

InputScaleTensor

Tür: const DML_TENSOR_DESC*

InputTensor ölçek verilerini içeren bir tensor . InputScaleTensor'ın beklenen boyutları, tensor { 1, 1, 1, 1 } başına nicelemenin gerekli olması veya { 1, ChannelCount, 1, 1 } kanal başına nicelemenin gerekli olmasıdır. Bu ölçek değerleri InputTensor değerlerinin dequantizing için kullanılır.

Uyarı

0 ölçek değeri tanımsız davranışla sonuçlanır.

InputZeroPointTensor

Tür: _Maybenull_ const DML_TENSOR_DESC*

InputTensor sıfır noktası verilerini içeren isteğe bağlı bir tensor. InputZeroPointTensor'ın{ 1, 1, 1, 1 } beklenen boyutları, tensor başına nicelemenin gerekli olması veya { 1, ChannelCount, 1, 1 } kanal başına nicelemenin gerekli olmasıdır. Bu sıfır noktası değerleri , InputTensor değerlerinin dequantizesi için kullanılır.

OutputScaleTensor

Tür: const DML_TENSOR_DESC*

OutputTensor ölçek verilerini içeren bir tensor . OutputScaleTensor'ın beklenen boyutları, tensor { 1, 1, 1, 1 } başına nicelemenin gerekli olması veya { 1, ChannelCount, 1, 1 } kanal başına nicelemenin gerekli olmasıdır. Bu ölçek değerleri OutputTensor değerlerini ölçmek için kullanılır.

Uyarı

0 ölçek değeri tanımsız davranışla sonuçlanır.

OutputZeroPointTensor

Tür: _Maybenull_ const DML_TENSOR_DESC*

OutputTensor sıfır noktası verilerini içeren isteğe bağlı bir tensor . OutputZeroPointTensor'ın{ 1, 1, 1, 1 } beklenen boyutları, tensor başına nicelemenin gerekli olması veya { 1, ChannelCount, 1, 1 } kanal başına nicelemenin gerekli olmasıdır. Bu sıfır noktası değeri OutputTensor değerlerini ölçmek için kullanılır.

OutputTensor

Tür: const DML_TENSOR_DESC*

Çıkış tensorunun açıklaması. Çıkış tensorunun boyutları aşağıdaki gibi hesaplanabilir.

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

Tür: UINT

Giriş tensor InputTensor'ın uzamsal boyutlarının sayısıdır ve bu sayı, kayan pencere WindowSize'in boyut sayısına da karşılık gelir. Bu değer Strides, StartPadding ve EndPadding dizilerinin boyutunu da belirler. InputTensor 4B olduğunda 2, 5B tensor olduğunda 3 olarak ayarlanmalıdır.

Strides

Tür: _Field_size_(DimensionCount) const UINT*

{ Height, Width } 2 veya 3 olarak ayarlandığında boyutların kayan pencere boyutları { Depth, Height, Width } için adımlar.

WindowSize

Tür: _Field_size_(DimensionCount) const UINT*

{ Height, Width } 2 veya 3 olarak ayarlandığında içindeki { Depth, Height, Width } kayan pencerenin boyutları.

StartPadding

Tür: _Field_size_(DimensionCount) const UINT*

Giriş tensor InputTensor'ın her uzamsal boyutunun başına uygulanacak doldurma öğelerinin sayısı. { Height, Width } 2 veya 3 olarak ayarlandığında içindedir{ Depth, Height, Width }.

EndPadding

Tür: _Field_size_(DimensionCount) const UINT*

Giriş tensor InputTensor'ın her uzamsal boyutunun sonuna uygulanacak doldurma öğelerinin sayısı. { Height, Width } 2 veya 3 olarak ayarlandığında içindedir{ Depth, Height, Width }.

Dilations

Tür: _Field_size_(DimensionCount) const UINT*

Bu değerin her öğesi için kayan penceredeki bir öğenin seçildiği giriş tensor InputTensor'ın her uzamsal boyutu için değerler. { Height, Width } 2 veya 3 olarak ayarlandığında içindedir{ Depth, Height, Width }.

IncludePadding

Tür: BOOL

Kayan pencere içindeki tüm öğeler arasında ortalama değeri hesaplarken uzamsal kenarların çevresine doldurma öğelerinin eklenip eklenmeyeceğini gösterir. Değer YANLIŞ olarak ayarlandığında, doldurma öğeleri ortalama hesaplamasının bölen değerinin bir parçası olarak sayılmaz.

Kullanılabilirlik

Bu işleç DML_FEATURE_LEVEL_6_2 tanıtıldı.

Tensor kısıtlamaları

  • InputTensor ve OutputTensor aynı DimensionCount'a sahip olmalıdır.
  • InputTensor ve InputZeroPointTensor aynı DataType'a sahip olmalıdır.
  • OutputTensor ve OutputZeroPointTensor aynı DataType'a sahip olmalıdır.

Tensor desteği

Tensör Nazik Desteklenen boyut sayıları Desteklenen veri türleri
Giriş Tensörü Veri Girişi 4 - 5 INT8, UINT8
InputScaleTensor Veri Girişi 1 - 5 FLOAT32
InputZeroPointTensor İsteğe bağlı giriş 1 - 5 INT8, UINT8
OutputScaleTensor Veri Girişi 1 - 5 FLOAT32
OutputZeroPointTensor İsteğe bağlı giriş 1 - 5 INT8, UINT8
ÇıkışTensör Çıktı 4 - 5 INT8, UINT8

Gereksinimler

   
Üstbilgi directml.h