estrutura DML_TOP_K_OPERATOR_DESC (directml.h)
Seleciona os maiores elementos K de cada sequência ao longo de um eixo do InputTensor e retorna os valores e índices desses elementos em OutputValueTensor e OutputIndexTensor, respectivamente. Uma sequência refere-se a um dos conjuntos de elementos que existem ao longo da dimensão Eixo do InputTensor.
Sintaxe
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;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de entrada que contém elementos a serem selecionados.
OutputValueTensor
Tipo: const DML_TENSOR_DESC*
O tensor de saída para o qual gravar os valores dos principais elementos K . Esse tensor deve ter tamanhos iguais ao InputTensor, exceto para a dimensão especificada pelo parâmetro Axis , que deve ter um tamanho igual a K.
Os valores K selecionados de cada sequência de entrada têm a garantia de serem classificados decrescente (maior a menor).
OutputIndexTensor
Tipo: const DML_TENSOR_DESC*
O tensor de saída para o qual gravar os índices dos principais elementos K . Esse tensor deve ter tamanhos iguais ao InputTensor, exceto para a dimensão especificada pelo parâmetro Axis , que deve ter um tamanho igual a K.
Os índices retornados neste tensor são medidos em relação ao início de sua sequência (em oposição ao início do tensor). Por exemplo, um índice de 0 sempre se refere ao primeiro elemento para todas as sequências em um eixo.
Nos casos em que dois ou mais elementos na parte superior K têm o mesmo valor (ou seja, quando há um empate), os índices de ambos os elementos são incluídos e têm a garantia de serem ordenados pelo índice de elemento crescente.
Axis
Tipo: UINT
O índice da dimensão para selecionar elementos. Esse valor deve ser menor que o DimensionCount do InputTensor.
K
Tipo: UINT
O número de elementos a serem selecionados. K deve ser maior que 0, mas menor que o número de elementos no InputTensor ao longo da dimensão especificada por Axis.
Exemplos
Exemplo 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]]]]
Exemplo 2. Usando um eixo diferente
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]]]]
Exemplo 3. Valores vinculados
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]]]]
Comentários
Uma versão mais recente desse operador, DML_TOP_K1_OPERATOR_DESC, foi introduzida em DML_FEATURE_LEVEL_2_1
.
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_2_0
.
Restrições do Tensor
- InputTensor, OutputIndexTensor e OutputValueTensor devem ter a mesma DimensionCount.
- InputTensor e OutputValueTensor devem ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_5_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputValueTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputIndexTensor | Saída | 1 a 8 | UINT64, UINT32 |
DML_FEATURE_LEVEL_3_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | Saída | 1 a 8 | UINT32 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | Saída | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | Saída | 4 | UINT32 |
DML_FEATURE_LEVEL_2_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16 |
OutputValueTensor | Saída | 4 | FLOAT32, FLOAT16 |
OutputIndexTensor | Saída | 4 | UINT32 |
Requisitos
Cabeçalho | directml.h |