다음을 통해 공유


DML_ROI_POOLING_OPERATOR_DESC 구조체(directml.h)

입력 텐서에서 MaxPool 함수를 수행합니다(관심 영역 또는 UI에 따라). 각 출력 요소에 대해 입력에서 해당 ROI의 좌표는 다음 수식에 의해 계산됩니다.

YInputTensor({ BatchSize, ChannelCount, **height**, width })의 세 번째 차원으로 인덱스를 만듭니다.

XInputTensor({ BatchSize, ChannelCount, height, **width** })의 네 번째 차원으로 인덱스를 만듭니다.

x1 = round(RoiX1 * SpatialScale)
x2 = round(RoiX2 * SpatialScale)
y1 = round(RoiY1 * SpatialScale)
y2 = round(RoiY2 * SpatialScale)

RegionHeight = y2 - y1 + 1
RegionWidth = x2 - x1 + 1

StartY = (OutputIndices.Y * RegionHeight) / PooledSize.Height + y1
StartX = (OutputIndices.X * RegionWidth) / PooledSize.Width + x1

EndY = ((OutputIndices.Y + 1) * RegionHeight + PooledSize.Height - 1) / PooledSize.Height + y1
EndX = ((OutputIndices.X + 1) * RegionWidth + PooledSize.Width - 1) / PooledSize.Width + x1

계산된 좌표가 범위를 벗어나면 입력 경계로 고정됩니다.

구문

struct DML_ROI_POOLING_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *ROITensor;
  const DML_TENSOR_DESC *OutputTensor;
  FLOAT                 SpatialScale;
  DML_SIZE_2D           PooledSize;
};

멤버

InputTensor

형식: const DML_TENSOR_DESC*

차원이 인 입력 데이터를 포함하는 텐서입니다.{ BatchCount, ChannelCount, InputHeight, InputWidth }

ROITensor

형식: const DML_TENSOR_DESC*

ROI(관심 영역) 데이터를 포함하는 텐서입니다. 의 ROITensor 예상 차원은 { 1, 1, NumROIs, 5 } 이고 각 ROI의 데이터는 입니다 [BatchID, x1, y1, x2, y2]. x1, y1, x2, y2는 각 ROI의 모서리에 대한 포괄 좌표이며 x2 >= x1, y2 >= y1입니다.

OutputTensor

형식: const DML_TENSOR_DESC*

출력 데이터를 포함하는 텐서입니다. OutputTensor의 예상 차원은 입니다{ NumROIs, InputChannelCount, PooledSize.Height, PooledSize.Width }.

SpatialScale

형식: FLOAT

ROI 좌표를 입력 눈금에서 풀링할 때 사용되는 배율로 변환하는 데 사용되는 곱하기 공간 배율 인수입니다.

PooledSize

형식: DML_SIZE_2D

OutputTensor의 마지막 2차원과 일치해야 하는 ROI 풀 출력 크기(높이, 너비)입니다.

가용성

이 연산자는 에서 DML_FEATURE_LEVEL_1_0도입되었습니다.

텐서 제약 조건

InputTensor, OutputTensorROITensor 에는 동일한 DataType이 있어야 합니다.

텐서 지원

텐서 Kind 지원되는 차원 수 지원되는 데이터 형식
InputTensor 입력 4 FLOAT32, FLOAT16
ROITensor 입력 4 FLOAT32, FLOAT16
OutputTensor 출력 4 FLOAT32, FLOAT16

요구 사항

   
머리글 directml.h