python-pytorch 关于torch.load()和torch.load_state_dict()

python-pytorch 关于torch.load和torch.load_state_dict

最近在使用pytorch训练和加载模型时遇到了一些很玄学的问题,研究了一下,总结如下:

1、关于模型保存和加载

1、如果保存时使用了torch.save( model, "model.pth"),那么模型加载时只能使用torch.load(),而不能使用torch.load_state_dict(torch.load(model_path)),如果强行使用torch.load_state_dict(torch.load(model_path)),会报Net对象没有copy属性。

python 复制代码
import torch

torch.save(model, 'model.pth')
model = torch.load('model.pth')

2、如果保存时使用了torch.save( model.state_dict(),"model.pth"),那么模型加载时只能使用model.load_state_dict(torch.Load("model.pth"))。

python 复制代码
import torch

torch.save(model.state_dict(), 'model.pth')

state_dict = torch.load('model.pth')
model.load_state_dict(state_dict)

3、两种方式在模型加载时,都需要引入或定义模型结构,且模型结构的名称需要与训练时一致,不能使用别名。

训练时:class Net,测试时:定义或加载仍然是class Net,而不能from ··· import Net as resNet。

python 复制代码
# 两个Net的结构不同
from model1 import Net
from model2 import Net

2、关于加载模型结构

关于在一个脚本中同时加载两个模型,在同时导入两个不同结构的Net的情况下,即使Net是同名,但加载的模型会自动找到自己训练时对应的那个结构。

相关推荐
aloha_7897 小时前
测试开发工程师面经准备(sxf)
java·python·leetcode·压力测试
Jonathan Star8 小时前
MediaPipe 在Python中实现人体运动识别,最常用且高效的方案是结合**姿态估计**(提取人体关键点)和**动作分类**(识别具体运动)
开发语言·python·分类
山顶听风9 小时前
分页条初始化
python
希露菲叶特格雷拉特9 小时前
PyTorch深度学习笔记(二十)(模型验证测试)
人工智能·pytorch·笔记
NewsMash9 小时前
PyTorch之父发离职长文,告别Meta
人工智能·pytorch·python
硅农深芯9 小时前
如何使用ptqt5实现进度条的动态显示
开发语言·python·qt
程序员杰哥9 小时前
软件测试之压力测试详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
今天没有盐10 小时前
Pandas完全指南:从Series到DataFrame,掌握数据分析核心技能
python·pycharm·编程语言
暴风鱼划水10 小时前
算法题(Python)数组篇 | 4.长度最小的子数组
python·算法·力扣