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比较两个图片相似度的方法
Mar 13 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python正规则表达式学习指南
Aug 02 Python
对命令行模式与python交互模式介绍
May 12 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
python判断链表是否有环的实例代码
Jan 31 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
python time.strptime格式化实例详解
2021/02/03 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
新媒传信软件测试面试题
2013/02/24 面试题
计算机专业推荐信范文
2013/11/20 职场文书
小学毕业寄语大全
2014/04/03 职场文书
师德师风建设方案
2014/05/08 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js