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