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]]]