《动手学深度学习》 第二天 (自动求梯度)

2.3、自动求梯度

MXNet提供的autograd模块可以用来自动求梯度。

2.3.1 一个简单的栗子

这里我们要求对函数 y = 2xTx (2乘以x的转秩乘以X)求关于列向量 x 的梯度。(使用jupyter notebook)

1、 创建变量x,并赋初值

x = nd.arange(4).reshape((4,1))  # 4行一列
x

在这里插入图片描述
2、 调用attach_grad函数来申请存储梯度所需要的内存

x.attach_grad()    #为了求有关变量x的梯度

3、 为减少计算和内存开销,默认条件下MXNet不会记录用于求梯度的计算,这里我们需要调用 record函数 来要求MXNet记录与求梯度有关的计算

with autograd.record():y = 2 * nd.dot(x.T, x)

4、 通过调用backward函数自动求梯度

y.backward()

这里可以验证一下答案是否正确,我们知道,原函数的梯度是4x。

assert(x.grad - 4 * x).norm().asscalar() == 0
x.grad

在这里插入图片描述

2.3.2 训练模型和预测模型

默认情况下,autograd会将运行模式从预测模式转为训练模式,这时可以通过调用 is_training 函数来查看

print(autograd.is_training())
with autograd.record():print(autograd.is_training())

在这里插入图片描述

2.3.3 对Python控制流求梯度

即使函数的计算图包含了Python的控制流,我们还是可能使用MXNet对变量求梯度。
example

def f(a):b = a * 2while b.norm().asscalar() < 1000:b = b * 2if b.sum().asscalar() > 0:c = belse:c = 100 * breturn c

仍然使用record函数记录计算,调用backward函数求梯度

a = nd.random.normal(shape=1)
a.attach_grad()
with autograd.record():c = f(a)
c.backward()

验证是否正确

a.grad == c / a

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS DOM节点增删改查 属性设置

一.节点操作增createElement(name)创建元素 appendChild();将元素添加 删获得要删除的元素 获得它的父元素 使用removeChild()方法删除 改第一种方式:使用上面增和删结合完成修改第二中方式:使用setAttribute();方法修改属性 使用innerHTML属性修改元素的内容 查<s…

CMake基本用法与项目编译

1.简介 1.1 CMake编译项目主要是 通过编写CMakeList.txt文件项目的每个子文件夹下分别编写CMakeList.txt&#xff0c;通过CMake工具来根据CMakeList文件生成makefile&#xff0c;最后编译成可执行文件。 1.2 通过CMake可以编译不同版本的vs项目&#xff0c;方便在不同版本的vs…

《动手学深度学习》 第二天 (线性回归)

3.2 线性回归的从零开始实现 只利用NDArray和autograd来实现一个线性回归的训练。 首先&#xff0c;导入本节中实验所需的包或模块&#xff0c;其中的matplotlib包可用于作图&#xff0c;且设置成嵌入显示。 %matplotlib inline from IPython import display from matplotli…

Gartner发布2021年新兴技术成熟度曲线

来源&#xff1a;Gartner中国8月24日&#xff0c;Gartner 公司最新发布了“2021年新兴技术成熟度曲线”&#xff08;Hype Cycle for Emerging Technologies&#xff0c;2021&#xff09;。其中&#xff0c;建立信任&#xff0c;加速增长以及塑造变革将是三大主要趋势&#xff0…

Vue语法学习第一课——插值

学习关于Vue的插值语法 ① 文本值 &#xff1a; "Mustache"语法&#xff0c;即双大括号 1 <span>Message:{{msg}}</span> 注&#xff1a;双大括号中的msg值改变&#xff0c;插入的内容也会随之改变&#xff0c;可通过v-once指令限制&#xff0c;但会影响…

计算方法之方程求根、线性方程组求解、插值方法、数值积分简介

提示:本文章主要通过介绍方程求根、线性方程组求解、插值方法、数值积分等相关方法的理论知识,并运用相关方法来解决一个实际的问题,文章中简单介绍了二分法、不动点迭代,牛顿法、Scant Method等方程求根方法,Gauss-Seidel迭代,Jacobi迭代,SOR迭代,Gauss消元法等方程组…

hadoop 重新格式化 NameNode

【问题描述】 在安装配置hadoop的过程中&#xff0c;很可能发生错误导致datanode或者namenode 启动失败&#xff0c;这时我们可以选择重新格式化 namenode。 一、删除data数据和log日志 二 、使用命令 bin/dfs namenode -format 重新格式化 【注意事项】 为什么不能一直格式…

人工智能“上位”会让程序员消失吗?

大脑以及二进制代码&#xff08;图&#xff1a;Canva&#xff09;来源&#xff1a;Forbes作者&#xff1a;Nisha Talagala编译整理&#xff1a;科技行者写代码已经成了许多工作的一项关键技能。一些国家和学校甚至认为&#xff0c;编程语言是一种可以接受的外语。而在各种熙熙攘…

分类的IP地址

现有物理地址再有IP地址IP地址的表示方法为点分十进制法IP地址的设计思想&#xff1a;网络部分 主机部分 分类的IP地址 特征&#xff1a;根据不同特征的IP地址&#xff0c;事先约定好网络号所占的位数和主机号所占的位数。 A类地址 全球一共有27-2 个A类网络&#xff0c;每…

人工智能之深度优先,广度优先,贪婪最佳优先搜索,A*搜索以及爬山法与遗传算法

项目场景: 1. 分别用宽度优先、深度优先、贪婪算法和A*算法求解“罗马利亚度假问题”。 2. 分别用爬山法和GA算法求解n皇后问题。 文章目录 项目场景:一、度假场景1.1 问题描述2.1 问题分析:1.3 解决方案:1.4 运行结果二、N皇后问题2.1 问题描述2.2 数据存储结构2.3 算法思…

操作系统之多级队列调度算法,银行家算法,动态分区式存储区管理

题目描述: 1.对于多级队列调度算法,主要介绍轮转法,短进程优先算法;银行家算法主要介绍进程的资源分配策略; 2.对于动态分区式存储区管理,主要介绍首先适应法,最佳适应法,最坏适应法等调度算法。 文章目录 题目描述:程序功能及设计思路1. 多级队列调度算法函数设计2. …

卫星对于物联网来说是一个非常好的选择

ALAMY来源&#xff1a;IEEE电气电子工程师对许多人来说&#xff0c;“物联网”一词可能会让人想起智能城市的努力&#xff0c;比如配备交通摄像头和空气质量传感器的路灯&#xff0c;或者在自己家里连接设备。一个很自然的问题是&#xff0c;为什么你从没想使用卫星连接任何这些…

利用子网掩码划分子网

分类IP地址的弊端 一个物理网络不能过大&#xff0c;否则网络性能很差&#xff0c;某个B类或A类IP网络无法全部用于单个物理网络分类IP地址分配不合理&#xff0c;利用率低分类IP地址设计的弊端 —— 不灵活&#xff0c;IP地址利用率不高 划分子网的思路 网络管理员将本应属于…

springcloud流程图

自己画的&#xff1a; 别人画的 别人画的2 转载于:https://www.cnblogs.com/dzhou/p/10504215.html

编译原理之LR语法分析器,自动机

本博客主要介绍LR语法分析器的代码实现,包含完整的测试数据与源代码。 文章目录 1. 主要内容:2.实验过程2.1 实验数据2.2 源代码1. 主要内容: LR语法分析器理论:https://blog.csdn.net/qq_40294512/article/details/92621241 2.实验过程 2.1 实验数据 G.txt数据文件 E-&…

java 搭建 web服务器 socket实现

【写在前面】 云计算的第n个java作业&#xff0c;开始一直不懂为什么老师一直让我们写java web的小demo&#xff0c;不应该是hadoop啥的直接上框架嘛。后来慢慢了解到&#xff0c;其实java web 的一些内容确实是云计算的基础。这个demo是用java socket 来搭建一个web服务器&…

【趋势】未来十年计算机体系结构的历史和趋势

来源&#xff1a;机器之心先分享我对这篇文章的总结&#xff0c;或者我得到的启发&#xff1a;1、DSA&#xff08;Domain-Specific Architectures&#xff0c;特定领域的体系结构&#xff09;将成为未来十年甚至更长时间&#xff0c;计算机体系结构的趋势。登纳德缩放定律结束、…

BZOJ3064 CPU监控

题目链接&#xff1a;戳我 比较神仙的一个题&#xff08;至少对于我这个小蒟蒻来说。。。&#xff09;下面尽可能详细地解释一下吧。。。学习来源&#xff1a;这位神仙的题解 其实就是对于操作的转换。我们设(x,y)为操作的参数&#xff0c;设当前数为a&#xff0c;操作为max(ax…

java socket 实现增删改查 + 在线答题小案例

实现效果 &#xff08;1&#xff09; 在client端可以实现对数据库的操作&#xff08;Select&#xff0c;Insert&#xff0c;Update&#xff0c;Delete&#xff09; &#xff08;2&#xff09;数据库中创建一个考试表和学生表&#xff0c;考试表中问题是四项选择题&#xff08;…

90后斯坦福博士论文登Science封面!AI算法准确预测RNA三维结构

来源&#xff1a;Science编辑&#xff1a;yaxin、su「我们对大部分RNA的结构几乎一无所知。」半个世纪以来&#xff0c;确定生物分子的三维结构一直困惑着科学家&#xff0c;也是生物学的重大挑战之一。难就难在&#xff0c;RNA折叠成复杂三维结构的形状很难通过实验或计算来确…