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


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