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 |