PyTorch 导数应用的使用教程


Posted in Python onAugust 31, 2020

前言

由于机器学习的基本思想就是找到一个函数去拟合样本数据分布,因此就涉及到了梯度去求最小值,在超平面我们又很难直接得到全局最优值,更没有通用性,因此我们就想办法让梯度沿着负方向下降,那么我们就能得到一个局部或全局的最优值了,因此导数就在机器学习中显得非常重要了

PyTorch 导数应用的使用教程

基本使用

tensor.backward()可以及自动将梯度累加积到tensor.grad

x = torch.ones(3,3)
print(x.requires_grad)
x.requires_grad_(True)
print(x.requires_grad)
y = x**2/(x-2)
out = y.mean()
print(x.grad)
out.backward()
print(x.grad)

False
True
None
tensor([[-0.3333, -0.3333, -0.3333],
        [-0.3333, -0.3333, -0.3333],
        [-0.3333, -0.3333, -0.3333]])

requires_grad 可以获取到tensor是否可导
requires_grad_() 可以设置tensor是否可导
grad 查看当前tensor导数

上面的公式很简单,程序含义

1/4 * (x**2) / (x-2)

求x的导数,基本公式在下方

PyTorch 导数应用的使用教程

注意点

我们使用.mean后得到的是标量,如果不是标量会报错

x = torch.ones(3, requires_grad=True)
y = x * 2
y = y * 2
print(y)
tensor([4., 4., 4.], grad_fn=<MulBackward0>)
y.backward()
print(x.grad)

报错

RuntimeError: grad can be implicitly created only for scalar outputs

v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward()
print(x.grad)
tensor([4.0000e-01, 4.0000e+00, 4.0000e-04])

no_grad()作用域

如果想要某部分程序不可导那么我们可以使用这个

x = torch.ones(3, requires_grad=True)
y = x * 2
print(y.requires_grad)
with torch.no_grad():
 y = y * 2 
 print(y.requires_grad)

True
False

总结

这一章我们使用pytorch里面的backward,自动实现了函数的求导,帮助我们在后面面对很多超大参数量的函数的时候,求导就变得游刃有余

上节

到此这篇关于PyTorch 导数应用的使用教程的文章就介绍到这了,更多相关PyTorch 导数应用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python有证书的加密解密实现方法
Nov 19 Python
python实现的文件同步服务器实例
Jun 02 Python
浅谈Python peewee 使用经验
Oct 20 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
Django+Celery实现定时任务的示例
Jun 23 Python
PyTorch安装与基本使用详解
Aug 31 #Python
pycharm 添加解释器的方法步骤
Aug 31 #Python
解决Windows下python和pip命令无法使用的问题
Aug 31 #Python
Python函数__new__及__init__作用及区别解析
Aug 31 #Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 #Python
python自动提取文本中的时间(包含中文日期)
Aug 31 #Python
Python Selenium自动化获取页面信息的方法
Aug 31 #Python
You might like
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Python 实现简单的客户端认证
2020/07/29 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
楼面部长岗位职责范本
2014/02/14 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
2014年体育部工作总结
2014/11/13 职场文书
小学生优秀评语
2014/12/29 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
毕业论文致谢范文
2015/05/14 职场文书
党员转正介绍人意见
2015/06/03 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
pytorch实现手写数字图片识别
2021/05/20 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python