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的导数,基本公式在下方

注意点

我们使用.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使用教程-PyTorch构建神经网络(上)

PyTorch使用教程-导数应用相关推荐

  1. 深度学习之Pytorch基础教程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...

  2. 【深度学习】深度学习之Pytorch基础教程!

    作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展,深度学习框架开始大量的出现.尤其是近两年,Google.Facebook.Microsoft等巨头都围绕深度学习重点投资了一系 ...

  3. pytorch官方教程中文版(一)PyTorch介绍

    pytorch编程环境是1.9.1+cu10.2 建议有能力的直接看官方网站英文版! 下面所示是本次教程的主要目录: pytorch官方教程中文版: PyTorch介绍 学习PyTorch 图像和视频 ...

  4. pytorch官方教程中文版(二)学习PyTorch

    pytorch编程环境是1.9.1+cu10.2 建议有能力的直接看官方网站英文版! 下面所示是本次教程的主要目录: pytorch官方教程中文版: PyTorch介绍 学习PyTorch 图像和视频 ...

  5. PyTorch官方教程大更新:增加标签索引,更加新手友好

    点击上方↑↑↑"视学算法"关注我 来源:公众号 量子位 授权 PyTorch官方教程,现已大幅更新: 提供标签索引,增加主题分类,更加新手友好. 不必再面对一整页教学文章茫然无措, ...

  6. PyTorch 官方教程发布,限时免费开放!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 PyTorch 如今已经称为最受欢迎的深度学习框架之一了!2019年1月到6月底,在arXiv ...

  7. 撒花!PyTorch 官方教程中文版正式上线,激动人心的大好事!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 什么是 PyTorch?其实 PyTorch 可以拆成两部分:Py+Torch.Py 就是 P ...

  8. PyTorch官方教程大更新:增加标签索引,新手更加友好

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推 ...

  9. PyTorch官方教程《Deep Learning with PyTorch》开源分享,LeCun力荐,通俗易懂

    1 前言 谈到深度学习框架,就不得不谈TensorFlow 和 PyTorch .目前来看,TensorFlow 和 PyTorch 框架是业界使用最为广泛的两个深度学习框架, TensorFlow在 ...

最新文章

  1. 无法远程分发安装软件原因
  2. other than ,more than,less than,rather than到底有什么区别
  3. OpenCV优化:图像的遍历4种方式
  4. Python初学者之ModuleNotFoundError:No module named 'cv2'简单解决办法
  5. CSS浏览器兼容性问题详解总结
  6. 机器人 铑元素_中国青年化学家元素周期表专辑 | 胡淑贤:我为镨代言
  7. 配置openldap_openldap环境搭建+集成JIRA服务
  8. 菜鸟学Linux 第026篇笔记 LVM
  9. 粒子群优化算法python_粒子群优化算法(PSO)
  10. python3 -m pip install pymongo_Python3上Pymongo的SSL握手问题
  11. Serv-U FTP服务器安装带绿化版工具
  12. Mac版Lync无法登陆问题(登录设置)
  13. 计算机病毒是如何入侵你的电脑吗,怎么样正确处理被病毒侵入的电脑
  14. 计算机cpu的介绍,CPU的详细介绍
  15. cad动态块制作翻转_cad创建动态块实例教程:翻转参数和动作的应用 - CAD自学网...
  16. 手机wifi的mac地址是什么??
  17. SPSS(基础篇09)--拆分数据文件
  18. 1011: [HNOI2008]遥远的行星
  19. 超越大典汽车维修系统
  20. Vue实现底部导航栏切换页面及图片

热门文章

  1. springboot使用jasper实现报表demo
  2. Morton Code
  3. 酸了,深圳一普通中学老师工资单曝光,秒杀99.9%的程序员!
  4. 旧DVD驱动器没用了?DIY一个Arduino Mini数控绘图机吧
  5. 项目之显示问题和回答问题(12)
  6. ARM上的linux如何实现无线网卡的冷插拔和热插拔
  7. 宝塔启动Nginx报错
  8. MyBatis入门基础3 ---代理
  9. 验证码识别软件的六大钻石亮点!
  10. 母乳一般分为四个阶段:初乳、过渡乳、成熟乳和晚乳。//2021-2-9