mindelec.operators.Grad

class mindelec.operators.Grad(model, argnum=0)[source]

Computes and returns the gradients of the specified column of outputs with respect to the specified column of inputs.

Parameters
  • model (Cell) – a function or network that takes Tensor inputs.

  • argnum (int) – specifies which input the output takes the first derivative of. Default: 0.

Inputs:
  • x (list) - The input is variable-length argument. The first input is a 2D network inputs (Tensor), the last three inputs are column index of input (int), column index of output (int) and output of network (Tensor).

Outputs:

Tensor. The gradients of the specified column of outputs with respect to the specified column of inputs.

Raises

TypeError – If the type of argnum is not int.

Supported Platforms:

Ascend

Examples

>>> import numpy as np
>>> from mindspore import nn, Tensor
>>> from mindelec.operators import Grad
...
>>> class Net(nn.Cell):
...    def __init__(self):
...        super(Net, self).__init__()
...    def construct(self, x):
...        return x * x
...
>>> x = Tensor(np.array([[1.0, -2.0], [-3.0, 4.0]]).astype(np.float32))
>>> net = Net()
>>> out = net(x)
>>> grad = Grad(net)
>>> print(grad(x, 0, 0, out).asnumpy())
[[ 2.]
 [-6.]]