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交换变量
Sep 06 Python
Python实现调度算法代码详解
Dec 01 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python write无法写入文件的解决方法
Jan 23 Python
详解Python基础random模块随机数的生成
Mar 23 Python
pymysql模块的操作实例
Dec 17 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
Feb 07 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
Python-jenkins 获取job构建信息方式
May 12 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
Python天气语音播报小助手
Sep 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
JavaScript面象对象设计
2008/04/28 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
通过源码分析Python中的切片赋值
2017/05/08 Python
python+opencv实现动态物体追踪
2018/01/09 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python更换pip源方法过程解析
2020/05/19 Python
python 生成器需注意的小问题
2020/09/29 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
高中生毕业自我鉴定范文
2013/12/22 职场文书
优秀经理事迹材料
2014/02/01 职场文书
棉花姑娘教学反思
2014/02/15 职场文书
普通话宣传标语
2014/06/26 职场文书
详解Vue的options
2021/05/15 Vue.js
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers