structure DML_ROI_POOLING_OPERATOR_DESC (directml.h)
Exécute une fonction MaxPool sur l’ensemble du tenseur d’entrée (en fonction des régions d’intérêt ou des ROIs). Pour chaque élément de sortie, les coordonnées de son retour sur investissement correspondant dans l’entrée sont calculées par les équations suivantes.
Soit Y
un index dans la troisième dimension de InputTensor ({ BatchSize, ChannelCount, **height**, width }
).
Soit X
un index dans la quatrième dimension d’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
Si les coordonnées calculées sont hors limites, elles sont limitées aux limites d’entrée.
Syntaxe
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;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données d’entrée avec des dimensions { BatchCount, ChannelCount, InputHeight, InputWidth }
.
ROITensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données de régions d’intérêt (ROI). Les dimensions attendues de ROITensor
sont { 1, 1, NumROIs, 5 }
et les données pour chaque retour sur investissement sont [BatchID, x1, y1, x2, y2]
. x1, y1, x2, y2 sont les coordonnées inclusives des coins de chaque ROI et x2 >= x1, y2 >= y1.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données de sortie. Les dimensions attendues de OutputTensor sont { NumROIs, InputChannelCount, PooledSize.Height, PooledSize.Width }
.
SpatialScale
Type : FLOAT
Facteur d’échelle spatiale multiplicative utilisé pour traduire les coordonnées roi de leur échelle d’entrée en échelle utilisée lors du regroupement.
PooledSize
Type : DML_SIZE_2D
Taille de sortie du pool ROI (hauteur, largeur), qui doit correspondre aux 2 dernières dimensions de OutputTensor.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_1_0
.
Contraintes tensoriels
InputTensor, OutputTensor et ROITensor doivent avoir le même DataType.
Prise en charge des tenseurs
Tenseur | Type | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16 |
ROITensor | Entrée | 4 | FLOAT32, FLOAT16 |
OutputTensor | Output | 4 | FLOAT32, FLOAT16 |
Spécifications
En-tête | directml.h |