mindspore.ops.diff
- mindspore.ops.diff(x, n=1, axis=- 1, prepend=None, append=None)[源代码]
按指定轴计算输入tensor的n阶前向差分。
一阶差分的计算公式为:
。 高阶差分通过递归调用mindspore.ops.diff()
实现。说明
不支持空Tensor, 如果传入了空Tensor,会出现ValueError。空Tensor指的是,Tensor的任意一维为零。比如shape为
, 的Tensor都为空Tensor。- 参数:
x (Tensor) - 输入tensor。
n (int,可选) - 计算差分的阶数,目前只支持
1
。默认1
。axis (int,可选) - 计算差分的轴。默认
-1
。prepend (Tensor,可选) - 在计算差分之前,沿 axis 添加到 x 之前的值。它们的维度和必须与输入的维度相同,除维度 axis 外,其余维度的形状必须与输入张量一致。默认
None
。append (Tensor,可选) - 在计算差分之前,沿 axis 添加到 x 之后的值。它们的维度必须与输入的维度相同,除维度 axis 外,其余维度的形状必须与输入张量一致。默认
None
。
- 返回:
一个数据类型与 x 相同,shape与 x 相比在第 axis 维上缩小 n 的tensor。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> x = mindspore.tensor([1, 3, 2]) >>> # case 1: By default, compute the first-order differences along axis -1. >>> mindspore.ops.diff(x) Tensor(shape=[2], dtype=Int64, value= [ 2, -1]) >>> >>> # case 2: When argument prepend is setting: >>> n = mindspore.tensor([4, 5]) >>> mindspore.ops.diff(x, prepend=n) Tensor(shape=[4], dtype=Int64, value= [ 1, -4, 2, -1]) >>> >>> # case 3: When argument append is setting: >>> mindspore.ops.diff(x, append=n) Tensor(shape=[4], dtype=Int64, value= [ 2, -1, 2, 1]) >>> >>> # case 4: When input is 2-D dimensional tensor, compute forward difference along different axis. >>> x = mindspore.tensor([[1, 2, 3], [3, 4, 5]]) >>> mindspore.ops.diff(x, axis=0) Tensor(shape=[1, 3], dtype=Int64, value= [[2, 2, 2]]) >>> mindspore.ops.diff(x, axis=1) Tensor(shape=[2, 2], dtype=Int64, value= [[1, 1], [1, 1]])