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 相关文章推荐
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 Python
python 使用sys.stdin和fileinput读入标准输入的方法
Oct 17 Python
用pycharm开发django项目示例代码
Oct 24 Python
python实现停车管理系统
Nov 30 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
Python中bisect的用法及示例详解
Jul 20 Python
Python切片列表字符串如何实现切换
Aug 06 Python
Python竟然能剪辑视频
May 25 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
理解python中装饰器的作用
Jul 21 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 魔术函数使用说明
2010/02/21 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python写日志文件操作类与应用示例
2019/07/01 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
Why we need EJB
2016/10/20 面试题
研究生自荐信
2013/10/09 职场文书
军人违纪检讨书
2014/02/04 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
《阳光》教学反思
2014/02/23 职场文书
责任书格式范文
2014/07/28 职场文书
流动人口婚育证明
2014/10/19 职场文书
成都人事代理协议书
2014/10/25 职场文书
体育个人工作总结
2015/02/09 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL