DML_ROI_POOLING_OPERATOR_DESC 構造体 (directml.h)

入力テンソル全体で MaxPool 関数を実行します (対象領域または ROI に応じて)。 各出力要素について、入力内の対応する ROI の座標は、次の式によって計算されます。

InputTensor ({ BatchSize, ChannelCount, **height**, width }) の 3 番目のディメンションへのインデックスを指定しますY

InputTensor ({ BatchSize, ChannelCount, height, **width** }) の 4 番目のディメンションへのインデックスを指定しますX

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

ROI プールの出力サイズ (高さ、幅) は 、OutputTensor の最後の 2 次元と一致する必要があります。

可用性

この演算子は、 で DML_FEATURE_LEVEL_1_0導入されました。

テンソル制約

InputTensorOutputTensorおよび ROITensor には、同じ DataType が必要です。

Tensor のサポート

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 4 FLOAT32、FLOAT16
ROITensor 入力 4 FLOAT32、FLOAT16
OutputTensor 出力 4 FLOAT32、FLOAT16

要件

   
Header directml.h