struttura DML_TOP_K_OPERATOR_DESC (directml.h)
Seleziona gli elementi K più grandi di ogni sequenza lungo un asse di InputTensor e restituisce rispettivamente i valori e gli indici di tali elementi in OutputValueTensor e OutputIndexTensor. Una sequenza fa riferimento a uno dei set di elementi presenti lungo la dimensione Axis di InputTensor.
Sintassi
struct DML_TOP_K_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputValueTensor;
const DML_TENSOR_DESC *OutputIndexTensor;
UINT Axis;
UINT K;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore di input contenente elementi da selezionare.
OutputValueTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output in cui scrivere i valori degli elementi K principali. Questo tensore deve avere dimensioni uguali a InputTensor, ad eccezione della dimensione specificata dal parametro Axis , che deve avere una dimensione uguale a K.
È garantito che i valori K selezionati da ogni sequenza di input siano ordinati in ordine decrescente (dal più grande al più piccolo).
OutputIndexTensor
Tipo: const DML_TENSOR_DESC*
Tensore di output in cui scrivere gli indici degli elementi K principali. Questo tensore deve avere dimensioni uguali a InputTensor, ad eccezione della dimensione specificata dal parametro Axis , che deve avere una dimensione uguale a K.
Gli indici restituiti in questo tensore vengono misurati rispetto all'inizio della loro sequenza (anziché all'inizio del tensore). Ad esempio, un indice pari a 0 fa sempre riferimento al primo elemento per tutte le sequenze in un asse.
Nei casi in cui due o più elementi nella parte superiore K hanno lo stesso valore (ovvero quando è presente un legame), gli indici di entrambi gli elementi sono inclusi e sono garantiti l'ordinamento in base all'indice degli elementi crescente.
Axis
Tipo: UINT
Indice della dimensione in cui selezionare gli elementi. Questo valore deve essere minore di DimensionCountdell'oggetto InputTensor.
K
Tipo: UINT
Numero di elementi da selezionare. K deve essere maggiore di 0, ma minore del numero di elementi nell'oggetto InputTensor lungo la dimensione specificata da Axis.
Esempi
Esempio 1
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0, 1, 10, 11],
[ 3, 2, 9, 8],
[ 4, 5, 6, 7]]]]
Axis: 3
K: 2
OutputValueTensor: (Sizes:{1,1,3,2}, DataType:FLOAT32)
[[[[11, 10],
[ 9, 8],
[ 7, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,2}, DataType:UINT32)
[[[[3, 2],
[2, 3],
[3, 2]]]]
Esempio 2. Uso di un asse diverso
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 0, 1, 10, 11],
[ 3, 2, 9, 8],
[ 4, 5, 6, 7]]]]
Axis: 2
K: 2
OutputValueTensor: (Sizes:{1,1,2,4}, DataType:FLOAT32)
[[[[ 4, 5, 10, 11],
[ 3, 2, 9, 8]]]]
OutputIndexTensor: (Sizes:{1,1,2,4}, DataType:UINT32)
[[[[2, 2, 0, 0],
[1, 1, 1, 1]]]]
Esempio 3. Valori associati
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 3],
[3, 4, 5, 5],
[6, 6, 6, 6]]]]
Axis: 3
K: 3
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[3, 2, 2],
[5, 5, 4],
[6, 6, 6]]]]
OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[3, 1, 2],
[2, 3, 1],
[0, 1, 2]]]]
Commenti
Una versione più recente di questo operatore, DML_TOP_K1_OPERATOR_DESC, è stata introdotta in DML_FEATURE_LEVEL_2_1
.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_2_0
.
Vincoli tensor
- InputTensor, OutputIndexTensor e OutputValueTensor devono avere lo stesso DimensionCount.
- InputTensor e OutputValueTensor devono avere lo stesso Tipo di dati.
Supporto di Tensor
DML_FEATURE_LEVEL_5_0 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | da 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputValueTensor | Output | da 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputIndexTensor | Output | da 1 a 8 | UINT64, UINT32 |
DML_FEATURE_LEVEL_3_1 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | Output | da 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | Output | da 1 a 8 | UINT32 |
DML_FEATURE_LEVEL_2_1 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | Output | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | Output | 4 | UINT32 |
DML_FEATURE_LEVEL_2_0 e versioni successive
Tensore | Tipo | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Input | 4 | FLOAT32, FLOAT16 |
OutputValueTensor | Output | 4 | FLOAT32, FLOAT16 |
OutputIndexTensor | Output | 4 | UINT32 |
Requisiti
Intestazione | directml.h |