问题描述:
【功能模块】
mindspore.ops.GradOperation
【操作步骤&问题现象】
我想实现如下所示的一个函数
可是在华为的官方实现中,只有mindspore.ops.GradOperation,我有两个问题:第一个我怎么去求这个复合函数的二阶导f(interpolate(x))?第二个是我怎么控制Tensor是否进行反向传播?pytorch可以这样控制
for p in self.D.parameters():
p.requires_grad = False
mindspore应该怎么设置呢?set_grad(requires_grad=False)是否可以控制呢
【软硬件信息】
Ascend910A
Python3.7.5
mindspore1.1.1
gcc7.3.0
【日志信息】(可选,上传日志内容或者附件)
解决方案:
第一点,我们当前的求反向接口是GradOperation,支持对网络和函数求反向。
如果`f(interpolate(x))`在网络内部是会对其自动微分,如果你想单独只对这个求微分,当前并不支持这种操作。
第二点,MindSpore也有控制Parameter是否求梯度的接口。
就是在初始化Parameter的时候,设置传入参数requires_grad为True或者False。
例如,self.weight = Parameter([1.0, 2.0, 3.0], name="weight", requires_grad=False)。