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 BeautifulSoup使用方法详解
Nov 21 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
python机器学习之神经网络(二)
Dec 20 Python
Python爬虫之正则表达式的使用教程详解
Oct 25 Python
python实现人工智能Ai抠图功能
Sep 05 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 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语法(2)
2006/10/09 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
php正则表达式(regar expression)
2011/09/10 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
文明寝室标语
2014/06/13 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Python自动化测试PO模型封装过程详解
2021/06/22 Python
Python各协议下socket黏包问题原理
2022/04/12 Python
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers