структура DML_CUMULATIVE_PRODUCT_OPERATOR_DESC (directml.h)
Умножает элементы тензора вдоль оси, записывая результат подсчета продукта в выходной тензор.
Синтаксис
struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveProduct;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий входные данные. Обычно это тот же тензор, который был предоставлен в качестве inputTensor для DML_BATCH_NORMALIZATION_OPERATOR_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, а продукт выполняется путем обхода элементов по убыванию индекса.
HasExclusiveProduct
Тип: 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
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 2, 6, 30], // i.e. [2, 2*1, 2*1*3, 2*1*3*5]
[3, 24, 168, 504], // [... ]
[9, 54, 108, 432]]]] // [... ]
Пример 2. Эксклюзивные продукты
Если для параметра HasExclusiveProduct задано значение TRUE , значение текущего элемента исключается из выполняющегося подсчета при записи в выходной тензор.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: TRUE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 6], // Notice the product is written before multiplying the input,
[1, 3, 24, 168], // and the final total is not written to any output.
[1, 9, 54, 108]]]]
Пример 3. Направление оси
Если задать для AxisDirectionзначение DML_AXIS_DIRECTION_DECREASING , при вычислении выполняющегося подсчета будет отменен порядок обхода элементов.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 30, 15, 15, 5], // i.e. [2*1*3*5, 1*3*5, 3*5, 5]
[504, 168, 21, 3], // [... ]
[432, 48, 8, 4]]]] // [... ]
Пример 4. Умножение вдоль другой оси
В этом примере продукт выполняется вертикально вдоль оси высоты (второе измерение).
Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2, 1, 3, 5], // i.e. [2, ...]
[ 6, 8, 21, 15], // [2*3, ...]
[54, 48, 42, 60]]]] // [2*3*9 ...]
Комментарии
Этот оператор поддерживает выполнение на месте, что означает, что выходной тензор допускается для псевдонима InputTensor во время привязки .
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_3_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_3_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Выходные данные | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Сборка Windows 22000 |
Минимальная версия сервера | Сборка Windows 22000 |
Верхняя часть | directml.h |