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中的数据类型
May 05 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
python远程连接MySQL数据库
Apr 19 Python
Python求离散序列导数的示例
Jul 10 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
python数据化运营的重要意义
Nov 25 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
python 通过使用Yolact训练数据集
Apr 06 Python
Python 数据可视化之Matplotlib详解
Nov 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
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
canvas实现动态小球重叠效果
2017/02/06 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
JavaScript快速调试的两个技巧
2020/11/04 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
Python 字符串中的字符倒转
2008/09/06 Python
Python小进度条显示代码
2019/03/05 Python
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
党员群众路线对照检查材料
2014/08/31 职场文书
学校开学标语
2014/10/06 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
实习生矿工检讨书
2014/10/13 职场文书
党员年度个人总结
2015/02/14 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
python tkinter Entry控件的焦点移动操作
2021/05/22 Python