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 = ops.MatMul()

    self.z = Parameter(Tensor(np.array([1.0], np.float32)), name='z')

    def construct(self, x, y):

    x = x * self.z

    out = self.matmul(x, y)

    return out

  4. 接着定义求导网络,__init__函数中定义需要求导的网络self.net和ops.GradOperation操作,construct函数中对self.net进行求导。

    求导网络结构如下:

    class GradNetWrtX(nn.Cell):

    def __init__(self, net):

    super(GradNetWrtX, self).__init__()

    self.net = net

    self.grad_op = ops.GradOperation()

    def construct(self, x, y):

    gradient_function = self.grad_op(self.net)

    return gradient_function(x, y)

  5. 定义输入并且打印输出:

    x = Tensor([[0.8, 0.6, 0.2], [1.8, 1.3, 1.1]], dtype=mstype.float32)

    y = Tensor([[0.11, 3.3, 1.1], [1.1, 0.2, 1.4], [1.1, 2.2, 0.3]], dtype=mstype.float32)

    output = GradNetWrtX(Net())(x, y)

    print(output)

    若考虑对x、y输入求导,只需在GradNetWrtX中设置self.grad_op = GradOperation(get_all=True)。

使用MindSpore进行一阶导数计算相关推荐

  1. MindSpore Quantum 量子计算编程与实践:轻松上手量子卷积神经网络

    MindSpore Quantum 量子计算编程与实践:轻松上手量子卷积神经网络 在本文中,我们将介绍一些量子信息的基础知识 和 MindQuantum 量子计算框架的基本用法,最后基于 MindQu ...

  2. 技术干货 | MindSpore AI科学计算系列(五):AI框架加速海洋数值模拟

    01  背景介绍 GOMO模型是一个区域海洋模式,最早由清华大学黄小猛老师基于OpenArray框架开发.海洋模式是指通过一组物理方程来描述海洋的气候变化,不仅可以很好地表征海面温度和高度分布,还能够 ...

  3. MindSpore Science科学计算行业套件——MindSpore Elec电磁仿真套件

    当前多种算力正在激发跨领域的应用融合,AI已经成为研究科学计算的新范式.因此我们将MindSpore拓展到科学计算领域.通过多尺度混合计算和高阶混合微分两大关键创新,将MindSpore原有的AI计算 ...

  4. 华为开源的深度学习框架 MindSpore

    点击蓝字关注我们 扫码关注我们 公众号 : 计算机视觉战队 扫码回复:华为开源,获取下载链接 作者:杨军 来源:知乎 纯技术讨论,不涉及其他,部分我拿不准的地方,会直接以(?)标识出来,欢迎菊花厂同学 ...

  5. 智能基座昇腾高校行 | 昇思MindSpore携手清华大学共同培养新时代科技人才

    智能基座昇腾高校行 计算是人类永恒的需求,是智能世界的源动力,人工智能的发展需要数字化人才的助力.在新一轮科技革命背景下,人工智能扮演着重要角色,伴随着产业的快速升级,也对教育的人才培养提出了新要求. ...

  6. 关于图形学中图像的一阶导数和二阶导数求法

    对于图像求一阶导数和二阶导数可以增强图片或者求图像的边缘. 一阶导数: 我们知道在数学中一阶导数的求法为: 在图形学中由于图片是按像素来离散组成的,所以最小的h取值为1,所以计算后: 所以图像的一阶导 ...

  7. 华为昇腾AI全栈知识深入解读,师资培训沙龙深圳场圆满落幕!

    头图 | 视觉中国 极度缺乏AI人才,已成为中国人工智能产业发展道路上的瓶颈.在国家政策的支持下,众高校初建AI专业者甚多,但高校教师应掌握哪些知识储备来传道授业,大家都是"摸着石头过河&q ...

  8. AI 技术发展飞快,高校 AI 教师的知识储备能满足学生旺盛的求知欲吗?

    2019 年,AI 技术以惊人的速度发展:2020 年,AI 技术成熟的时机已经到来,随之而来的,是越来越旺盛的 AI 人才需求. 近日,国家正式发布了一份<2020 年人工智能产业人才发展报告 ...

  9. ORB-SLAM3中的3d-2d匹配

    作者丨卢涛@知乎 来源丨https://zhuanlan.zhihu.com/p/355848913 编辑丨3D视觉工坊 非完整版注释:https://github.com/smilefacehh/O ...

  10. 一步一步理解GB、GBDT、xgboost

    GBDT和xgboost在竞赛和工业界使用都非常频繁,能有效的应用到分类.回归.排序问题,虽然使用起来不难,但是要能完整的理解还是有一点麻烦的.本文尝试一步一步梳理GB.GBDT.xgboost,它们 ...

最新文章

  1. DataList在无数据记录时显示类似GridView空模板(EmptyDataTemplate)
  2. Apache commons email 使用过程中遇到的问题
  3. Android网络连接异常处理方案
  4. 修改C:\WINDOWS\system32\drivers\etc\hosts 文件有什么作用
  5. 四位达林顿_ULN2069B - 80 V - 1.5 A四路达林顿开关 - STMicroelectronics
  6. leetcode54. 螺旋矩阵(详解)
  7. http请求 url 竖线_http.createServer创建http服务
  8. Hiernate概述
  9. JDK(11)+Tomcat(9.0)+Maven(3.6.0)+Eclipse(2018-9)+SVN插件+Mysql(8.0)+Navicat fo Mysql +postman开发环境搭建
  10. 关掉magiskhide_最新版Magisk-v20.4刷入后找不到Magisk Hide怎么办+Magisk Hide开启教程
  11. 14. PHP 数组排序
  12. chainmaker操作笔记
  13. ryzen linux 搭配显卡,R5 1500X配什么显卡好 适合AMD锐龙5 1500X搭配的显卡推荐
  14. [笔记]Windows核心编程《二十二》注入DLL和拦截API
  15. android 4.3 用什么微信版本,安卓4.3系统能用微信哪个版本
  16. SharePoint Online 触发的Automate工作流的调试
  17. 如何解决:微云下载文件总是下载失败
  18. SSL_read: Failure in SSL library (protocol error?)
  19. win32 007
  20. localhost是什么?

热门文章

  1. 你好,布灵!高瓴人工智能学院首个AI小精灵诞生
  2. 全文检索——Lucene
  3. 8、虚拟串口(VSPT)使用小记
  4. mysql .frm_mysql通过frm向mysql导入表结构及数据
  5. Android BLE GATT CONN LMP TIMEOUT 0x22
  6. lmp91000偏压配置求助
  7. JVM 内存分析神器 MAT: Shallow Heap Vs Retained Heap 你理解的对吗?
  8. (转)pip安装报错:There was a problem confirming the ssl certificate
  9. Unity小地图的实现
  10. Android的SharedPreferences和SQLite