Pytorch加载部分预训练模型的参数实例
2019-08-18 11:31
3587 查看
前言
自从从深度学习框架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加载部分预训练模型的参数实例就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- pytorch 模型部分参数的加载
- pytorch 模型部分参数的加载
- pytorch模型加载跑测试集和训练过程中跑测试集结果不一致的问题
- PyTorch加载预训练模型(pretrained)
- Tensorflow加载预训练模型和保存模型的实例
- PyTorch加载预训练模型的问题
- pytorch 如何加载部分预训练模型
- TF Saver 保存/加载训练好模型(网络+参数)的那些事儿
- 基于pytorch的保存和加载模型参数的方法
- Keras模型的加载和保存、预训练、按层名匹配参数
- tensorflow: 保存和加载模型, 参数;以及使用预训练参数方法
- pytorch在cpu上加载预先训练好的GPU模型以及GPU上加载CPU上训练的Model
- 4000 TensorFlow学习笔记(2)——保存和加载训练模型参数
- 解决了PyTorch 使用torch.nn.DataParallel 进行多GPU训练的一个BUG:模型(参数)和数据不在相同设备上
- kaldi中文语音识别thchs30模型训练代码功能和配置参数解读
- 交通标识牌模型训练c++代码实例及运行结果
- tensorflow 加载部分变量的实例讲解
- [TensorFlow深度学习入门]实战八·简便方法实现TensorFlow模型参数保存与加载(pb方式)
- TensorFlow使用C++加载使用训练好的模型,.cc文件代码实现的相关类及方法总结
- python查看CNN训练模型参数