我们一般在训练模型时 ,调整的通常是超参数,model部分一般定义在一个单独的文件中,在预训练后加载使用torch.save模型时,其实仍会发生一些事情:
1.走原模型文件定义的forward函数
如果监测到预训练后代码发生更改,old version 代码中如果未定义current version代码中的变量会发生Attribute error。所以记住,我们使用torch.load 函数加载预训练模型,代码依然会调用model.py文件,将参数放进去进行运行。
2.也就是说,如果我们在github上下载预训练模型后没有同时下载作者的model.py文件的话,也是运行不会成功的。这里援引在其他人博客下的评论:
“如果没有Net就可以加载,那样会有安全方面问题,否则只要获取你保存的模型(文件),里面的结构也完全暴露了。
”加载的模型预测时仍会调用模型定义时的forward方法
参考原博客