mindspore.ops.vjp
- mindspore.ops.vjp(fn, inputs, v)[源代码]
计算给定网络的向量雅可比积(vector-jacobian-product, VJP)。VJP对应 反向模式自动微分。
Note
此接口未來会变动。
- 参数:
fn (Union[Function, Cell]) - 待求导的函数或网络。以Tensor为入参,返回Tensor或Tensor数组。
inputs (Union[Tensor, tuple[Tensor], list[Tensor]]) - 输入网络 fn 的入参。
v (Union[Tensor, tuple[Tensor], list[Tensor]]) - 与雅可比矩阵相乘的向量,shape和type与网络的正向计算结果一致。
- 返回:
net_output (Union[Tensor, tuple[Tensor]]) - 输入网络的正向计算结果。
vjp (Union[NoneType, int, tuple[int]]) - 向量雅可比积的结果。
- 异常:
TypeError - inputs 或 v 类型不符合要求。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import numpy as np >>> from mindspore import ops >>> from mindspore import Tensor >>> class Net(nn.Cell): ... def construct(self, x, y): ... return x**3 + y >>> x = Tensor(np.array([[1, 2], [3, 4]]).astype(np.float32)) >>> y = Tensor(np.array([[1, 2], [3, 4]]).astype(np.float32)) >>> v = Tensor(np.array([[1, 1], [1, 1]]).astype(np.float32)) >>> output = ops.vjp(Net(), (x, y), v) >>> print(output[0]) [[ 2. 10.] [30. 68.]] >>> print(output[1]) (Tensor(shape=[2, 2], dtype=Float32, value= [[ 3.00000000e+00, 1.20000000e+01], [ 2.70000000e+01, 4.80000000e+01]]), Tensor(shape=[2, 2], dtype=Float32, value= [[ 1.00000000e+00, 1.00000000e+00], [ 1.00000000e+00, 1.00000000e+00]]))