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

 更新时间:2019年08月18日 11:31:25   作者:浮云游子-HFUT  
今天小编就为大家分享一篇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加载部分预训练模型的参数实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python3 面向对象__类的内置属性与方法的实例代码

    python3 面向对象__类的内置属性与方法的实例代码

    这篇文章主要介绍了python3 面向对象__类的内置属性与方法的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • eclipse创建python项目步骤详解

    eclipse创建python项目步骤详解

    在本篇内容里小编给大家分享了关于eclipse创建python项目的具体步骤和方法,需要的朋友们跟着学习下。
    2019-05-05
  • Python turtle绘画象棋棋盘

    Python turtle绘画象棋棋盘

    这篇文章主要为大家详细介绍了Python turtle绘画象棋棋盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • tensorflow使用tf.data.Dataset 处理大型数据集问题

    tensorflow使用tf.data.Dataset 处理大型数据集问题

    这篇文章主要介绍了tensorflow使用tf.data.Dataset 处理大型数据集问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 搞定这套Python爬虫面试题(面试会so easy)

    搞定这套Python爬虫面试题(面试会so easy)

    Python 是一门开源的解释性语言,相比 Java C++ 等语言,Python 具有动态特性,非常灵活。这篇文章主要介绍了搞定这套Python爬虫面试题,面试会so easy,需要的朋友可以参考下
    2019-04-04
  • Python httpx库入门指南(最新推荐)

    Python httpx库入门指南(最新推荐)

    Httpx 是一个用于发送 HTTP 请求的 Python 库,它提供了简单易用的 API,可以轻松地发送 GET、POST、PUT、DELETE 等请求,并接收响应,下面介绍下Python httpx库入门指南,感兴趣的朋友一起看看吧
    2023-12-12
  • python求两个时间的时间差(实例代码)

    python求两个时间的时间差(实例代码)

    我们在用python进行分析的时候,可能会碰到计算两个日期的时间差。下面为大家介绍一下如何计算两个时间的时间差,需要的朋友可以参考下
    2022-11-11
  • Python代码统计耗时的方法详解

    Python代码统计耗时的方法详解

    在现代软件开发中,性能优化是一个至关重要的环节,无论是开发大型系统还是小型工具,开发者都需要对代码的执行时间进行精确测量,以便找出瓶颈并优化性能,本文给大家介绍了Python代码统计耗时的方法,需要的朋友可以参考下
    2025-02-02
  • python实现简易版计算器

    python实现简易版计算器

    这篇文章主要为大家详细介绍了python实现简易版计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 详解如何利用Python装饰器优化代码

    详解如何利用Python装饰器优化代码

    这篇文章主要带大家深入探讨装饰器的应用,包括计时器装饰器和缓存装饰器等的实现,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2023-05-05

最新评论