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是同名,但加载的模型会自动找到自己训练时对应的那个结构。

相关推荐
小龙在山东4 小时前
基于 plumbum 跨平台执行Shell脚本
python
CCPC不拿奖不改名5 小时前
python基础:python语言中的函数与模块+面试习题
开发语言·python·面试·职场和发展·蓝桥杯
毕设源码-朱学姐5 小时前
【开题答辩全过程】以 基于Python语言的疫情数据可视化系统为例,包含答辩的问题和答案
开发语言·python·信息可视化
我送炭你添花5 小时前
Pelco KBD300A 模拟器:07+2.Python 专题:线程安全与信号槽机制——项目多线程最佳实践
python·自动化·运维开发
小途软件6 小时前
ssm607家政公司服务平台的设计与实现+vue
java·人工智能·pytorch·python·深度学习·语言模型
laplace01236 小时前
Part3 RAG文档切分
笔记·python·中间件·langchain·rag
dhdjjsjs6 小时前
Day59 PythonStudy
python
brent4236 小时前
DAY48 Grad-CAM与Hook函数
python
闲人编程6 小时前
商品管理与库存系统
服务器·网络·数据库·python·api·数据模型·codecapsule
ServBay6 小时前
8 个 Python 自动化脚本让你告别重复劳动
后端·python