累积¶
计算张量沿轴的连续缩减。输出始终与输入具有相同的形状。
对于多维张量,缩减操作沿指定的轴应用。例如,给定一个二维输入,沿轴 0 的前向包含累积操作将在每列中生成累积和。
如果缩减操作是求和,则也称为前缀和或累积和。
该操作具有前向与反向变体,以及包含与排除变体。
例如,设输入为长度为 n 的向量 x,输出为向量 y。则 y[j] = sum(x[…]),其中 … 表示此表中的索引序列
前向 |
反向 |
|
---|---|---|
包含 |
0..j |
j..n-1 |
排除 |
0..j-1 |
j+1..n-1 |
属性¶
operation
累积操作可以是以下之一
SUM
对元素进行前缀求和。
exclusive
指定层是排除累积层还是包含累积层的布尔值。默认为 false。
reverse
指定是否应向后应用累积操作的布尔值。默认为 false。
输入¶
input: T1 类型的张量 T1
axis: T2 类型的张量 T2
输出¶
output: T1 类型的张量 T1
数据类型¶
操作 |
T1 |
T2 |
---|---|---|
|
|
|
形状信息¶
input 和 output 是具有相同形状 \([a_0,...,a_n], n \geq 1\) 的张量
axis 必须是构建时常量 0D 张量,并且必须在范围 [-rank(input), rank(input)-1] 内。负值表示从后往前计数维度。
例如,对于输入形状 (D0, D1, D2), axis=2
,output_scale 形状为 (D0, D1, D2)
。
DLA 支持¶
不支持。
示例¶
累积
in1 = network.add_input("input1", dtype=trt.float32, shape=(2, 3))
axis_data = np.asarray([1], dtype=np.int32)
in2 = network.add_constant(shape=(), weights=axis_data).get_output(0)
layer = network.add_cumulative(input=in1, axis=in2, op=trt.CumulativeOperation.SUM, exclusive=False, reverse=False)
network.mark_output(layer.get_output(0))
inputs[in1.name] = np.array([[-3.0, -2.0, -1.0], [0.0, 1.0, 2.0]])
outputs[layer.get_output(0).name] = layer.get_output(0).shape
expected[layer.get_output(0).name] = np.array([[-3.0, -5.0, -6.0], [0.0, 1.0, 3.0]])
C++ API¶
有关 C++ ICumulativeLayer 算子的更多信息,请参阅 C++ ICumulativeLayer 文档。
Python API¶
有关 Python ICumulativeLayer 算子的更多信息,请参阅 Python ICumulativeLayer 文档。