estrutura DML_ROI_POOLING_OPERATOR_DESC (directml.h)
Executa uma função MaxPool no tensor de entrada (de acordo com regiões de interesse ou ROIs). Para cada elemento de saída, as coordenadas de seu ROI correspondente na entrada são calculadas pelas equações a seguir.
Vamos Y
ser um índice na terceira dimensão de InputTensor ({ BatchSize, ChannelCount, **height**, width }
).
Vamos X
ser um índice na quarta dimensão de 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 as coordenadas computadas estiverem fora dos limites, elas serão vinculadas aos limites de entrada.
Sintaxe
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;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de entrada com dimensões { BatchCount, ChannelCount, InputHeight, InputWidth }
.
ROITensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de ROI (regiões de interesse). As dimensões esperadas de ROITensor
são { 1, 1, NumROIs, 5 }
e os dados para cada ROI são [BatchID, x1, y1, x2, y2]
. x1, y1, x2, y2 são as coordenadas inclusivas dos cantos de cada ROI e x2 >= x1, y2 >= y1.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de saída. As dimensões esperadas de OutputTensor são { NumROIs, InputChannelCount, PooledSize.Height, PooledSize.Width }
.
SpatialScale
Tipo: FLOAT
Fator de escala espacial multiplicativo usado para traduzir as coordenadas ROI de sua escala de entrada para a escala usada durante o pool.
PooledSize
Tipo: DML_SIZE_2D
O tamanho da saída do pool de ROI (altura, largura), que deve corresponder às duas últimas dimensões de OutputTensor.
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_1_0
.
Restrições do Tensor
InputTensor, OutputTensor e ROITensor devem ter o mesmo DataType.
Suporte ao Tensor
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
ROITensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16 |
Requisitos
Cabeçalho | directml.h |