写在前面
未经允许,不得转载,谢谢~~
模块的存储与加载这个工作对于神经网络的训练还是非常重要的。当网络层数多了之后,训练起来就会很耗时。如果没有及时保存模型,那么在时间上的损失真的是很大的。
模型保存与加载
利用PyTorch可以很方便的进行模型的保存和加载,主要有以下两种方式。
方法1:保存加载整个模型
# save model
torch.save(model,'mymodel.pkl')
# load model
model=torch.load('mymodel.pkl')
方法2:仅保存加载模型参数(推荐)
# save model parameters
torch.save(model.state_dict(), 'mymodel.pkl')
# load save model parameters
model_object.load_state_dict(torch.load('mymodel.pkl'))
可以想一下为什么会推荐第二种方式呢?
相比较于保存整个模型而言,仅保存模型参数的做法应该不仅节省空间,更有灵活性的优势。
可以取出特定层的参数,这一点在已经训练好的模型上取与现有模型相同层的参数上应该有帮助。
不过这个还没有实验验证,等后面碰到再更新哇⊙⊙
更新贴~~~~~~
方法3:加载别的模型中相同的网络参数至新的模型
这个方法在科研上还是很有帮助的,可以用已经训练好的网络参数作为自己模型的网络权重的初始化。