预训练模型的加载机理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版的主要内容,如果未能解决你的问题,请参考以下文章