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
要对元素求和的维度的索引。 此值必须小于 InputTensor 的 DimensionCount。
AxisDirection
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 和 Size。
Tensor 支持
DML_FEATURE_LEVEL_5_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_4_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT32、UINT32 |
DML_FEATURE_LEVEL_2_1及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
要求
最低受支持的客户端 | Windows 10内部版本 20348 |
最低受支持的服务器 | Windows 10内部版本 20348 |
标头 | directml.h |