使用MindSpore进行一阶导数计算

本文详细介绍了如何使用MindSpore的GradOperation算子进行一阶导数计算,通过实例展示了对MatMul算子构成的网络的输入求导,并解释了参数get_all、get_by_list和sens_param的作用。同时,给出了对多个输入求导的方法。
摘要由CSDN通过智能技术生成

MindSpore计算一阶导数方法mindspore.ops.GradOperation (get_all=False, get_by_list=False, sens_param=False)。

  1. 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算子的求导做深入分析。

  2. 首先导入本文档需要的模块和接口,如下所示:

    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

  3. 对输入求一阶导

    如果需要对输入进行求导,首先需要定义一个需要求导的网络,以一个由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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值