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 |