预训练模型的加载机理pytorch版

Posted @会飞的毛毛虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了预训练模型的加载机理pytorch版相关的知识,希望对你有一定的参考价值。

在做二维目标检测时,我们会对神经网络的部分地方进行修改,比如增加CBAM,或者修改FPN等等。但是将修改后的网络进行训练时,加载预训练权重过程却不会报错,甚至修改网络后性能不增反降。这里面蕴含的知识点在这篇文章做做一个总结。

pytorch中网络导入预训练权重的代码很简单:

net = model()
net.to(device)
net.load_state_dict(torch.load(\'params.pth\'))

其中:

  • torch.load(\'params.pth\')只是加载了模型参数,并没有将参数放入网络中这里是将参数以键值对的方式加载到了内存中。
  • load_state_dict方法才是将参数字典放入网络中。

当我们对网络做了修改后,我们只需要按下面的方式做,就可以将之前的预训练权重加载到新网络中。在mmdetection或者一些大牛的开源代码中,修改网络后仍然能加载预训练权重也是因为以下原因

以上是关于预训练模型的加载机理pytorch版的主要内容,如果未能解决你的问题,请参考以下文章

pytorch如何给预训练模型添加新的层

基于预训练模型的Unet超级简单懒人版Pytorch版

基于预训练模型的Unet超级简单懒人版Pytorch版

如何加载部分预训练的 pytorch 模型?

pytorch中修改后的模型如何加载预训练模型

Pytorch模型保存与加载,并在加载的模型基础上继续训练