MindSpore计算一阶导数方法mindspore.ops.GradOperation (get_all=False, get_by_list=False, sens_param=False)。
-
MindSpore计算一阶导数方法mindspore.ops.GradOperation (get_all=False, get_by_list=False, sens_param=False),其中get_all为False时,只会对第一个输入求导,为True时,会对所有输入求导;get_by_list为False时,不会对权重求导,为True时,会对权重求导;sens_param对网络的输出值做缩放以改变最终梯度。下面用MatMul算子的求导做深入分析。
-
首先导入本文档需要的模块和接口,如下所示:
import numpy as np
import mindspore.nn as nn
import mindspore.ops as ops
from mindspore import Tensor
from mindspore import ParameterTuple, Parameter
from mindspore import dtype as mstype
-
对输入求一阶导
如果需要对输入进行求导,首先需要定义一个需要求导的网络,以一个由MatMul算子构成的网络f(x,y)=z∗x∗yf(x,y)=z∗x∗y为例。
定义网络结构如下:
class Net(nn.Cell):
def __init__(self):
super(Net, self).__init__()
self.matmul