Compartir a través de


estructura DML_TOP_K_OPERATOR_DESC (directml.h)

Selecciona los elementos K más grandes de cada secuencia a lo largo de un eje de InputTensor y devuelve los valores e índices de esos elementos en OutputValueTensor y OutputIndexTensor, respectivamente. Una secuencia hace referencia a uno de los conjuntos de elementos que existen a lo largo de la dimensión Axis de InputTensor.

Sintaxis

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;
};

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor de entrada que contiene elementos que se van a seleccionar.

OutputValueTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida en el que se van a escribir los valores de los elementos K principales. Este tensor debe tener tamaños iguales a InputTensor, excepto para la dimensión especificada por el parámetro Axis , que debe tener un tamaño igual a K.

Se garantiza que los valores K seleccionados de cada secuencia de entrada se ordenan de forma descendente (mayor a menor).

OutputIndexTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida en el que se van a escribir los índices de los elementos K principales. Este tensor debe tener tamaños iguales a InputTensor, excepto para la dimensión especificada por el parámetro Axis , que debe tener un tamaño igual a K.

Los índices devueltos en este tensor se miden con respecto al principio de su secuencia (en lugar del principio del tensor). Por ejemplo, un índice de 0 siempre hace referencia al primer elemento de todas las secuencias de un eje.

En los casos en los que dos o más elementos del top-K tienen el mismo valor (es decir, cuando hay un empate), se incluyen los índices de ambos elementos y se garantiza que se ordenan por índice de elemento ascendente.

Axis

Tipo: UINT

Índice de la dimensión en el que se van a seleccionar los elementos. Este valor debe ser menor que dimensionCount del objeto InputTensor.

K

Tipo: UINT

Número de elementos que se van a seleccionar. K debe ser mayor que 0, pero menor que el número de elementos de InputTensor a lo largo de la dimensión especificada por Axis.

Ejemplos

Ejemplo 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]]]]

Ejemplo 2. Uso de un eje 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]]]]

Ejemplo 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]]]]

Comentarios

Se introdujo una versión más reciente de este operador, DML_TOP_K1_OPERATOR_DESC, en DML_FEATURE_LEVEL_2_1.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_0.

Restricciones tensor

  • InputTensor, OutputIndexTensor y OutputValueTensor deben tener el mismo DimensionCount.
  • InputTensor y OutputValueTensor deben tener el mismo DataType.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_5_0 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputValueTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputIndexTensor Resultados De 1 a 8 UINT64, UINT32

DML_FEATURE_LEVEL_3_1 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputValueTensor Resultados De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputIndexTensor Resultados De 1 a 8 UINT32

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputValueTensor Resultados 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputIndexTensor Resultados 4 UINT32

DML_FEATURE_LEVEL_2_0 y versiones posteriores

Tensor Kind Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16
OutputValueTensor Resultados 4 FLOAT32, FLOAT16
OutputIndexTensor Resultados 4 UINT32

Requisitos

   
Encabezado directml.h