Condividi tramite


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

Vedi anche