整体上来说,和上一节的梯度下降法差不多,不过这次是用Pytorch实现的,调用了其中的一些方法。
需要注意的事项:
①Tensor中包含data和grad,其中data和grad也是Tensor。在更新w.data时,也需要使用w.grad.data。
②与Tensor做运算后得到的值,也是Tensor类型的。
③l.backward()方法会把计算图中所有需要梯度的地方求出来,然后存到对应的参数中,最终将计算图释放。
本次针对 y = w1*x^2+w2 *x+b,利用反向传播算法,求出近似的解。
代码如下:

#   y = 3*x^2+2*x+3
x_data = [1.0,2.0,3.0]
y_data = [8.0,19.0,36.0]
lr=0.01
w1,w2,b = torch.Tensor([1.0,1.0,2.0])
w1.requires_grad=True
w2.requires_grad=True
b.requires_grad=Truedef forward(x):return w1*x**2+w2*x+b
def loss(x,y):return (forward(x)-y)**2
print('Predict (before training)')
for epoch in range(100000):l=0for x,y in zip(x_data,y_data):l = loss(x,y)l.backward()print('\tgrad:',x,y,w1.grad.item(),w2.grad.item(),b.grad.item())w1.data = w1.data-lr*w1.grad.dataw2.data = w2.data-lr*w2.grad.datab.data = b.data-lr*b.grad.dataw1.grad.data.zero_()w2.grad.data.zero_()b.grad.data.zero_()print('Epoch:',epoch,l.item())
print('Finally:','w1=',w1.data.item(),'w2=',w2.data.item(),'b=',b.data.item())

最终结果如下所示:

Finally: w1= 2.999950408935547 w2= 2.0002214908599854 b= 2.999795436859131

努力加油a啊

Pytorch(三) --反向传播相关推荐

  1. 人工智能-作业1:PyTorch实现反向传播

    人工智能-作业1:PyTorch实现反向传播 人工智能-作业1:PyTorch实现反向传播 环境配置: 计算过程 反向传播 PyTorch Autograd自动求导 人工智能-作业1:PyTorch实 ...

  2. pytorch学习 -- 反向传播backward

    pytorch学习 – 反向传播backward 入门学习pytorch,在查看pytorch代码时对autograd的backard函数的使用和具体原理有些疑惑,在查看相关文章和学习后,简单说下我自 ...

  3. 【2021-2022 春学期】人工智能-作业1:PyTorch实现反向传播

    1 安装pycharm,配置好python开发环境 PyCharm 安装教程(Windows) | 菜鸟教程 (runoob.com) 2 安装pytorch PyTorch 3 使用pytorch实 ...

  4. 【Pytorch】反向传播为NaN报错的排查解决方法,RuntimeError: Function ‘BmmBackward0‘ returned nan values

    最近在训练模型的过程中,反复出现方向传播至为NaN的报错,报错信息如下所示: File "/home/fu/anaconda3/envs/torch/lib/python3.7/site-p ...

  5. pytorch loss反向传播出错

    今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 : RuntimeError: grad can be implicitly created only f ...

  6. Pytorch的反向传播backward()详解

    在Pytorch中,我们有时候会进行多个loss的回传,然而回传中,会发生一些错误.例如: RuntimeError: Trying to backward through the graph a s ...

  7. Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现

    因为这章内容比较多,分开来叙述,前面先讲理论后面是讲代码.最重要的是代码部分,结合代码去理解思想. SGD优化器 思想: 根据梯度,控制调整权重的幅度 公式: 权重(新) = 权重(旧) - 学习率 ...

  8. 深度学习笔记三:反向传播(backpropagation)算法

    接上一篇的最后,我们要训练多层网络的时候,最后关键的部分就是求梯度啦.纯数学方法几乎是不可能的,那么反向传播算法就是用来求梯度的,用了一个很巧妙的方法. 反向传播算法应该是神经网络最基本最需要弄懂的方 ...

  9. Lesson 11.1-11.5 梯度下降的两个关键问题反向传播的原理走出第一步:动量法开始迭代:batch和epochs在Fashion—MNIST数据集熵实现完整的神经网络

    在之前的课程中,我们已经完成了从0建立深层神经网络,并介绍了各类神经网络所使用的损失函数.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具A ...

最新文章

  1. 成都(10月24日时代广场)Windows 7社区发布活动
  2. Scala中可以定义多个package
  3. 【音视频安卓开发 (八)】OpenSLES播放音频步骤和接口讲解
  4. ASP.NET取用户浏览器IP地址等信息
  5. mysql主主同步稳定吗_MySQL主主同步
  6. 电脑亮度多少对眼睛好_黄江办公文员学费大概是多少,黄江附近哪个电脑学校比较好一点...
  7. 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
  8. ASP.NET中的图片缓存
  9. 元器件选型实例(如何选一款合适的 DC-DC )
  10. Unity 安装Vuforia配置Android时遇到的问题及解决
  11. PDF 文字识别网站
  12. WPS文档如何删除空白页
  13. Win11启动IE浏览器
  14. NLP 论文领读 | 缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧
  15. 制作和删除软RAID
  16. C#程序设计第三版(李春葆)第12章文件操作课后习题答案
  17. 参加最牛逼的运营人年终聚会,是种什么样的体验
  18. (转)[视频压制/转换技术] I帧 B帧 P帧 IDR帧 等帧用途详细说明
  19. 一份给艺术爱好者的书单
  20. window.print()手动设置纸张的宽高

热门文章

  1. c#如何将子窗体显示到父窗体的容器(panel)控件中
  2. .net remoting 与webservice
  3. C#中的继承与多态还有接口
  4. 树莓派通过VNC连接时分辨率太低
  5. 简单页面跳转生命周期(简单清晰)
  6. Glide加载圆形图片并且带白色边框(绝对实用)
  7. 如何利用计算机完成科研项目,承担科研项目情况怎样填写
  8. php百度编辑器精简版,开源web编辑器|百度编辑器ueditor下载1.4.3.4php版 下载_久友软件下载...
  9. python的数据类型_Python支持哪些数据类型
  10. 老年计算机音乐,老年音乐影集相机V1.2.5