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


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

Выводит сокращение элементов (сумма, произведение, минимум и т. д.) в пределах одного или нескольких измерений входного тензора.

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

Синтаксис

struct DML_REDUCE_OPERATOR_DESC {
  DML_REDUCE_FUNCTION   Function;
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  AxisCount;
  const UINT            *Axes;
};

Члены

Function

Тип: DML_REDUCE_FUNCTION

Указывает функцию сокращения, применяемую к входным данным.

InputTensor

Тип: const DML_TENSOR_DESC*

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

OutputTensor

Тип: const DML_TENSOR_DESC*

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

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

AxisCount

Тип: UINT

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

Axes

Тип: _Field_size_(AxisCount) const UINT*

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

Примеры

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

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

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

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6,  // sum({1, 3, 2})
  6,  // sum({2, 0, 4})
  9]] // sum({3, 4, 2})

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

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
 [7], // sum({3, 0, 4})
 [8]] // sum({2, 4, 2})

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

Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]]  // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})

Доступность

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

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

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

Поддержка тензоров в соответствии с функцией

ARGMIN и ARGMAX

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

DML_FEATURE_LEVEL_2_1 и выше

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

DML_FEATURE_LEVEL_1_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 UINT32

AVERAGE, L2, LOG_SUM и LOG_SUM_EXP

DML_FEATURE_LEVEL_3_0 и выше
Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные От 1 до 8 FLOAT32, FLOAT16
OutputTensor Выходные данные От 1 до 8 FLOAT32, FLOAT16
DML_FEATURE_LEVEL_1_0 и выше
Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 FLOAT32, FLOAT16

L1 и SUM_SQUARE

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

DML_FEATURE_LEVEL_3_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные От 1 до 8 FLOAT32, FLOAT16
OutputTensor Выходные данные От 1 до 8 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_1_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 FLOAT32, FLOAT16

MIN и MAX

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

DML_FEATURE_LEVEL_3_0 и выше

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

DML_FEATURE_LEVEL_2_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Выходные данные 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 FLOAT32, FLOAT16

MULTIPLY и SUM

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

DML_FEATURE_LEVEL_3_0 и выше

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

DML_FEATURE_LEVEL_2_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16, INT32, UINT32
OutputTensor Выходные данные 4 FLOAT32, FLOAT16, INT32, UINT32

DML_FEATURE_LEVEL_1_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 FLOAT32, FLOAT16

Требования

Требование Значение
Заголовок directml.h

См. также раздел

На уровне компонентов 3_0 появились эти автономные операторы, заменяющие функциональные возможности, доступные DML_REDUCE_FUNCTION_ARGMAX и DML_REDUCE_FUNCTION_ARGMIN.