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 29 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
Python3使用pandas模块读写excel操作示例
Jul 03 Python
Python json模块dumps、loads操作示例
Sep 06 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
python 用下标截取字符串的实例
Dec 25 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
Python创建文件夹与文件的快捷方法
Dec 08 Python
Python实现视频中添加音频工具详解
Dec 06 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编程开发“虚拟域名”系统
2006/10/09 PHP
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
js实现手机发送验证码功能
2017/03/13 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
自学python用什么系统好
2020/06/23 Python
django rest framework 过滤时间操作
2020/07/12 Python
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
中专生求职自荐信范文
2013/12/22 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
二年级语文教学反思
2014/02/02 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书