mindelec.operators.SecondOrderGrad
- class mindelec.operators.SecondOrderGrad(model, input_idx1, input_idx2, output_idx)[源代码]
计算并返回指定输出列相对于指定输入列的二阶梯度。
- 参数:
model (Cell) - 接受单个Tensor输入并返回单个Tensor的函数或网络。
input_idx1 (int) - 指定输入的列索引,以生成一阶导数。取值范围为[0,网络输入维度 - 1]。
input_idx2 (int) - 指定输入的列索引,以生成二阶导数。取值范围为[0,网络输入维度 - 1]。
output_idx (int) - 指定输出的列索引。取值范围为[0,网络输出维度 - 1]。
- 输入:
input - 给定函数或网络 model 的输入。
- 输出:
Tensor。
- 异常:
TypeError - 如果 input_idx1 、 input_idx2 或 output_idx 的类型不是int。
- 支持平台:
Ascend
样例:
>>> 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.]]