Compartir a través de


estructura DML_TOP_K1_OPERATOR_DESC (directml.h)

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

La elección de si se seleccionan los elementos K más grandes o los elementos K más pequeños se pueden controlar mediante AxisDirection.

Sintaxis

struct DML_TOP_K1_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputValueTensor;
  const DML_TENSOR_DESC *OutputIndexTensor;
  UINT                  Axis;
  UINT                  K;
  DML_AXIS_DIRECTION    AxisDirection;
};

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 escribirán los valores de los elementos de K superiores. Los elementos K superior se seleccionan en función de si son los más grandes o los más pequeños, en función del valor de AxisDirection. Este tensor debe tener tamaños iguales al 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 de de K seleccionados de cada secuencia de entrada se ordenan de forma descendente (mayor a menor) si AxisDirection es DML_AXIS_DIRECTION_DECREASING. De lo contrario, lo contrario es true y se garantiza que los valores seleccionados se ordenan de forma ascendente (menor a mayor).

OutputIndexTensor

Tipo: const DML_TENSOR_DESC*

Tensor de salida en el que se van a escribir los índices de los elementos de K superiores. Este tensor debe tener tamaños iguales al 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 en relación con el 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 de la parte superior K tienen el mismo valor (es decir, cuando hay un empate), se incluyen los índices de ambos elementos y se garantiza que se ordenan mediante un índice de elemento ascendente. Tenga en cuenta que esto es cierto independientemente del valor de AxisDirection.

Axis

Tipo: UINT de

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

K

Tipo: UINT de

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

AxisDirection

Tipo: DML_AXIS_DIRECTION

Valor de la enumeración DML_AXIS_DIRECTION. Si se establece en DML_AXIS_DIRECTION_INCREASING, este operador devuelve el más pequeñoK elementos en orden de aumento de valor. De lo contrario, devuelve el más grandeK elementos en orden decreciente.

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
AxisDirection: DML_AXIS_DIRECTION_DECREASING
   
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
AxisDirection: DML_AXIS_DIRECTION_DECREASING
   
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
AxisDirection: DML_AXIS_DIRECTION_DECREASING
   
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]]]]

Ejemplo 4. Aumento de la dirección del eje

InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 3],
   [3, 4, 5, 5],
   [6, 6, 6, 6]]]]

Axis: 3
K:    3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
   
OutputValueTensor: (Sizes:{1,1,3,3}, DataType:FLOAT32)
[[[[1, 2, 2],
   [3, 4, 5],
   [6, 6, 6]]]]

OutputIndexTensor: (Sizes:{1,1,3,3}, DataType:UINT32)
[[[[0, 1, 2],
   [0, 1, 2],
   [0, 1, 2]]]]

Observaciones

Cuando AxisDirection se establece en DML_AXIS_DIRECTION_DECREASING, este operador equivale a DML_TOP_K_OPERATOR_DESC.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_1.

Restricciones tensor

  • InputTensor, OutputIndexTensory 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 Amable 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 Salida De 1 a 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputIndexTensor Salida De 1 a 8 UINT64, UINT32

DML_FEATURE_LEVEL_3_1 y versiones posteriores

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

DML_FEATURE_LEVEL_2_1 y versiones posteriores

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

Requisitos

Requisito Valor
cliente mínimo admitido Compilación 20348 de Windows 10
servidor mínimo admitido Compilación 20348 de Windows 10
encabezado de directml.h