Share via


DML_CONVOLUTION_INTEGER_OPERATOR_DESC-Struktur (directml.h)

Führt eine Konvolution des FilterTensor mit dem InputTensor aus. Dieser Operator führt Vorwärtskonvolution für ganzzahlige Daten aus. Optionale Nullpunkt-Tensoren können auch verwendet werden, um Nullpunktwerte vom Eingabe- und Filter tensor zu subtrahieren.

Syntax

struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputZeroPointTensor;
  const DML_TENSOR_DESC *FilterTensor;
  const DML_TENSOR_DESC *FilterZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *Dilations;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  UINT                  GroupCount;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die Eingabedaten enthält. Die erwarteten Dimensionen des InputTensor sind { BatchCount, InputChannelCount, InputHeight, InputWidth }.

InputZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die eingegebenen Nullpunktdaten enthält. Die erwarteten Dimensionen des InputZeroPointTensor sind { 1, 1, 1, 1 }.

FilterTensor

Typ: const DML_TENSOR_DESC*

Ein Tensor, der die Filterdaten enthält. Die erwarteten Dimensionen des FilterTensor sind { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }.

FilterZeroPointTensor

Typ: _Maybenull_ const DML_TENSOR_DESC*

Ein optionaler Tensor, der die Filter-Nullpunktdaten enthält. Die erwarteten Dimensionen des FilterZeroPointTensor sind { 1, 1, 1, 1 } , wenn eine Quantisierung pro Tensor erforderlich ist oder { 1, OutputChannelCount, 1, 1 } eine Quantisierung pro Kanal erforderlich ist.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor, in den die Ergebnisse geschrieben werden sollen. Die erwarteten Dimensionen des OutputTensor sind { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }.

DimensionCount

Typ: UINT

Die Anzahl der räumlichen Dimensionen für den Konvolutionsvorgang. Räumliche Dimensionen sind die niedrigeren Dimensionen des FaltungsfilterTensor. Dieser Wert bestimmt auch die Größe der Arrays Strides, Dilations, StartPadding und EndPadding . Nur der Wert 2 wird unterstützt.

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.

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.

GroupCount

Typ: UINT

Die Anzahl der Gruppen, in die der Faltungsvorgang unterteilt werden soll. GroupCount kann verwendet werden, um tiefenweise Konvolution zu erreichen, indem GroupCount auf die Anzahl der Eingabekanäle festgelegt wird. Dadurch wird die Konvolution in eine separate Konvolution pro Eingabekanal aufgeteilt.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_2_1eingeführt.

Tensoreinschränkungen

  • FilterZeroPointTensor und InputZeroPointTensor müssen über dieselbe DimensionCount verfügen.
  • FilterTensor, InputTensor und OutputTensor müssen über dieselbe DimensionCount verfügen.
  • InputTensor und InputZeroPointTensor müssen denselben Datentyp aufweisen.
  • FilterTensor und FilterZeroPointTensor müssen denselben Datentyp aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_0 und höher

Tensor Variante Dimensionen Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe { BatchCount, InputChannelCount, [InputHeight], InputWidth } 3 bis 4 INT8, UINT8
InputZeroPointTensor Optionale Eingabe { [1], [1], [1], 1 } 1 bis 4 INT8, UINT8
FilterTensor Eingabe { FilterBatchCount, FilterChannelCount, [FilterHeight], FilterWidth } 3 bis 4 INT8, UINT8
FilterZeroPointTensor Optionale Eingabe { [1], FilterZeroPointChannelCount, [1], [1] } 1 bis 4 INT8, UINT8
OutputTensor Ausgabe { BatchCount, OutputChannelCount, [OutputHeight], OutputWidth } 3 bis 4 INT32

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Dimensionen Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe { BatchCount, InputChannelCount, InputHeight, InputWidth } 4 INT8, UINT8
InputZeroPointTensor Optionale Eingabe { 1, 1, 1, 1 } 4 INT8, UINT8
FilterTensor Eingabe { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth } 4 INT8, UINT8
FilterZeroPointTensor Optionale Eingabe { 1, FilterZeroPointChannelCount, 1, 1 } 4 INT8, UINT8
OutputTensor Ausgabe { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } 4 INT32

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 Build 20348
Unterstützte Mindestversion (Server) Windows 10 Build 20348
Kopfzeile directml.h