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_0
eingefü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 |