DML_GATHER_ELEMENTS_OPERATOR_DESC-Struktur (directml.h)
Sammelt Elemente aus dem Eingabe tensor entlang der angegebenen Achse mithilfe des Indizes-Tensors, um der Eingabe neu zuzuordnen. Dieser Operator führt den folgenden Pseudocode aus, wobei das genaue Verhalten von der Achse, der Anzahl der Eingabedimensionen und der Dimensionsanzahl der Indizes abhängt.
output[i, j, k, ...] = input[index[i, j, k, ...], j, k, ...] // if axis == 0
output[i, j, k, ...] = input[i, index[i, j, k, ...], k, ...] // if axis == 1
output[i, j, k, ...] = input[i, j, index[i, j, k, ...], ...] // if axis == 2
...
Syntax
struct DML_GATHER_ELEMENTS_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *IndicesTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, aus dem gelesen werden soll.
IndicesTensor
Typ: const DML_TENSOR_DESC*
Die Indizes im Eingabe tensor entlang der aktiven Achse. Die Größen müssen mit InputTensor.Sizes für jede Dimension mit Ausnahme der Achse übereinstimmen.
DML_FEATURE_LEVEL_3_0
Ab unterstützt dieser Operator negative Indexwerte, wenn ein integraler Vorzeichentyp mit diesem Tensor verwendet wird. Negative Indizes werden als relativ zum Ende der Achsendimension interpretiert. Beispielsweise bezieht sich ein Index von -1 auf das letzte Element entlang dieser Dimension.
OutputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, in den die Ergebnisse geschrieben werden sollen. Die Größen müssen mit IndicesTensor.Sizes übereinstimmen, und DataType muss mit InputTensor.DataType übereinstimmen.
Axis
Typ: UINT
Die Achsendimension von InputTensor , die erfasst werden soll, und reicht von [0, *InputTensor.DimensionCount*)
.
Beispiele
Axis = 0
InputTensor: (Sizes:{3,3}, DataType:FLOAT32)
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
IndicesTensor: (Sizes:{2,3}, DataType:UINT32)
[[1, 2, 0],
[2, 0, 0]]
// output[y, x] = input[indices[y, x], x]
OutputTensor: (Sizes:{2,3}, DataType:UINT32)
[[4, 8, 3], // select elements vertically from data
[7, 2, 3]]
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_1
eingeführt.
Tensoreinschränkungen
IndicesTensor
, InputTensor und OutputTensor müssen über dieselbe DimensionCount verfügen.- InputTensor und OutputTensor müssen denselben Datentyp 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 |
IndicesTensor | Eingabe | 1 bis 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Ausgabe | 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 |
IndicesTensor | Eingabe | 1 bis 8 | INT64, INT32, UINT64, UINT32 |
OutputTensor | Ausgabe | 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 |
IndicesTensor | Eingabe | 4 | UINT32 |
OutputTensor | Ausgabe | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |