Share via


DML_SPLIT_OPERATOR_DESC-Struktur (directml.h)

Teilt einen Eingabe tensor entlang einer Achse in mehrere Ausgabe tensoren auf.

Alle Eingabe- und Ausgabe-Tensoren müssen die gleichen Größen aufweisen, mit Ausnahme der geteilten Achse. Die Größe des Eingabe tensors in der geteilten Achse bestimmt die möglichen Teilungen. Wenn die geteilte Achse des Eingabe tensors beispielsweise die Größe 3 aufweist, gibt es folgende potenzielle Aufteilungen: 1+1+1 (3 Ausgänge), 1+2 (2 Ausgänge), 2+1 (2 Ausgaben) oder 3 (1 Ausgabe, die einfach eine Kopie des Eingabe tensors ist). Die Größen der geteilten Achsen der Ausgabe tensors müssen genau die Größe der geteilten Achse des Eingabe tensors summieren. Diese Einschränkungen werden im folgenden Pseudocode veranschaulicht.

splitSize = 0;

for (i = 0; i < OutputCount; i++) {
    assert(outputTensors[i]->DimensionCount == inputTensor->DimensionCount);
    for (dim = 0; dim < inputTensor->DimensionCount; dim++) {
        if (dim == Axis) { splitSize += outputTensors[i]->Sizes[dim]; }
        else { assert(outputTensors[i]->Sizes[dim] == inputTensor->Sizes[dim]); }
    }
}

assert(splitSize == inputTensor->Sizes[Axis]);

Die Aufteilung in einen einzelnen Ausgabe tensor erzeugt einfach eine Kopie des Eingabe tensors.

Dieser Operator ist der umgekehrte DML_JOIN_OPERATOR_DESC.

Syntax

struct DML_SPLIT_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  UINT                  OutputCount;
  const DML_TENSOR_DESC *OutputTensors;
  UINT                  Axis;
};

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor, der in mehrere Ausgabe tensoren aufgeteilt werden soll.

OutputCount

Typ: UINT

Dieses Feld bestimmt die Größe des OutputTensors-Arrays . Dieser Wert muss größer als 0 sein.

OutputTensors

Typ: const DML_TENSOR_DESC*

Ein Array, das die Beschreibungen der Tensoren enthält, die vom Eingabe tensor getrennt sind. Die Ausgabegrößen müssen die gleichen Größen wie der Eingabe tensor haben, mit Ausnahme der geteilten Achse.

Axis

Typ: UINT

Der Index der Dimension des zu teilenden Eingabe tensors. Alle Eingabe- und Ausgabe-Tensoren müssen in allen Dimensionen mit Ausnahme dieser Achse identische Größen aufweisen. Dieser Wert muss im Bereich liegen [0, InputTensor.DimensionCount - 1].

Beispiele

In den folgenden Beispielen wird derselbe Eingabe tensor verwendet.

InputTensor: (Sizes:{1, 1, 6, 2}, DataType:FLOAT32)
[[[[1, 2],
   [3, 4],
   [5, 6],
   [7, 8],
   [9, 10],
   [11, 12]]]]

Beispiel 1: Teilungsachse 2

OutputCount: 3
Axis: 2

OutputTensors[0]: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[1, 2],
   [3, 4]]]]

OutputTensors[1]: (Sizes:{1, 1, 1, 2}, DataType:FLOAT32)
[[[[5, 6]]]]

OutputTensors[2]: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[7, 8],
   [9, 10],
   [11, 12]]]]

Beispiel 2: Teilungsachse 3

OutputCount: 2
Axis: 3

OutputTensors[0]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[1],
   [3],
   [5],
   [7],
   [9],
   [11]]]]

OutputTensors[1]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[2],
   [4],
   [6],
   [8],
   [10],
   [12]]]]

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_1_0eingeführt.

Tensoreinschränkungen

InputTensor und OutputTensors müssen denselben DataType und DimensionCount aufweisen.

Tensorunterstützung

DML_FEATURE_LEVEL_4_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensors Array von Ausgaben 1 bis 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensors Array von Ausgaben 1 bis 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensors Array von Ausgaben 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_1_0 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensors Array von Ausgaben 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

Anforderungen

Anforderung Wert
Header directml.h