diff¶
沿着指定轴计算输入 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]])