Поделиться через


структура 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