입력 텐서를 통해 슬라이딩 윈도우 내의 요소에서 정량화된 값을 평균합니다. 이 연산자는 입력을 구한 다음 평균 풀링을 수행한 다음 출력을 정량화하는 것과 수학적으로 동일합니다.
함수 시퀀스 해제
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, StartPadding 및 EndPadding 배열의 크기도 결정합니다. 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 제약 조건
- InputTensor 및 OutputTensor 에는 동일한 DimensionCount가 있어야 합니다.
- InputTensor 및 InputZeroPointTensor 에는 동일한 DataType이 있어야 합니다.
- OutputTensor 및 OutputZeroPointTensor 에는 동일한 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 |