다음을 통해 공유


DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC 구조체(directml.h)

입력 텐서를 통해 슬라이딩 윈도우 내의 요소에서 정량화된 값을 평균합니다. 이 연산자는 입력을 구한 다음 평균 풀링을 수행한 다음 출력을 정량화하는 것과 수학적으로 동일합니다.

함수 시퀀스 해제

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

함수 수량화

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

중요합니다

이 API는 DirectML 독립 실행형 재배포 가능 패키지의 일부로 사용할 수 있습니다( Microsoft.AI.DirectML 버전 1.13 이상 참조). 또한 DirectML 버전 기록 참조하세요.

문법

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

구성원

InputTensor

형식: const DML_TENSOR_DESC*

4D 및 5D에 대한 { BatchCount, ChannelCount, Height, Width }{ BatchCount, ChannelCount, Depth, Height, Weight } 입력 텐서입니다.

InputScaleTensor

형식: const DML_TENSOR_DESC*

InputTensor 배율 데이터를 포함하는 텐서입니다. InputScaleTensor의 예상 차원은 { 1, 1, 1, 1 } 텐서당 양자화가 필요하거나 { 1, ChannelCount, 1, 1 } 채널별 양자화가 필요한 경우입니다. 이러한 크기 조정 값은 InputTensor 값의 시한을 지정하는 데 사용됩니다.

비고

배율 값이 0이면 정의되지 않은 동작이 발생합니다.

InputZeroPointTensor

형식: _Maybenull_ const DML_TENSOR_DESC*

InputTensor 0포인트 데이터를 포함하는 선택적 텐서입니다. InputZeroPointTensor의 예상 차원은 { 1, 1, 1, 1 } 텐서당 양자화가 필요하거나 { 1, ChannelCount, 1, 1 } 채널별 양자화가 필요한 경우입니다. 이러한 0포인트 값은 InputTensor 값의 시한을 지정하는 데 사용됩니다.

OutputScaleTensor

형식: const DML_TENSOR_DESC*

OutputTensor 크기 조정 데이터를 포함하는 텐서입니다. OutputScaleTensor의 예상 차원은 { 1, 1, 1, 1 } 텐서당 양자화가 필요하거나 { 1, ChannelCount, 1, 1 } 채널별 양자화가 필요한 경우입니다. 이러한 배율 값은 OutputTensor 값을 정량화하는 데 사용됩니다.

비고

배율 값이 0이면 정의되지 않은 동작이 발생합니다.

OutputZeroPointTensor

형식: _Maybenull_ const DML_TENSOR_DESC*

OutputTensor 0포인트 데이터를 포함하는 선택적 텐서입니다. OutputZeroPointTensor의 예상 차원은 { 1, 1, 1, 1 } 텐서당 양자화가 필요하거나 { 1, ChannelCount, 1, 1 } 채널별 양자화가 필요한 경우입니다. 이 0포인트 값은 OutputTensor 값을 정량화하는 데 사용됩니다.

OutputTensor

형식: const DML_TENSOR_DESC*

출력 텐서에 대한 설명입니다. 출력 텐서의 크기는 다음과 같이 계산할 수 있습니다.

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

형식: UINT

슬라이딩 윈도우 WindowSize의 차원 수에 해당하는 입력 텐서 InputTensor의 공간 차원 수입니다. 이 값은 Strides, StartPaddingEndPadding 배열의 크기도 결정합니다. InputTensor가 4D이면 2로, 5D 텐서인 경우 3으로 설정해야 합니다.

Strides

형식: _Field_size_(DimensionCount) const UINT*

{ Height, Width }가 2로 설정되거나 3으로 설정된 경우 크기의 { Depth, Height, Width } 슬라이딩 윈도우 크기에 대한 보폭입니다.

WindowSize

형식: _Field_size_(DimensionCount) const UINT*

{ Height, Width }가 2로 설정되거나 { Depth, Height, Width } 3으로 설정된 경우의 슬라이딩 윈도우 크기입니다.

StartPadding

형식: _Field_size_(DimensionCount) const UINT*

입력 텐서 InputTensor의 각 공간 차원의 시작 부분에 적용할 패딩 요소의 수입니다. 값은 { Height, Width }DimensionCount 가 2로 설정되거나 { Depth, Height, Width } 3으로 설정된 경우에 있습니다.

EndPadding

형식: _Field_size_(DimensionCount) const UINT*

입력 텐서 InputTensor의 각 공간 차원 끝에 적용할 패딩 요소의 수입니다. 값은 { Height, Width }DimensionCount 가 2로 설정되거나 { Depth, Height, Width } 3으로 설정된 경우에 있습니다.

Dilations

형식: _Field_size_(DimensionCount) const UINT*

해당 값의 모든 요소에 대해 슬라이딩 윈도우 내의 요소가 선택된 입력 텐 서 InputTensor 의 각 공간 차원에 대한 값입니다. 값은 { Height, Width }DimensionCount 가 2로 설정되거나 { Depth, Height, Width } 3으로 설정된 경우에 있습니다.

IncludePadding

형식: BOOL

슬라이딩 윈도우 내의 모든 요소에서 평균 값을 계산할 때 공간 가장자리 주위에 안쪽 여백 요소를 포함할지 여부를 나타냅니다. 값이 FALSE로 설정되면 패딩 요소는 평균 계산의 제수 값의 일부로 계산되지 않습니다.

가용도

이 연산자는 DML_FEATURE_LEVEL_6_2 도입되었습니다.

Tensor 제약 조건

  • InputTensorOutputTensor 에는 동일한 DimensionCount가 있어야 합니다.
  • InputTensorInputZeroPointTensor 에는 동일한 DataType이 있어야 합니다.
  • OutputTensorOutputZeroPointTensor 에는 동일한 DataType이 있어야 합니다.

Tensor 지원

텐서 친절한 지원되는 차원 수 지원되는 데이터 형식
입력 텐서 입력 4~5 INT8, UINT8
입력ScaleTensor 입력 1 ~5 FLOAT32
입력제로포인트 텐서 선택적 입력 1 ~5 INT8, UINT8
출력스케일텐서 입력 1 ~5 FLOAT32
출력ZeroPointTensor 선택적 입력 1 ~5 INT8, UINT8
출력텐서 출력 4~5 INT8, UINT8

요구 사항

   
머리글 directml.h