Compartilhar via


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