Поделиться через


структура DML_ROI_POOLING_OPERATOR_DESC (directml.h)

Выполняет функцию MaxPool во входном тензоре (в соответствии с интересующими регионами или rois). Для каждого выходного элемента координаты его соответствующей рентабельности инвестиций во входных данных вычисляются с помощью следующих уравнений.

Пусть 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 — это инклюзивные координаты углов каждой рентабельности инвестиций и x2 >= x1, y2 >= y1.

OutputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий выходные данные. Ожидаемые размеры OutputTensor{ NumROIs, InputChannelCount, PooledSize.Height, PooledSize.Width }.

SpatialScale

Тип: FLOAT

Мультипликативный пространственный коэффициент масштабирования, используемый для преобразования координат рентабельности инвестиций с их входной шкалы в масштаб, используемый при пуле.

PooledSize

Тип: DML_SIZE_2D

Размер выходных данных пула ROI (высота, ширина), который должен соответствовать последним 2 измерениям OutputTensor.

Доступность

Этот оператор появился в DML_FEATURE_LEVEL_1_0.

Ограничения тензоров

InputTensor, OutputTensor и ROITensor должны иметь один и тот же тип DataType.

Поддержка тензоров

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
RoITensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 FLOAT32, FLOAT16

Требования

   
Верхняя часть directml.h