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 條件約束
InputTensor、 OutputTensor和 ROITensor 必須具有相同 的 DataType。
Tensor 支援
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 4 | FLOAT32、FLOAT16 |
ROITensor | 輸入 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 輸出 | 4 | FLOAT32、FLOAT16 |
需求
標頭 | directml.h |