Share via


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_0eingefü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