mindspore.ops.vjp

mindspore.ops.vjp(fn, inputs, v)[源代码]

Compute the vector-jacobian-product of the given network.

Parameters
  • fn (Function or Cell) – The function or net that takes Tensor inputs and returns a tensor or tuple of Tensors.

  • inputs (Tensor or tuple or list) – The inputs to fn.

  • v (Tensor or tuple or list) – The shape and type of v should be the same as outputs.

Returns

Tuple, tuple of output and vjp.

  • netout (Tensors or Tuple of Tensors) - The output of “fn(inputs)”.

  • vjp (Tensors or Tuple of Tensors) - The result of the dot product.

Raises

TypeError – If the input is not a tensor or tuple or list of tensors.

Supported Platforms:

Ascend GPU CPU

Examples

>>> from mindspore.ops import functional as F
>>> 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 = F.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]]))