Pytorch反向求导更新网络参数的方法


Posted in Python onAugust 17, 2019

方法一:手动计算变量的梯度,然后更新梯度

import torch
from torch.autograd import Variable
# 定义参数
w1 = Variable(torch.FloatTensor([1,2,3]),requires_grad = True)
# 定义输出
d = torch.mean(w1)
# 反向求导
d.backward()
# 定义学习率等参数
lr = 0.001
# 手动更新参数
w1.data.zero_() # BP求导更新参数之前,需先对导数置0
w1.data.sub_(lr*w1.grad.data)

一个网络中通常有很多变量,如果按照上述的方法手动求导,然后更新参数,是很麻烦的,这个时候可以调用torch.optim

方法二:使用torch.optim

import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.optim as optim
# 这里假设我们定义了一个网络,为net
steps = 10000
# 定义一个optim对象
optimizer = optim.SGD(net.parameters(), lr = 0.01)
# 在for循环中更新参数
for i in range(steps):
 optimizer.zero_grad() # 对网络中参数当前的导数置0
 output = net(input) # 网络前向计算
 loss = criterion(output, target) # 计算损失
 loss.backward() # 得到模型中参数对当前输入的梯度
 optimizer.step() # 更新参数

注意:torch.optim只用于参数更新和对参数的梯度置0,不能计算参数的梯度,在使用torch.optim进行参数更新之前,需要写前向与反向传播求导的代码

以上这篇Pytorch反向求导更新网络参数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python抓取某汽车网数据解析html存入excel示例
Dec 04 Python
python使用递归解决全排列数字示例
Feb 11 Python
python简单程序读取串口信息的方法
Mar 13 Python
python如何查看系统网络流量的信息
Sep 12 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
python调用API实现智能回复机器人
Apr 10 Python
用Python配平化学方程式的方法
Jul 20 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
opencv python图像梯度实例详解
Feb 04 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
Python下载的11种姿势(小结)
Nov 18 Python
pytorch 模型可视化的例子
Aug 17 #Python
pytorch 输出中间层特征的实例
Aug 17 #Python
基于pytorch的保存和加载模型参数的方法
Aug 17 #Python
pytorch 固定部分参数训练的方法
Aug 17 #Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 #Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 #Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 #Python
You might like
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
用jscript实现列出安装的软件列表
2007/06/18 Javascript
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
node网页分段渲染详解
2016/09/05 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
Python 比较两个数组的元素的异同方法
2017/08/17 Python
PyQt5每天必学之组合框
2018/04/20 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
详解Python正则表达式re模块
2019/03/19 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
pytorch实现查看当前学习率
2020/06/24 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
基于Python 函数和方法的区别说明
2021/03/24 Python
2014年体育工作总结
2014/11/24 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers