Estrutura DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC (directml.h)

Valores médios quantificados por meio dos elementos dentro da janela deslizante sobre o tensor de entrada. Esse operador é matematicamente equivalente a dequantificar as entradas, então execute o pool médio e, em seguida, quantifique a saída.

Função dequantificar

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

Função quantificar

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

Importante

Essa API está disponível como parte do pacote redistribuível autônomo DirectML (consulte Microsoft.AI.DirectML versão 1.13 e posterior. Confira também o histórico de versões do DirectML.

Sintaxe

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

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

Um tensor de entrada de Tamanhos{ BatchCount, ChannelCount, Height, Width } para 4D e { BatchCount, ChannelCount, Depth, Height, Weight } para 5D.

InputScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de escala InputTensor. As dimensões esperadas de InputScaleTensor serão { 1, 1, 1, 1 } se a quantificação por tensor for necessária ou { 1, ChannelCount, 1, 1 } se a quantificação por canal for necessária. Esses valores de escala são usados para dequantificar os valores de InputTensor.

InputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de ponto zero do InputTensor. As dimensões esperadas de InputZeroPointTensor serão { 1, 1, 1, 1 } se a quantificação por tensor for necessária ou { 1, ChannelCount, 1, 1 } se a quantificação por canal for necessária. Esses valores de ponto zero são usados para dequantificar os valores de InputTensor.

OutputScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de escala de OutputTensor. As dimensões esperadas de OutputScaleTensor serão { 1, 1, 1, 1 } se a quantificação por tensor for necessária ou { 1, ChannelCount, 1, 1 } se a quantificação por canal for necessária. Esses valores de escala são usados para quantificar os valores de OutputTensor.

OutputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de ponto zero do OutputTensor. As dimensões esperadas de OutputZeroPointTensor serão { 1, 1, 1, 1 } se a quantificação por tensor for necessária ou { 1, ChannelCount, 1, 1 } se a quantificação por canal for necessária. Esse valor de ponto zero é usado para quantificar os valores de OutputTensor.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Uma descrição do tensor de saída. Os tamanhos do tensor de saída podem ser calculados da maneira a seguir.

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

O número de dimensões espaciais do tensor de entrada InputTensor, que também corresponde ao número de dimensões da janela deslizante WindowSize. Esse valor também determina o tamanho das matrizes Strides, StartPadding e EndPadding. Ele deve ser definido como 2 quando InputTensor for 4D e 3 quando for um tensor 5D.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

As strides para as dimensões da janela deslizante dos tamanhos { Height, Width } quando o DimensionCount for definido como 2 ou quando { Depth, Height, Width } for definido como 3.

WindowSize

Tipo: _Field_size_(DimensionCount) const UINT*

As dimensões da janela deslizante em { Height, Width } quando o DimensionCount for definido como 2 ou quando { Depth, Height, Width } for definido como 3.

StartPadding

Tipo: _Field_size_(DimensionCount) const UINT*

O número de elementos de preenchimento a serem aplicados ao início de cada dimensão espacial do tensor de entrada InputTensor. Os valores estão em { Height, Width } quando DimensionCount for definido como 2 ou { Depth, Height, Width } quando definido como 3.

EndPadding

Tipo: _Field_size_(DimensionCount) const UINT*

O número de elementos de preenchimento a serem aplicados ao fim de cada dimensão espacial do tensor de entrada InputTensor. Os valores estão em { Height, Width } quando DimensionCount for definido como 2 ou { Depth, Height, Width } quando definido como 3.

Dilations

Tipo: _Field_size_(DimensionCount) const UINT*

Os valores para cada dimensão espacial do tensor de entrada InputTensor pelo qual um elemento dentro da janela deslizante é selecionado para cada elemento desse valor. Os valores estão em { Height, Width } quando DimensionCount for definido como 2 ou { Depth, Height, Width } quando definido como 3.

IncludePadding

Tipo: BOOL

Indica se os elementos de preenchimento devem ser incluídos ao redor das bordas espaciais ao calcular o valor médio em todos os elementos dentro da janela deslizante. Quando o valor é definido como FALSE, os elementos de preenchimento não são contados como parte do valor do divisor do cálculo da média.

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_6_2.

Restrições de tensor

  • InputTensor e OutputTensor devem ter o mesmo DimensionCount.
  • InputTensor e InputZeroPointTensor devem ter o mesmo DataType.
  • OutputTensor e OutputZeroPointTensor devem ter o mesmo DataType.

Suporte a tensores

Tensor Tipo Contagens de dimensões compatíveis Tipos de dados com suporte
InputTensor Entrada 4 a 5 INT8, UINT8
InputScaleTensor Entrada 1 a 5 FLOAT32
InputZeroPointTensor Entrada opcional 1 a 5 INT8, UINT8
OutputScaleTensor Entrada 1 a 5 FLOAT32
OutputZeroPointTensor Entrada opcional 1 a 5 INT8, UINT8
OutputTensor Saída 4 a 5 INT8, UINT8

Requisitos

   
Cabeçalho directml.h