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


структура DML_ARGMIN_OPERATOR_DESC (directml.h)

Выводит индексы элементов с минимальными значениями в пределах одного или нескольких измерений входного тензора.

Каждый выходной элемент является результатом применения сокращения argmin к подмножества входного тензора. Функция argmin выводит индекс элемента с минимальным значением в наборе входных элементов. Входные элементы, участвующие в каждом сокращении, определяются предоставленными входными осями. Аналогичным образом каждый выходной индекс соответствует предоставленным входным осям. Если указаны все входные оси, то оператор применяет одно сокращение argmin и создает один выходной элемент.

Синтаксис

struct DML_ARGMIN_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
  DML_AXIS_DIRECTION    AxisDirection;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор для чтения.

OutputTensor

Тип: const DML_TENSOR_DESC*

Тензор, в который записываются результаты. Каждый выходной элемент является результатом сокращения argmin для подмножества элементов из InputTensor.

  • DimensionCount должен соответствовать InputTensor.DimensionCount (ранг входного тензора сохраняется).
  • Размеры должны совпадать с InputTensor.Sizes, за исключением измерений, включенных в уменьшенные оси, которые должны иметь размер 1.

AxisCount

Тип: UINT

Количество осей для уменьшения. Это поле определяет размер массива осей .

Axes

Тип: _Field_size_(AxisCount) const UINT*

Оси, вдоль которых выполняется уменьшение. Значения должны находиться в диапазоне [0, InputTensor.DimensionCount - 1].

AxisDirection

DML_AXIS_DIRECTION AxisDirection;

Тип: DML_AXIS_DIRECTION

Определяет, какой индекс следует выбрать, если несколько входных элементов имеют одинаковое значение.

  • DML_AXIS_DIRECTION_INCREASING возвращает индекс первого элемента с минимальным значением (например, argmin({1,2,3,2,1}) = 0).
  • DML_AXIS_DIRECTION_DECREASING возвращает индекс последнего элемента с минимальным значением (например, argmin({1,2,3,2,1}) = 4).

Примеры

В примерах в этом разделе используется тот же двумерный входной тензор.

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

Пример 1. Применение argmin к столбцам

AxisCount: 1
Axes: {0}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 3}, DataType:UINT32)
[[0,  // argmin({1, 3, 2})
  1,  // argmin({2, 0, 5})
  2]] // argmin({3, 4, 2})

Пример 2. Применение argmin к строкам

AxisCount: 1
Axes: {1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{3, 1}, DataType:UINT32)
[[0], // argmin({1, 2, 3})
 [1], // argmin({3, 0, 4})
 [0]] // argmin({2, 5, 2})

Пример 3. Применение argmin ко всем осям (весь тензор)

AxisCount: 2
Axes: {0, 1}
AxisDirection: DML_AXIS_DIRECTION_INCREASING
OutputTensor: (Sizes:{1, 1}, DataType:UINT32)
[[4]]  // argmin({1, 2, 3, 3, 0, 4, 2, 5, 2})

Комментарии

Размеры выходных тензоров должны совпадать с размерами входного тензора, за исключением уменьшенных осей, которые должны быть равными 1.

Если значение AxisDirectionDML_AXIS_DIRECTION_INCREASING, этот API эквивалентен DML_REDUCE_OPERATOR_DESC с DML_REDUCE_FUNCTION_ARGMIN.

Подмножество этой функции предоставляется через оператор DML_REDUCE_OPERATOR_DESC и поддерживается на более ранних уровнях функций DirectML.

Доступность

Этот оператор появился в DML_FEATURE_LEVEL_3_0.

Ограничения тензоров

InputTensor и OutputTensor должны иметь одинаковые dimensionCount.

Поддержка тензоров

DML_FEATURE_LEVEL_4_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные От 1 до 8 FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Выходные данные От 1 до 8 INT64, INT32, UINT64, UINT32

DML_FEATURE_LEVEL_3_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные От 1 до 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Выходные данные От 1 до 8 INT64, INT32, UINT64, UINT32

Требования

Требование Значение
Минимальная версия клиента сборка Windows 10 20348
Минимальная версия сервера сборка Windows 10 20348
Верхняя часть directml.h