mindelec.operators.Grad

class mindelec.operators.Grad(model, argnum=0)[源代码]

计算并返回指定输出列相对于指定输入列的梯度。

参数:
  • model (Cell) - 接受Tensor输入的函数或网络。

  • argnum (int) - 指定输出采用的一阶导数的输入。默认值:0。

输入:
  • x (list) - 输入是可变长度参数。第一个输入是二维的网络输入(Tensor),最后三个输入是输入的列索引(int)、输出的列索引(int)和网络的输出(Tensor)。

输出:

输出为Tensor,为指定的输出列对指定的输入列的梯度,由输入 x 中的第二、第三个参数指定。

异常:
  • TypeError - 如果 argnum 的类型不是int。

支持平台:

Ascend

样例:

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