DML_ROI_POOLING_OPERATOR_DESC-Struktur (directml.h)
Führt eine MaxPool-Funktion über den Eingabe tensor hinweg aus (entsprechend den relevanten Regionen oder ROIs). Für jedes Ausgabeelement werden die Koordinaten des entsprechenden ROI in der Eingabe durch die folgenden Formeln berechnet.
Lassen Sie Y
einen Index in die dritte Dimension von InputTensor ({ BatchSize, ChannelCount, **height**, width }
) einfügen.
Lassen Sie einen X
Index in die vierte Dimension von InputTensor ({ BatchSize, ChannelCount, height, **width** }
) ein.
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
Wenn die berechneten Koordinaten außerhalb der Grenzen liegen, werden sie an die Eingabegrenzen geklemmt.
Syntax
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;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Eingabedaten mit Dimensionen { BatchCount, ChannelCount, InputHeight, InputWidth }
enthält.
ROITensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Roi-Daten (Regions of Interest) enthält. Die erwarteten Dimensionen von ROITensor
sind { 1, 1, NumROIs, 5 }
und die Daten für jeden ROI sind [BatchID, x1, y1, x2, y2]
. x1, y1, x2, y2 sind die inklusiven Koordinaten der Ecken jedes ROI und x2 >= x1, y2 >= y1.
OutputTensor
Typ: const DML_TENSOR_DESC*
Ein Tensor, der die Ausgabedaten enthält. Die erwarteten Dimensionen von OutputTensor sind { NumROIs, InputChannelCount, PooledSize.Height, PooledSize.Width }
.
SpatialScale
Typ: FLOAT
Multipliktiver räumlicher Skalierungsfaktor, der verwendet wird, um die ROI-Koordinaten von ihrer Eingabeskala in die beim Pooling verwendete Skalierung zu übersetzen.
PooledSize
Typ: DML_SIZE_2D
Die Ausgabegröße des ROI-Pools (Höhe, Breite), die den letzten 2 Dimensionen von OutputTensor entsprechen muss.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_1_0
eingeführt.
Tensoreinschränkungen
InputTensor, OutputTensor und ROITensor müssen denselben DataType aufweisen.
Tensorunterstützung
Tensor | Typ | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|
InputTensor | Eingabe | 4 | FLOAT32, FLOAT16 |
ROITensor | Eingabe | 4 | FLOAT32, FLOAT16 |
OutputTensor | Ausgabe | 4 | FLOAT32, FLOAT16 |
Anforderungen
Kopfzeile | directml.h |