Partilhar via


DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC estrutura (directml.h)

Valores quantizados médios entre os elementos dentro da janela deslizante sobre o tensor de entrada. Este operador é matematicamente equivalente a desquantificar as entradas, em seguida, executar o agrupamento médio e, em seguida, quantificar a saída.

Função Desquantificar

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

Função Quantize

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 do DirectML (consulte Microsoft.AI.DirectML versão 1.13 e posterior. Consulte 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 da escala InputTensor . As dimensões esperadas de InputScaleTensor são { 1, 1, 1, 1 } se a quantização por tensor for necessária, ou { 1, ChannelCount, 1, 1 } se a quantização por canal for necessária. Esses valores de escala são usados para desquantificar os valores de InputTensor .

Observação

Um valor de escala de 0 resulta em comportamento indefinido.

InputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

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

OutputScaleTensor

Tipo: const DML_TENSOR_DESC*

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

Observação

Um valor de escala de 0 resulta em comportamento indefinido.

OutputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Um tensor opcional que contém os dados de ponto zero OutputTensor . As dimensões esperadas de OutputZeroPointTensor são { 1, 1, 1, 1 } se a quantização por tensor for necessária, ou { 1, ChannelCount, 1, 1 } se a quantização por canal for necessária. Esse valor de ponto zero é usado para quantificar os valores 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 seguinte forma.

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 é 4D e 3 quando é um tensor 5D.

Strides

Tipo: _Field_size_(DimensionCount) const UINT*

Os passos para as dimensões da janela deslizante de tamanhos { Height, Width } quando o DimensionCount é definido como 2 ou { Depth, Height, Width } quando definido como 3.

WindowSize

Tipo: _Field_size_(DimensionCount) const UINT*

As dimensões da janela deslizante quando { Height, Width }DimensionCount é definido como 2 ou { Depth, Height, Width } quando 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 é 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 final de cada dimensão espacial do tensor de entrada InputTensor. Os valores estão em { Height, Width } quando DimensionCount é 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 é 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 divisor do cálculo de média.

Disponibilidade

Este operador foi introduzido em DML_FEATURE_LEVEL_6_2.

Restrições de tensores

  • 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 tensor

Tensor Amável Contagens de dimensões suportadas Tipos de dados suportados
InputTensor Entrada 4 a 5 anos INT8, UINT8
InputScaleTensor Entrada 1 a 5 anos FLOAT32
InputZeroPointTensor Entrada opcional 1 a 5 anos INT8, UINT8
OutputScaleTensor Entrada 1 a 5 anos FLOAT32
OutputZeroPointTensor Entrada opcional 1 a 5 anos INT8, UINT8
OutputTensor Resultado 4 a 5 anos INT8, UINT8

Requerimentos

   
Cabeçalho DirectML.H