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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
Python读写文件方法总结
Jun 09 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
python实现推箱子游戏
Mar 25 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
python logging添加filter教程
Dec 24 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
python扫描线填充算法详解
Feb 19 Python
Python单例模式的四种创建方式实例解析
Mar 04 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
谈谈python中GUI的选择
2018/03/01 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
Python 元组操作总结
2019/09/18 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
行政办公室岗位职责
2014/03/18 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
Go gorilla/sessions库安装使用
2022/08/14 Golang