mindelec.operators.SecondOrderGrad

class mindelec.operators.SecondOrderGrad(model, input_idx1, input_idx2, output_idx)[source]

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

Parameters
  • model (Cell) – a function or network that takes a single Tensor input and returns a single Tensor.

  • input_idx1 (int) – specifies the column index of input to take the first derivative, takes values in [0, model input size - 1].

  • input_idx2 (int) – specifies the column index of input to take the second derivative, takes values in [0, model input size - 1].

  • output_idx (int) – specifies the column index of output, takes values in [0, model output size - 1].

Inputs:
  • input - The input of given function or network model.

Outputs:

Tensor.

Raises

TypeError – If the type of input_idx1, input_idx2 or output_idx is not int.

Supported Platforms:

Ascend

Examples

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