DML_ROI_POOLING_OPERATOR_DESC 구조체(directml.h)
입력 텐서에서 MaxPool 함수를 수행합니다(관심 영역 또는 UI에 따라). 각 출력 요소에 대해 입력에서 해당 ROI의 좌표는 다음 수식에 의해 계산됩니다.
Y
InputTensor({ BatchSize, ChannelCount, **height**, width }
)의 세 번째 차원으로 인덱스를 만듭니다.
X
InputTensor({ 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, OutputTensor 및 ROITensor 에는 동일한 DataType이 있어야 합니다.
텐서 지원
텐서 | Kind | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
InputTensor | 입력 | 4 | FLOAT32, FLOAT16 |
ROITensor | 입력 | 4 | FLOAT32, FLOAT16 |
OutputTensor | 출력 | 4 | FLOAT32, FLOAT16 |
요구 사항
머리글 | directml.h |