mindspore.ops.jet

查看源文件
mindspore.ops.jet(fn, primals, series)[源代码]

计算函数或网络输出对输入的高阶微分。给定待求导函数的原始输入和自定义的1到n阶导数,将返回函数输出对输入的第1到n阶导数。一般情况,建议输入的1阶导数值为全1,更高阶的导数值为全0,这与输入对本身的导数情况是一致的。

说明

  • primals 是int型的tensor,会被转化成float32格式进行计算。

参数:
  • fn (Union[Cell, function]) - 待求导的函数或网络。

  • primals (Union[Tensor, tuple[Tensor]]) - fn 的输入。

  • series (Union[Tensor, tuple[Tensor]]) - 输入的原始第1到第n阶导数。tensor第零维度索引 i 对应输出对输入的第 i+1 阶导数。

返回:

tuple(out_primals, out_series)

  • out_primals (Union[Tensor, list[Tensor]]) - fn(primals) 的结果。

  • out_series (Union[Tensor, list[Tensor]]) - fn 输出对输入的第1到n阶导数。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> from mindspore import nn
>>> mindspore.set_context(mode=mindspore.GRAPH_MODE)
>>> class Net(nn.Cell):
...     def __init__(self):
...         super().__init__()
...         self.sin = mindspore.ops.Sin()
...         self.exp = mindspore.ops.Exp()
...     def construct(self, x):
...         out1 = self.sin(x)
...         out2 = self.exp(out1)
...         return out2
>>> primals = mindspore.tensor([[1, 2], [3, 4]], mindspore.float32)
>>> series = mindspore.tensor([[[1, 1], [1, 1]], [[0, 0], [0, 0]], [[0, 0], [0, 0]]], mindspore.float32)
>>> net = Net()
>>> out_primals, out_series = mindspore.ops.jet(net, primals, series)
>>> print(out_primals, out_series)
[[2.319777  2.4825778]
 [1.1515628 0.4691642]] [[[ 1.2533808  -1.0331168 ]
  [-1.1400385  -0.3066662 ]]
 [[-1.2748207  -1.8274734 ]
  [ 0.966121    0.55551505]]
 [[-4.0515366   3.6724353 ]
  [ 0.5053504  -0.52061415]]]