当前位置: 首页 > 编程笔记 >

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

郑胡媚
2023-03-14
本文向大家介绍Pytorch加载部分预训练模型的参数实例,包括了Pytorch加载部分预训练模型的参数实例的使用技巧和注意事项,需要的朋友参考一下

前言

自从从深度学习框架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加载部分预训练模型的参数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍tensorflow 固定部分参数训练,只训练部分参数的实例,包括了tensorflow 固定部分参数训练,只训练部分参数的实例的使用技巧和注意事项,需要的朋友参考一下 在使用tensorflow来训练一个模型的时候,有时候需要依靠验证集来判断模型是否已经过拟合,是否需要停止训练。 1.首先想到的是用tf.placeholder()载入不同的数据来进行计算,比如 这种方式很简单,也很

  • 本文向大家介绍pytorch 使用加载训练好的模型做inference,包括了pytorch 使用加载训练好的模型做inference的使用技巧和注意事项,需要的朋友参考一下 前提: 模型参数和结构是分别保存的 1、 构建模型(# load model graph) model = MODEL() 2、加载模型参数(# load model state_dict) (解决RuntimeError:

  • 本文向大家介绍python PyTorch预训练示例,包括了python PyTorch预训练示例的使用技巧和注意事项,需要的朋友参考一下 前言 最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢。各种设计直接简洁,方便研究,比tensorflow的臃肿好多了。今天让我们来谈谈PyTorch的预训练,主要是自己写代码的经验以及论坛PyTorch Forums上的一些回

  • 问题内容: 我想将使用gensim进行预训练的word2vec嵌入加载到PyTorch嵌入层中。 所以我的问题是,如何让gensim将嵌入权重加载到PyTorch嵌入层中。 提前致谢! 问题答案: 我只是想报告我的发现,有关如何将gensim嵌入PyTorch。 PyTorch和更高版本的解决方案: 从那里有一个新功能,使嵌入嵌入变得非常舒适。这是文档中的示例。 gensim 的权重可以通过以下方

  • 问题内容: 我想知道是否有可能保存经过部分训练的Keras模型并在再次加载模型后继续进行训练。 这样做的原因是,将来我将拥有更多的训练数据,并且我不想再次对整个模型进行训练。 我正在使用的功能是: 编辑1:添加了完全正常的示例 对于10个纪元后的第一个数据集,最后一个纪元的损失将为0.0748,精度为0.9863。 保存,删除和重新加载模型后,第二个数据集上训练的模型的损失和准确性分别为0.171

  • 本文向大家介绍解决Pytorch 加载训练好的模型 遇到的error问题,包括了解决Pytorch 加载训练好的模型 遇到的error问题的使用技巧和注意事项,需要的朋友参考一下 这是一个非常愚蠢的错误 debug的时候要好好看error信息 提醒自己切记好好对待error!切记!切记! -----------------------分割线---------------- pytorch 已经非常