DML_ROI_POOLING_OPERATOR_DESC struttura (directml.h)
Esegue una funzione MaxPool nel tensore di input (in base alle aree di interesse o alle URI). Per ogni elemento di output, le coordinate del roi corrispondente nell'input vengono calcolate dalle equazioni seguenti.
Si supponga Y
di essere un indice nella terza dimensione di InputTensor ({ BatchSize, ChannelCount, **height**, width }
).
Si supponga X
di essere un indice nella quarta dimensione di 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
Se le coordinate calcolate sono fuori limiti, vengono bloccate ai limiti di input.
Sintassi
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;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di input con dimensioni { BatchCount, ChannelCount, InputHeight, InputWidth }
.
ROITensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente le aree di interesse (ROI). Le dimensioni previste di ROITensor
sono { 1, 1, NumROIs, 5 }
e i dati per ogni ROI sono [BatchID, x1, y1, x2, y2]
. x1, y1, x2, y2 sono le coordinate inclusive degli angoli di ogni ROI e x2 >= x1, y2 >= y1.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensor contenente i dati di output. Le dimensioni previste di OutputTensor sono { NumROIs, InputChannelCount, PooledSize.Height, PooledSize.Width }
.
SpatialScale
Tipo: FLOAT
Fattore di scala spaziale moltiplicativo usato per tradurre le coordinate ROI dalla scala di input alla scala utilizzata durante il pooling.
PooledSize
Tipo: DML_SIZE_2D
Dimensioni dell'output del pool ROI (altezza, larghezza), che devono corrispondere alle ultime 2 dimensioni di OutputTensor.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0
.
Vincoli tensor
InputTensor, OutputTensor e ROITensor devono avere lo stesso tipo di dati.
Supporto di Tensor
Tensore | Tipo | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | 4 | FLOAT32, FLOAT16 |
ROITensor | Input | 4 | FLOAT32, FLOAT16 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16 |
Requisiti
Intestazione | directml.h |