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给文本创立向量空间模型的教程
Apr 23 Python
python开发之list操作实例分析
Feb 22 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
python在OpenCV里实现投影变换效果
Aug 30 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
python数据类型可变不可变知识点总结
Mar 06 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
Oct 18 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
Python利器openpyxl之操作excel表格
Apr 17 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
js模块加载方式浅析
2017/08/12 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python实现批量下载图片的方法
2015/07/08 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
抽象类和接口的区别
2012/09/19 面试题
一套中级Java程序员笔试题
2015/01/14 面试题
进修护士自我鉴定
2013/10/14 职场文书
求职毕业生自荐书
2014/02/08 职场文书
扬尘污染防治方案
2014/06/15 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
总经理致辞
2015/07/29 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python