torch.cumulative_trapezoid¶
- torch.cumulative_trapezoid(y, x=None, *, dx=None, dim=-1) 张量¶
沿
dim累积计算 梯形法则。默认情况下,假设元素之间的间距为1,但可以使用dx指定不同的常数间距,也可以使用x指定沿dim的任意间距。更多详情,请阅读
torch.trapezoid()。torch.trapezoid()与本函数的区别在于,torch.trapezoid()为每次积分返回一个值, 而本函数为每次积分内的每个间距返回一个累积值。这类似于 .sum 返回一个值,而 .cumsum 返回一个累积和。- Parameters
- Keyword Arguments
示例:
>>> # 在一维中累积计算梯形法则,间距隐含为1。 >>> y = torch.tensor([1, 5, 10]) >>> torch.cumulative_trapezoid(y) tensor([3., 10.5]) >>> # 直接计算到每个元素的相同梯形法则以验证 >>> (1 + 5) / 2 3.0 >>> (1 + 10 + 10) / 2 10.5 >>> # 在一维中累积计算梯形法则,间距为2 >>> # 注意:结果与之前相同,但乘以2 >>> torch.cumulative_trapezoid(y, dx=2) tensor([6., 21.]) >>> # 在一维中累积计算梯形法则,间距任意 >>> x = torch.tensor([1, 3, 6]) >>> torch.cumulative_trapezoid(y, x) tensor([6., 28.5]) >>> # 直接计算到每个元素的相同梯形法则以验证 >>> ((3 - 1) * (1 + 5)) / 2 6.0 >>> ((3 - 1) * (1 + 5) + (6 - 3) * (5 + 10)) / 2 28.5 >>> # 对3x3矩阵的每一行累积计算梯形法则 >>> y = torch.arange(9).reshape(3, 3) tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> torch.cumulative_trapezoid(y) tensor([[ 0.5, 2.], [ 3.5, 8.], [ 6.5, 14.]]) >>> # 对矩阵的每一列累积计算梯形法则 >>> torch.cumulative_trapezoid(y, dim=0) tensor([[ 1.5, 2.5, 3.5], [ 6.0, 8.0, 10.0]]) >>> # 对3x3全1矩阵的每一行累积计算梯形法则 >>> # 使用相同的任意间距 >>> y = torch.ones(3, 3) >>> x = torch.tensor([1, 3, 6]) >>> torch.cumulative_trapezoid(y, x) tensor([[2., 5.], [2., 5.], [2., 5.]]) >>> # 对3x3全1矩阵的每一行累积计算梯形法则 >>> # 使用不同的任意间距 >>> y = torch.ones(3, 3) >>> x = torch.tensor([[1, 2, 3], [1, 3, 5], [1, 4, 7]]) >>> torch.cumulative_trapezoid(y, x) tensor([[1., 2.], [2., 4.], [3., 6.]])