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