时间:2021-05-22
前言
自从从深度学习框架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加载部分预训练模型的参数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在实践中经常会遇到这样的情况:1、用简单的模型预训练参数2、把预训练的参数导入复杂的模型后训练复杂的模型这时就产生一个问题:如何加载预训练的参数。下面就是我的总
使用预训练模型的代码如下:#加载预训练模型resNet50=models.resnet50(pretrained=True)ResNet50=ResNet(Bo
numpy.random.shuffle在做将caffe模型和预训练的参数转化为tensorflow的模型和预训练的参数,以便微调,遇到如下函数:defgen_
pytorch预训练层的使用方法将其他地方训练好的网络,用到新的网络里面加载预训练网络1.原先已经训练好一个网络AutoEncoder_FC()2.首先加载该网
在使用pytorch训练模型,经常需要加载大量图片数据,因此pytorch提供了好用的数据加载工具Dataloader。为了实现小批量循环读取大型数据集,在Da