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 相关文章推荐
wxPython中文教程入门实例
Jun 09 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
python2 与 python3 实现共存的方法
Jul 12 Python
python 除法保留两位小数点的方法
Jul 16 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
调整Jupyter notebook的启动目录操作
Apr 10 Python
python 爬虫请求模块requests详解
Dec 04 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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
Python变量类型知识点总结
2019/02/18 Python
python实现梯度下降法
2020/03/24 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
费用会计岗位职责
2014/01/01 职场文书
财务会计专业自荐书
2014/06/30 职场文书
培训科主任岗位职责
2014/08/08 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
行为规范主题班会
2015/08/13 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL