Share via


DML_CONVOLUTION_OPERATOR_DESC-Struktur (directml.h)

Führt eine Konvolution des FilterTensor mit dem InputTensor aus. Dieser Operator unterstützt eine Reihe von Standardkonvolutionskonfigurationen. Diese Standardkonfigurationen umfassen Vorwärts- und Rückwärtskonvolution (transponiert) durch Festlegen der Felder Richtung und Modus sowie tiefenweise Konvolution durch Festlegen des Felds GroupCount .

Eine Zusammenfassung der beteiligten Schritte: Führen Sie die Konvolution in den Ausgabe tensor durch; Umformung der Verzerrung auf die gleichen Dimensionsgrößen wie der Ausgabe tensor; Fügen Sie den umgeformten Bias-Tensor dem Ausgabe tensor hinzu.

Syntax

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;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die Eingabedaten enthält. Die erwarteten Dimensionen des InputTensor sind:

  • { BatchCount, InputChannelCount, InputWidth } für 3D,
  • { BatchCount, InputChannelCount, InputHeight, InputWidth } für 4D und
  • { BatchCount, InputChannelCount, InputDepth, InputHeight, InputWidth } für 5D.

FilterTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die Filterdaten enthält. Die erwarteten Dimensionen des FilterTensor sind:

  • { FilterBatchCount, FilterChannelCount, FilterWidth } für 3D,
  • { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth } für 4D und
  • { FilterBatchCount, FilterChannelCount, FilterDepth, FilterHeight, FilterWidth } für 5D.

BiasTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die Biasdaten enthält. Der Bias tensor ist ein Tensor mit Daten, der über den Ausgabe tensor am Ende der Konvolution übertragen wird, die dem Ergebnis hinzugefügt wird. Die erwarteten Dimensionen des BiasTensor sind:

  • { 1, OutputChannelCount, 1 } für 3D,
  • { 1, OutputChannelCount, 1, 1 } für 4D und
  • { 1, OutputChannelCount, 1, 1, 1 } für 5D.

Für jeden Ausgabekanal wird der einzelne Biaswert für diesen Kanal jedem Element in diesem Kanal des OutputTensor hinzugefügt. Das heißt, der BiasTensor wird auf die Größe des OutputTensor übertragen, und der Operator gibt die Summe dieses übertragenen BiasTensor mit dem Ergebnis von Convolution zurück.

OutputTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, in den die Ergebnisse geschrieben werden sollen. Die erwarteten Dimensionen des OutputTensor sind:

  • { BatchCount, OutputChannelCount, OutputWidth } für 3D,
  • { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } für 4D und
  • { BatchCount, OutputChannelCount, OutputDepth, OutputHeight, OutputWidth } für 5D.

Mode

Typ: DML_CONVOLUTION_MODE

Der Modus, der für den Konvolutionsvorgang verwendet werden soll. DML_CONVOLUTION_MODE_CROSS_CORRELATION ist das Verhalten, das für typische Rückschlussszenarien erforderlich ist. Im Gegensatz dazu kippt DML_CONVOLUTION_MODE_CONVOLUTION die Reihenfolge der Elemente in jedem Filterkern entlang jeder räumlichen Dimension.

Direction

Typ: DML_CONVOLUTION_DIRECTION

Die Richtung der Faltungsoperation. DML_CONVOLUTION_DIRECTION_FORWARD ist die primäre Form der Konvolution, die für Rückschlüsse verwendet wird, wobei während des Trainings eine Kombination aus DML_CONVOLUTION_DIRECTION_FORWARD und DML_CONVOLUTION_DIRECTION_BACKWARD verwendet wird.

DimensionCount

Typ: UINT

Die Anzahl der räumlichen Dimensionen für den Konvolutionsvorgang. Räumliche Dimensionen sind die niedrigeren Dimensionen des FaltungsfilterTensor. Die Dimension "Breite" und "Höhe" sind z. B. räumliche Dimensionen eines 4D-Konvolutionsfilter-Tensors. Dieser Wert bestimmt auch die Größe der Arrays Strides, Dilations, StartPadding, EndPadding und OutputPadding . Sie sollte auf 2 festgelegt werden, wenn InputTensor.DimensionCount den Wert 4 aufweist, und auf 3, wenn InputTensor.DimensionCount den Wert 5 aufweist.

Strides

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das die Schritte des Konvolutionsvorgangs enthält. Diese Schritte werden auf den Faltungsfilter angewendet. Sie sind getrennt von den Tensorschritten, die in DML_TENSOR_DESC enthalten sind.

Dilations

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das die Dilatierungen des Konvolutionsvorgangs enthält. Dilatierungen sind Schritte, die auf die Elemente des Filterkernels angewendet werden. Dies hat den Effekt, dass ein größerer Filterkernel simuliert wird, indem die internen Filterkernelelemente mit Nullen aufgefüllt werden.

StartPadding

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das die Abstandswerte enthält, die am Anfang jeder räumlichen Dimension des Filters und des Eingabe tensors des Konvolutionsvorgangs angewendet werden sollen. Die Werte für den Startabstand werden entsprechend dem Feld Richtung interpretiert.

EndPadding

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das die Abstandswerte enthält, die am Ende jeder räumlichen Dimension des Filters und des Eingabe tensors des Konvolutionsvorgangs angewendet werden sollen. Die Endabstandswerte werden entsprechend dem Feld Richtung interpretiert.

OutputPadding

Typ: _Field_size_(DimensionCount) const UINT*

Ein Array, das den Ausgabeabstand des Faltungsvorgangs enthält. OutputPadding wendet auf das Ergebnis der Konvolution einen Abstand von 0 (null) an. Dieser Abstand wird auf das Ende jeder räumlichen Dimension des Ausgabe tensors angewendet.

GroupCount

Typ: UINT

Die Anzahl der Gruppen, in die der Faltungsvorgang unterteilt werden soll. Dies kann verwendet werden, um tiefenweise Konvolution zu erreichen, indem GroupCount gleich der Eingabekanalanzahl und Richtung gleich DML_CONVOLUTION_DIRECTION_FORWARD festgelegt wird. Dadurch wird die Konvolution in eine separate Konvolution pro Eingabekanal aufgeteilt.

FusedActivation

Typ: _Maybenull_ const DML_OPERATOR_DESC*

Eine optionale verschmolzene Aktivierungsebene, die nach der Konvolution angewendet werden soll. Weitere Informationen finden Sie unter Verwenden von Fusionsoperatoren zur Verbesserung der Leistung.

Modusinteraktionen

Konvolutionsmodus Konvolutionsrichtung Filterausrichtung
DML_CONVOLUTION_MODE_CROSS_CORRELATION DML_CONVOLUTION_DIRECTION_FORWARD Filter hat Identitätsausrichtung
DML_CONVOLUTION_MODE_CROSS_CORRELATION DML_CONVOLUTION_DIRECTION_BACKWARD Der Filter wird entlang der x-, y-Achsen transponiert.
DML_CONVOLUTION_MODE_CONVOLUTION DML_CONVOLUTION_DIRECTION_FORWARD Der Filter wird entlang der x-, y-Achsen transponiert.
DML_CONVOLUTION_MODE_CONVOLUTION DML_CONVOLUTION_DIRECTION_BACKWARD Filter hat Identitätsausrichtung

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_1_0eingeführt.

Tensoreinschränkungen

BiasTensor, FilterTensor, InputTensor und OutputTensor müssen denselben DataType und DimensionCount aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_0 und höher

Tensor Variante Dimensionen Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe { BatchCount, InputChannelCount, [InputDepth], [InputHeight], InputWidth } 3 bis 5 FLOAT32, FLOAT16
FilterTensor Eingabe { FilterBatchCount, FilterChannelCount, [FilterDepth], [FilterHeight], FilterWidth } 3 bis 5 FLOAT32, FLOAT16
BiasTensor Optionale Eingabe { 1, OutputChannelCount, [1], [1], 1 } 3 bis 5 FLOAT32, FLOAT16
OutputTensor Ausgabe { BatchCount, OutputChannelCount, [OutputDepth], [OutputHeight], OutputWidth } 3 bis 5 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_1_0 und höher

Tensor Variante Dimensionen Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe { BatchCount, InputChannelCount, [InputDepth], InputHeight, InputWidth } 4 bis 5 FLOAT32, FLOAT16
FilterTensor Eingabe { FilterBatchCount, FilterChannelCount, [FilterDepth], FilterHeight, FilterWidth } 4 bis 5 FLOAT32, FLOAT16
BiasTensor Optionale Eingabe { 1, OutputChannelCount, [1], 1, 1 } 4 bis 5 FLOAT32, FLOAT16
OutputTensor Ausgabe { BatchCount, OutputChannelCount, [OutputDepth], OutputHeight, OutputWidth } 4 bis 5 FLOAT32, FLOAT16

Anforderungen

Anforderung Wert
Header directml.h

Weitere Informationen