DML_CONVOLUTION_OPERATOR_DESC struttura (directml.h)
Esegue una convoluzione del FilterTensor con InputTensor. Questo operatore supporta diverse configurazioni di convoluzione standard. Queste configurazioni standard includono la convoluzione avanti e indietro (trasposta) impostando i campi Direzione e Modalità , nonché la convoluzione approfondita impostando il campo GroupCount .
Riepilogo dei passaggi coinvolti: eseguire la convoluzione nel tensore di output; rimodellare la distorsione delle stesse dimensioni del tensore di output; aggiungere il tensore di bias rimodellato al tensore di output.
Sintassi
struct DML_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_CONVOLUTION_MODE Mode;
DML_CONVOLUTION_DIRECTION Direction;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
const UINT *OutputPadding;
UINT GroupCount;
const DML_OPERATOR_DESC *FusedActivation;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensor contenente i dati di input. Le dimensioni previste di InputTensor sono:
{ BatchCount, InputChannelCount, InputWidth }
per 3D,{ BatchCount, InputChannelCount, InputHeight, InputWidth }
per 4D e{ BatchCount, InputChannelCount, InputDepth, InputHeight, InputWidth }
per 5D.
FilterTensor
Tipo: const DML_TENSOR_DESC*
Tensor contenente i dati del filtro. Le dimensioni previste del FilterTensor sono:
{ FilterBatchCount, FilterChannelCount, FilterWidth }
per 3D,{ FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
per 4D e{ FilterBatchCount, FilterChannelCount, FilterDepth, FilterHeight, FilterWidth }
per 5D.
BiasTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensore facoltativo contenente i dati di pregiudizio. Il tensore di pregiudizio è un tensore contenente dati che vengono trasmessi nel tensore di output alla fine della convoluzione che viene aggiunta al risultato. Le dimensioni previste di BiasTensor sono:
{ 1, OutputChannelCount, 1 }
per 3D,{ 1, OutputChannelCount, 1, 1 }
per 4D e{ 1, OutputChannelCount, 1, 1, 1 }
per 5D.
Per ogni canale di output, il singolo valore di pregiudizio per tale canale viene aggiunto a ogni elemento di tale canale di OutputTensor. Ovvero, il BiasTensor viene trasmesso alle dimensioni dell'outputTensor e ciò che l'operatore restituisce è la somma di questo BiasTensor trasmesso con il risultato della convoluzione.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Un tensore a cui scrivere i risultati. Le dimensioni previste dell'outputTensor sono:
{ BatchCount, OutputChannelCount, OutputWidth }
per 3D,{ BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
per 4D e{ BatchCount, OutputChannelCount, OutputDepth, OutputHeight, OutputWidth }
per 5D.
Mode
Tipo: DML_CONVOLUTION_MODE
Modalità da usare per l'operazione di convoluzione. DML_CONVOLUTION_MODE_CROSS_CORRELATION è il comportamento necessario per gli scenari di inferenza tipici. Al contrario, DML_CONVOLUTION_MODE_CONVOLUTION capovolge l'ordine degli elementi in ogni kernel di filtro lungo ogni dimensione spaziale.
Direction
Tipo: DML_CONVOLUTION_DIRECTION
Direzione dell'operazione di convoluzione. DML_CONVOLUTION_DIRECTION_FORWARD è la forma primaria di convoluzione usata per l'inferenza in cui viene usata una combinazione di DML_CONVOLUTION_DIRECTION_FORWARD e DML_CONVOLUTION_DIRECTION_BACKWARD durante il training.
DimensionCount
Tipo: UINT
Numero di dimensioni spaziali per l'operazione di convoluzione. Le dimensioni spaziali sono le dimensioni inferiori del filtro di voluzioneTensor. Ad esempio, la larghezza e la dimensione altezza sono dimensioni spaziali di un tensore di filtro di 4D convoluzione. Questo valore determina anche le dimensioni delle matrici Strides, Dilations, StartPadding, EndPadding e OutputPadding. Deve essere impostato su 2 quando InputTensor.DimensionCount è 4 e 3 quando InputTensor.DimensionCount è 5.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente gli stride dell'operazione di convoluzione. Questi passi vengono applicati al filtro di convoluzione. Sono separati dagli stridi tensore inclusi in DML_TENSOR_DESC.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente le dilatazioni dell'operazione di convoluzione. Le dilazione vengono applicate agli elementi del kernel di filtro. Questo ha l'effetto di simulare un kernel di filtro più grande spaziando gli elementi del kernel del filtro interno con zero.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente i valori di riempimento da applicare all'inizio di ogni dimensione spaziale del filtro e del tensore di input dell'operazione di convoluzione. I valori di spaziatura iniziale vengono interpretati in base al campo Direzione .
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente i valori di riempimento da applicare alla fine di ogni dimensione spaziale del filtro e del tensore di input dell'operazione di convoluzione. I valori di spaziatura finale vengono interpretati in base al campo Direzione .
OutputPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Matrice contenente la spaziatura interna di output dell'operazione di convoluzione. OutputPadding applica un riempimento zero al risultato della convoluzione. Questa spaziatura viene applicata alla fine di ogni dimensione spaziale del tensore di output.
GroupCount
Tipo: UINT
Numero di gruppi in cui dividere l'operazione di convoluzione. Questa operazione può essere usata per ottenere una convoluzione approfondita impostando GroupCount uguale al numero di canali di input e Direzione uguale a DML_CONVOLUTION_DIRECTION_FORWARD. In questo modo la convoluzione viene divisa in una convoluzione separata per canale di input.
FusedActivation
Tipo: _Maybenull_ const DML_OPERATOR_DESC*
Livello di attivazione fuso facoltativo da applicare dopo la convoluzione. Per altre informazioni, vedere Uso degli operatori fusi per migliorare le prestazioni.
Interazioni in modalità
Modalità di convoluzione | Direzione di convoluzione | Orientamento del filtro |
---|---|---|
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_FORWARD | il filtro ha l'orientamento dell'identità |
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_BACKWARD | il filtro viene trasposto lungo assi x,y |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_FORWARD | il filtro viene trasposto lungo assi x,y |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_BACKWARD | il filtro ha l'orientamento dell'identità |
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_1_0
.
Vincoli tensor
BiasTensor, FilterTensor, InputTensor e OutputTensor devono avere lo stesso oggetto DataType e DimensionCount.
Supporto di Tensor
DML_FEATURE_LEVEL_4_0 e versioni successive
Tensore | Tipo | Dimensioni | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|---|
InputTensor | Input | { BatchCount, InputChannelCount, [InputDepth], [InputHeight], InputWidth } | da 3 a 5 | FLOAT32, FLOAT16 |
FilterTensor | Input | { FilterBatchCount, FilterChannelCount, [FilterDepth], [FilterHeight], FilterWidth } | da 3 a 5 | FLOAT32, FLOAT16 |
BiasTensor | Input facoltativo | { 1, OutputChannelCount, [1], [1], 1 } | da 3 a 5 | FLOAT32, FLOAT16 |
OutputTensor | Output | { BatchCount, OutputChannelCount, [OutputDepth], [OutputHeight], OutputWidth } | da 3 a 5 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 e versioni successive
Tensore | Tipo | Dimensioni | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|---|
InputTensor | Input | { BatchCount, InputChannelCount, [InputDepth], InputHeight, InputWidth } | da 4 a 5 | FLOAT32, FLOAT16 |
FilterTensor | Input | { FilterBatchCount, FilterChannelCount, [FilterDepth], FilterHeight, FilterWidth } | da 4 a 5 | FLOAT32, FLOAT16 |
BiasTensor | Input facoltativo | { 1, OutputChannelCount, [1], 1, 1 } | da 4 a 5 | FLOAT32, FLOAT16 |
OutputTensor | Output | { BatchCount, OutputChannelCount, [OutputDepth], OutputHeight, OutputWidth } | da 4 a 5 | FLOAT32, FLOAT16 |
Requisiti
Requisito | Valore |
---|---|
Intestazione | directml.h |