структура DML_CUMULATIVE_SUMMATION_OPERATOR_DESC (directml.h)
Суммирует элементы тензора вдоль оси, записывая выполняющийся подсчет суммы в выходной тензор.
Синтаксис
struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveSum;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Входной тензор, содержащий суммируемые элементы.
OutputTensor
Тип: const DML_TENSOR_DESC*
Выходной тензор, в который записываются итоговые суммы. Этот тензор должен иметь те же размеры и тип данных, что и InputTensor.
Axis
Тип: UINT
Индекс измерения для суммирования элементов. Это значение должно быть меньше значения DimensionCountобъекта InputTensor.
AxisDirection
Тип: DML_AXIS_DIRECTION
Одно из значений перечисления DML_AXIS_DIRECTION . Если задано значение DML_AXIS_DIRECTION_INCREASING, суммирование происходит путем обхода тензора по указанной оси по возрастанию индекса элемента. Если задано значение DML_AXIS_DIRECTION_DECREASING, обратное значение равно true, а суммирование происходит путем обхода элементов по убыванию индекса.
HasExclusiveSum
Тип: BOOL
Если задано значение TRUE, значение текущего элемента исключается при записи выполняющегося подсчета в выходной тензор. Если значение РАВНО FALSE, то значение текущего элемента включается в выполняющееся подсчет.
Примеры
Во всех примерах в этом разделе используется входной тензор со следующими свойствами.
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
[3, 8, 7, 3],
[9, 6, 2, 4]]]]
Пример 1. Совокупное суммирование по горизонтальным щепкам
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 3, 6, 11], // i.e. [2, 2+1, 2+1+3, 2+1+3+5]
[3, 11, 18, 21], // [... ]
[9, 15, 17, 21]]]] // [... ]
Пример 2. Эксклюзивные суммы
Если для параметра HasExclusiveSum задано значение TRUE , значение текущего элемента исключается из выполняющегося подсчета при записи в выходной тензор.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: TRUE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 2, 3, 6], // Notice the sum is written before adding the input,
[0, 3, 11, 18], // and the final total is not written to any output.
[0, 9, 15, 17]]]]
Пример 3. Направление оси
Если задать для AxisDirectionзначение DML_AXIS_DIRECTION_DECREASING , при вычислении выполняющегося подсчета будет отменен порядок обхода элементов.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveSum: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[11, 9, 8, 5], // i.e. [2+1+3+5, 1+3+5, 3+5, 5]
[21, 18, 10, 3], // [... ]
[21, 12, 6, 4]]]] // [... ]
Пример 4. Суммирование по другой оси
В этом примере сумма выполняется вертикально вдоль оси высоты (измерение 2).
Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveSum: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2, 1, 3, 5], // i.e. [2, ...]
[ 5, 9, 10, 8], // [2+3, ...]
[14, 15, 12, 12]]]] // [2+3+9 ...]
Комментарии
Этот оператор поддерживает выполнение на месте, то есть OutputTensor может использовать псевдоним InputTensor во время привязки .
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_2_1
.
Ограничения тензоров
InputTensor и OutputTensor должны иметь одинаковые значения DataType, DimensionCount и Sizes.
Поддержка тензоров
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_4_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 |
Требования
Минимальная версия клиента | Сборка Windows 10 20348 |
Минимальная версия сервера | Сборка Windows 10 20348 |
Верхняя часть | directml.h |