struttura DML_NONZERO_COORDINATES_OPERATOR_DESC (directml.h)
Calcola le coordinate N-dimensionali di tutti gli elementi diversi da zero del tensore di input.
Questo operatore produce una matrice MxN di valori, in cui ogni riga M contiene una coordinata N-dimensionale di un valore diverso da zero dall'input. Quando si usano input FLOAT32 o FLOAT16 , sia negativo che positivo 0 (0,0f e -0,0f) vengono considerati zero ai fini di questo operatore.
L'operatore richiede che OutputCoordinatesTensor abbia dimensioni sufficienti per supportare uno scenario peggiore in cui ogni elemento dell'input è diverso da zero. Questo operatore restituisce il numero di elementi diversi da zero tramite OutputCountTensor, che i chiamanti possono controllare per determinare il numero di coordinate scritte in OutputCoordinatesTensor.
Sintassi
struct DML_NONZERO_COORDINATES_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputCountTensor;
const DML_TENSOR_DESC *OutputCoordinatesTensor;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di input.
OutputCountTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output che contiene il numero di elementi diversi da zero nel tensore di input. Questo tensore deve essere scalare, ovvero le dimensioni di questo tensore devono essere tutte pari a 1. Il tipo di questo tensore deve essere UINT32.
OutputCoordinatesTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output che contiene le coordinate N-dimensionali degli elementi di input che sono diversi da zero.
Questo tensore deve avere Dimensioni di {1,1,M,N}
(se DimensionCount è 4) o {1,1,1,M,N}
(se DimensionCount è 5), dove M è il numero totale di elementi in InputTensor e N è maggiore o uguale al rango effettivo di InputTensor, fino a DimensionCount dell'input.
Il rango effettivo di un tensore è determinato dal Valore DimensionCount di tale tensore escluso le dimensioni iniziali di dimensione 1. Ad esempio, un tensore con dimensioni di {1,2,3,4}
ha un rango effettivo 3, come un tensore con dimensioni di {1,1,5,5,5}
. Un tensore con dimensioni {1,1,1,1}
ha un rango effettivo 0.
Si consideri un oggetto InputTensor con dimensioni di {1,1,12,5}
. Questo tensore di input contiene 60 elementi e ha un rango effettivo pari a 2. In questo esempio tutte le dimensioni valide di OutputCoordinatesTensor sono del formato {1,1,60,N}
, dove N >= 2 ma non è maggiore di DimensionCount (4 in questo esempio).
Le coordinate scritte in questo tensore sono sicuramente ordinate in base all'indice degli elementi crescente. Ad esempio, se il tensore di input ha 3 valori diversi da zero alle coordinate {1,0}, {1,2}e {0,5}, i valori scritti in OutputCoordinatesTensor saranno [[0,5], [1,0], [1,2]]
.
Anche se questo tensore richiede che la dimensione M sia uguale al numero di elementi nel tensore di input, questo operatore scriverà solo un massimo di elementi OutputCount in questo tensore. OutputCount viene restituito tramite outputcount scalareTensor.
Nota
Gli elementi rimanenti di questo tensore oltre a OutputCount non vengono definiti al termine di questo operatore. Non è consigliabile basarsi sui valori di questi elementi.
Esempio
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]] //
Commenti
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_3_0
.
Supporto di Tensor
DML_FEATURE_LEVEL_4_0 e versioni successive
Tensore | Tipo | Dimensioni | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|---|
InputTensor | Input | { [D0], [D1], [D2], [D3], [D4], [D5], [D6], D7 } | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputCountTensor | Output | { [1], [1], [1], [1], [1], [1], [1], 1 } | da 1 a 8 | UINT32 |
OutputCoordinatesTensor | Output | { [1], [1], [1], [1], [1], [1], M, N } | da 2 a 8 | UINT32 |
DML_FEATURE_LEVEL_3_0 e versioni successive
Tensore | Tipo | Dimensioni | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|---|
InputTensor | Input | { [D0], D1, D2, D3, D4 } | da 4 a 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputCountTensor | Output | { [1], 1, 1, 1, 1 } | da 4 a 5 | UINT32 |
OutputCoordinatesTensor | Output | { [1], 1, 1, M, N } | da 4 a 5 | UINT32 |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 Build 20348 |
Server minimo supportato | Windows 10 Build 20348 |
Intestazione | directml.h |