Partager via


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