diff

paddle. diff ( x, n=1, axis=- 1, prepend=None, append=None, name=None ) [源代码]

沿着指定轴计算输入 Tensor 的 n 阶前向差值,一阶的前向差值计算公式如下:

\[out[i] = x[i+1] - x[i]\]

注解

高阶的前向差值可以通过递归的方式进行计算,`n`的值支持任意正整数。

参数

  • x (Tensor) - 待计算前向差值的输入 Tensor,支持 bool、int32、int64、float16、float32、float64 数据类型。

  • n (int,可选) - 需要计算前向差值的次数,`n`的值支持任意正整数,默认值为 1。

  • axis (int,可选) - 沿着哪一维度计算前向差值,默认值为-1,也即最后一个维度。

  • prepend (Tensor,可选) - 在计算前向差值之前,沿着指定维度 axis 附加到输入 x 的前面,它的维度需要和输入一致,并且除了 axis 维外,其他维度的形状也要和输入一致,默认值为 None。

  • append (Tensor,可选) - 在计算前向差值之前,沿着指定维度 axis 附加到输入 x 的后面,它的维度需要和输入一致,并且除了 axis 维外,其他维度的形状也要和输入一致,默认值为 None。

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

返回

前向差值计算后的 Tensor,数据类型和输入一致。

代码示例:

>>> import paddle

>>> x = paddle.to_tensor([1, 4, 5, 2])
>>> out = paddle.diff(x)
>>> out
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[ 3,  1, -3])

>>> x_2 = paddle.to_tensor([1, 4, 5, 2])
>>> out = paddle.diff(x_2, n=2)
>>> out
Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True,
[ -2,  -4])

>>> y = paddle.to_tensor([7, 9])
>>> out = paddle.diff(x, append=y)
>>> out
Tensor(shape=[5], dtype=int64, place=Place(cpu), stop_gradient=True,
[ 3,  1, -3,  5,  2])

>>> z = paddle.to_tensor([[1, 2, 3], [4, 5, 6]])
>>> out = paddle.diff(z, axis=0)
>>> out
Tensor(shape=[1, 3], dtype=int64, place=Place(cpu), stop_gradient=True,
[[3, 3, 3]])
>>> out = paddle.diff(z, axis=1)
>>> out
Tensor(shape=[2, 2], dtype=int64, place=Place(cpu), stop_gradient=True,
[[1, 1],
 [1, 1]])