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脚本实时处理log文件的方法
Nov 21 Python
Python Flask-web表单使用详解
Nov 18 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
Python3之字节串bytes与字节数组bytearray的使用详解
Aug 27 Python
python读取Excel表格文件的方法
Sep 02 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Python OpenCV快速入门教程
Apr 17 Python
python基础之while循环语句的使用
Apr 20 Python
python爬取新闻门户网站的示例
Apr 25 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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
Python求解平方根的方法
2015/03/11 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Django models文件模型变更错误解决
2020/05/11 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
平面设计专业大学生职业规划书
2014/03/12 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
成本会计实训报告
2014/11/05 职场文书
教师工作表现自我评价
2015/03/05 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS