DML_NONZERO_COORDINATES_OPERATOR_DESC-Struktur (directml.h)
Berechnet die N-dimensionalen Koordinaten aller Nicht-Null-Elemente des Eingabe tensors.
Dieser Operator erzeugt eine MxN-Matrix mit Werten, wobei jede Zeile M eine N-dimensionale Koordinate eines Werts ungleich 0 (null) aus der Eingabe enthält. Bei Verwendung FLOAT32 oder FLOAT16 Eingaben werden sowohl negative als auch positive 0 (0,0f und -0,0f) für die Zwecke dieses Operators als null behandelt.
Der Operator erfordert, dass der OutputCoordinatesTensor über eine Größe verfügt, die groß genug ist, um ein Worst-Case-Szenario zu berücksichtigen, bei dem jedes Element der Eingabe ungleich 0 (null) ist. Dieser Operator gibt die Anzahl von Nicht-Null-Elementen über den OutputCountTensor zurück, den Aufrufer untersuchen können, um die Anzahl der Koordinaten zu bestimmen, die in den OutputCoordinatesTensor geschrieben werden.
Syntax
struct DML_NONZERO_COORDINATES_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputCountTensor;
const DML_TENSOR_DESC *OutputCoordinatesTensor;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Ein Eingabe tensor.
OutputCountTensor
Typ: const DML_TENSOR_DESC*
Ein Ausgabe tensor, der die Anzahl der Elemente ungleich 0 (null) im Eingabe tensor enthält. Dieser Tensor muss ein Skalar sein, d. h. die Größen dieses Tensors müssen alle 1 sein. Der Typ dieses Tensors muss UINT32 sein.
OutputCoordinatesTensor
Typ: const DML_TENSOR_DESC*
Ein Ausgabe tensor, der die N-dimensionalen Koordinaten der Eingabeelemente enthält, die ungleich 0 (null) sind.
Dieser Tensor muss Die Größen von {1,1,M,N}
aufweisen (wenn DimensionCount 4 ist) oder {1,1,1,M,N}
(wenn DimensionCount 5 ist), wobei M die Gesamtzahl der Elemente im InputTensor und N größer oder gleich dem effektiven Rang von InputTensor ist, bis zur DimensionCount der Eingabe.
Der effektive Rang eines Tensors wird durch die DimensionCount dieses Tensors bestimmt, wobei führende Dimensionen der Größe 1 ausgenommen sind. Beispielsweise verfügt ein Tensor mit der Größe von {1,2,3,4}
über effektiven Rang 3, ebenso wie ein Tensor mit der Größe von {1,1,5,5,5}
. Ein Tensor mit Größen {1,1,1,1}
hat den effektiven Rang 0.
Betrachten Sie einen InputTensor mit größen von {1,1,12,5}
. Dieser Eingabe tensor enthält 60 Elemente und hat einen effektiven Rang von 2. In diesem Beispiel haben alle gültigen Größen von OutputCoordinatesTensor das Format {1,1,60,N}
, wobei N >= 2, aber nicht größer als dimensionCount (4 in diesem Beispiel) ist.
Die koordinaten, die in diesen Tensor geschrieben werden, werden garantiert nach dem aufsteigenden Elementindex sortiert. Wenn der Eingabe tensor beispielsweise drei Werte ungleich 0 (null) an den Koordinaten {1,0}, {1,2}und {0,5}aufweist, sind [[0,5], [1,0], [1,2]]
die in outputCoordinatesTensor geschriebenen Werte .
Dieser Tensor erfordert zwar, dass seine Dimension M der Anzahl von Elementen im Eingabe tensor entspricht, dieser Operator schreibt jedoch nur ein Maximum von OutputCount-Elementen in diesen Tensor. OutputCount wird über den skalaren OutputCountTensor zurückgegeben.
Hinweis
Die verbleibenden Elemente dieses Tensors über outputCount hinaus sind nach Abschluss dieses Operators nicht definiert. Sie sollten sich nicht auf die Werte dieser Elemente verlassen.
Beispiel
InputTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[1.0f, 0.0f, 0.0f, 2.0f],
[-0.0f, 3.5f, 0.0f, -5.2f]]
OutputCountTensor: (Sizes:{1,1,1,1}, DataType:UINT32)
[4]
OutputCoordinatesTensor: (Sizes:{1,1,8,3}, DataType:UINT32)
[[0, 0, 0],
[0, 0, 3],
[0, 1, 1],
[0, 1, 3],
[0, 0, 0], //
[0, 0, 0], // Values in rows >= OutputCountTensor (4 in
[0, 0, 0], // this case) are left undefined
[0, 0, 0]] //
Hinweise
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_3_0
eingeführt.
Tensorunterstützung
DML_FEATURE_LEVEL_4_0 und höher
Tensor | Variante | Dimensionen | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|---|
InputTensor | Eingabe | { [D0], [D1], [D2], [D3], [D4], [D5], [D6], D7 } | 1 bis 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputCountTensor | Ausgabe | { [1], [1], [1], [1], [1], [1], [1], 1 } | 1 bis 8 | UINT32 |
OutputCoordinatesTensor | Ausgabe | { [1], [1], [1], [1], [1], [1], [1], M, N } | 2 bis 8 | UINT32 |
DML_FEATURE_LEVEL_3_0 und höher
Tensor | Variante | Dimensionen | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
---|---|---|---|---|
InputTensor | Eingabe | { [D0], D1, D2, D3, D4 } | 4 bis 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputCountTensor | Ausgabe | { [1], 1, 1, 1, 1 } | 4 bis 5 | UINT32 |
OutputCoordinatesTensor | Ausgabe | { [1], 1, 1, M, N } | 4 bis 5 | UINT32 |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Kopfzeile | directml.h |