структура DML_TOP_K_OPERATOR_DESC (directml.h)
Выбирает самые большие K-элементы из каждой последовательности вдоль оси InputTensor и возвращает значения и индексы этих элементов в OutputValueTensor и OutputIndexTensor соответственно. Последовательность относится к одному из наборов элементов, которые существуют вдоль измерения Axisобъекта InputTensor.
Синтаксис
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;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Входной тензор, содержащий элементы для выбора.
OutputValueTensor
Тип: const DML_TENSOR_DESC*
Выходной тензор для записи значений верхних элементов K . Этот тензор должен иметь размеры, равные InputTensor, за исключением измерения, заданного параметром Axis , который должен иметь размер, равный K.
Значения K , выбранные из каждой входной последовательности, гарантированно будут отсортированы по убыванию (от наибольшего до наименьшего).
OutputIndexTensor
Тип: const DML_TENSOR_DESC*
Выходной тензор, в который записываются индексы верхних элементов K . Этот тензор должен иметь размеры, равные InputTensor, за исключением измерения, заданного параметром Axis , который должен иметь размер, равный K.
Индексы, возвращаемые в этом тензоре, измеряются относительно начала их последовательности (в отличие от начала тензора). Например, индекс 0 всегда относится к первому элементу для всех последовательностей на оси.
В случаях, когда два или более элементов в верхней части K имеют одинаковое значение (т. е. при наличии привязки), индексы обоих элементов включаются и гарантированно упорядочены по возрастанию индекса элементов.
Axis
Тип: UINT
Индекс измерения для выбора элементов. Это значение должно быть меньше значения DimensionCountобъекта InputTensor.
K
Тип: UINT
Количество элементов для выбора. K должен быть больше 0, но меньше числа элементов в InputTensor вдоль измерения, заданного осью.
Примеры
Пример 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]]]]
Пример 2. Использование другой оси
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]]]]
Пример 3. Связанные значения
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]]]]
Комментарии
В появилась DML_FEATURE_LEVEL_2_1
более новая версия этого оператора, DML_TOP_K1_OPERATOR_DESC.
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_2_0
.
Ограничения тензоров
- InputTensor, OutputIndexTensor и OutputValueTensor должны иметь один и тот же DimensionCount.
- InputTensor и OutputValueTensor должны иметь один и тот же тип DataType.
Поддержка тензоров
DML_FEATURE_LEVEL_5_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | От 1 до 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputValueTensor | Выходные данные | От 1 до 8 | FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
OutputIndexTensor | Выходные данные | От 1 до 8 | UINT64, UINT32 |
DML_FEATURE_LEVEL_3_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | От 1 до 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | Выходные данные | От 1 до 8 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | Выходные данные | От 1 до 8 | UINT32 |
DML_FEATURE_LEVEL_2_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputValueTensor | Выходные данные | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputIndexTensor | Выходные данные | 4 | UINT32 |
DML_FEATURE_LEVEL_2_0 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | 4 | FLOAT32, FLOAT16 |
OutputValueTensor | Выходные данные | 4 | FLOAT32, FLOAT16 |
OutputIndexTensor | Выходные данные | 4 | UINT32 |
Требования
Верхняя часть | directml.h |