Pytorch加载部分预训练模型的参数实例


Posted in Python onAugust 18, 2019

前言

自从从深度学习框架caffe转到Pytorch之后,感觉Pytorch的优点妙不可言,各种设计简洁,方便研究网络结构修改,容易上手,比TensorFlow的臃肿好多了。对于深度学习的初学者,Pytorch值得推荐。今天主要主要谈谈Pytorch是如何加载预训练模型的参数以及代码的实现过程。

直接加载预选脸模型

如果我们使用的模型和预训练模型完全一样,那么我们就可以直接加载别人的模型,还有一种情况,我们在训练自己模型的过程中,突然中断了,但只要我们保存了之前的模型的参数也可以使用下面的代码直接加载我们保存的模型继续训练,不用从头开始。

model=DPN(*args, **kwargs)
model.load_state_dict(torch.load("DPN.pth"))

这样的加载方式是基于Pytorch使用的模型存储方法:

torch.save(DPN.state_dict(), "DPN.pth")

加载部分预训练模型参数

其实大多数时候我们根据自己的任物所提出的模型是在一些公开模型的基础上改变而来,其中公开模型的参数我们没有必要在从头开始训练,只要加载其训练好的模型参数即可,这样有助于提高训练的准确率和我们模型的泛化能力。

model = DPN(num_init_features=64, k_R=96, G=32, k_sec=(3,4,20,3), inc_sec=(16,32,24,128), num_classes=1,decoder=args.decoder)
 http = {'url': 'http://data.lip6.fr/cadene/pretrainedmodels/dpn92_extra-b040e4a9b.pth'}
 pretrained_dict=model_zoo.load_url(http['url'])
 model_dict = model.state_dict()
 pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}#filter out unnecessary keys 
 model_dict.update(pretrained_dict)
 model.load_state_dict(model_dict)
 model = torch.nn.DataParallel(model).cuda()

因为需要删除预训练模型中不匹配的的键,也就是层的名字。

以上这篇Pytorch加载部分预训练模型的参数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python多线程编程方式分析示例详解
Dec 06 Python
Python中的yield浅析
Jun 16 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
Python实现注册登录系统
Aug 08 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
Python列表切片操作实例总结
Feb 19 Python
简单了解python中对象的取反运算符
Jul 01 Python
python 标准差计算的实现(std)
Jul 29 Python
python 列表推导式使用详解
Aug 29 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
在pytorch中查看可训练参数的例子
Aug 18 #Python
浅析PyTorch中nn.Module的使用
Aug 18 #Python
关于PyTorch 自动求导机制详解
Aug 18 #Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 #Python
pytorch numpy list类型之间的相互转换实例
Aug 18 #Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 #Python
pytorch 自定义数据集加载方法
Aug 18 #Python
You might like
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
php图像验证码生成代码
2017/06/08 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
解决python 文本过滤和清理问题
2019/08/28 Python
keras输出预测值和真实值方式
2020/06/27 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
党支部书记岗位责任制
2014/02/11 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
小学生期末评语
2014/04/21 职场文书
应急管理培训方案
2014/06/12 职场文书
伦敦奥运会口号
2014/06/13 职场文书
话题作文之呼唤
2019/12/18 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python