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 代码性能优化技巧分享
Aug 07 Python
Python删除windows垃圾文件的方法
Jul 14 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
Python猴子补丁知识点总结
Jan 05 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
如何在Python 游戏中模拟引力
Mar 27 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
django rest framework使用django-filter用法
Jul 15 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 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
php 三维饼图的实现代码
2008/09/28 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
用JS写的一个TableView控件代码
2010/01/23 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Django框架视图介绍与使用详解
2019/07/18 Python
python实现字典嵌套列表取值
2019/12/16 Python
windows下python安装pip方法详解
2020/02/10 Python
Django数据库操作之save与update的使用
2020/04/01 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
法学专业个人求职信
2013/09/26 职场文书
中国文明网签名寄语
2014/01/18 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android