DML_ROI_POOLING_OPERATOR_DESC 結構 (directml.h)

根據感興趣的區域或) ,跨輸入張量 (執行 MaxPool 函式。 針對每個輸出元素,輸入中對應 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

ROI 集區輸出大小 (高度、寬度) ,必須符合 OutputTensor的最後 2 個維度。

可用性

這個運算子是在 中 DML_FEATURE_LEVEL_1_0 引進。

Tensor 條件約束

InputTensorOutputTensorROITensor 必須具有相同 的 DataType

Tensor 支援

種類 支援的維度計數 支援的資料類型
InputTensor 輸入 4 FLOAT32、FLOAT16
ROITensor 輸入 4 FLOAT32、FLOAT16
OutputTensor 輸出 4 FLOAT32、FLOAT16

需求

   
標頭 directml.h