Pytorch(三) --反向传播
整体上来说,和上一节的梯度下降法差不多,不过这次是用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:PyTorch实现反向传播
人工智能-作业1:PyTorch实现反向传播 人工智能-作业1:PyTorch实现反向传播 环境配置: 计算过程 反向传播 PyTorch Autograd自动求导 人工智能-作业1:PyTorch实 ...
- pytorch学习 -- 反向传播backward
pytorch学习 – 反向传播backward 入门学习pytorch,在查看pytorch代码时对autograd的backard函数的使用和具体原理有些疑惑,在查看相关文章和学习后,简单说下我自 ...
- 【2021-2022 春学期】人工智能-作业1:PyTorch实现反向传播
1 安装pycharm,配置好python开发环境 PyCharm 安装教程(Windows) | 菜鸟教程 (runoob.com) 2 安装pytorch PyTorch 3 使用pytorch实 ...
- 【Pytorch】反向传播为NaN报错的排查解决方法,RuntimeError: Function ‘BmmBackward0‘ returned nan values
最近在训练模型的过程中,反复出现方向传播至为NaN的报错,报错信息如下所示: File "/home/fu/anaconda3/envs/torch/lib/python3.7/site-p ...
- pytorch loss反向传播出错
今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 : RuntimeError: grad can be implicitly created only f ...
- Pytorch的反向传播backward()详解
在Pytorch中,我们有时候会进行多个loss的回传,然而回传中,会发生一些错误.例如: RuntimeError: Trying to backward through the graph a s ...
- Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现
因为这章内容比较多,分开来叙述,前面先讲理论后面是讲代码.最重要的是代码部分,结合代码去理解思想. SGD优化器 思想: 根据梯度,控制调整权重的幅度 公式: 权重(新) = 权重(旧) - 学习率 ...
- 深度学习笔记三:反向传播(backpropagation)算法
接上一篇的最后,我们要训练多层网络的时候,最后关键的部分就是求梯度啦.纯数学方法几乎是不可能的,那么反向传播算法就是用来求梯度的,用了一个很巧妙的方法. 反向传播算法应该是神经网络最基本最需要弄懂的方 ...
- Lesson 11.1-11.5 梯度下降的两个关键问题反向传播的原理走出第一步:动量法开始迭代:batch和epochs在Fashion—MNIST数据集熵实现完整的神经网络
在之前的课程中,我们已经完成了从0建立深层神经网络,并介绍了各类神经网络所使用的损失函数.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具A ...
最新文章
- 成都(10月24日时代广场)Windows 7社区发布活动
- Scala中可以定义多个package
- 【音视频安卓开发 (八)】OpenSLES播放音频步骤和接口讲解
- ASP.NET取用户浏览器IP地址等信息
- mysql主主同步稳定吗_MySQL主主同步
- 电脑亮度多少对眼睛好_黄江办公文员学费大概是多少,黄江附近哪个电脑学校比较好一点...
- 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
- ASP.NET中的图片缓存
- 元器件选型实例(如何选一款合适的 DC-DC )
- Unity 安装Vuforia配置Android时遇到的问题及解决
- PDF 文字识别网站
- WPS文档如何删除空白页
- Win11启动IE浏览器
- NLP 论文领读 | 缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧
- 制作和删除软RAID
- C#程序设计第三版(李春葆)第12章文件操作课后习题答案
- 参加最牛逼的运营人年终聚会,是种什么样的体验
- (转)[视频压制/转换技术] I帧 B帧 P帧 IDR帧 等帧用途详细说明
- 一份给艺术爱好者的书单
- window.print()手动设置纸张的宽高
热门文章
- c#如何将子窗体显示到父窗体的容器(panel)控件中
- .net remoting 与webservice
- C#中的继承与多态还有接口
- 树莓派通过VNC连接时分辨率太低
- 简单页面跳转生命周期(简单清晰)
- Glide加载圆形图片并且带白色边框(绝对实用)
- 如何利用计算机完成科研项目,承担科研项目情况怎样填写
- php百度编辑器精简版,开源web编辑器|百度编辑器ueditor下载1.4.3.4php版 下载_久友软件下载...
- python的数据类型_Python支持哪些数据类型
- 老年计算机音乐,老年音乐影集相机V1.2.5