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

相关推荐
学生信的大叔10 分钟前
【Python自动化】Ubuntu24.04配置Selenium并测试
python·selenium·自动化
诗句藏于尽头1 小时前
Django模型与数据库表映射的两种方式
数据库·python·django
智数研析社1 小时前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗
扯淡的闲人2 小时前
多语言编码Agent解决方案(5)-IntelliJ插件实现
开发语言·python
moxiaoran57532 小时前
Flask学习笔记(一)
后端·python·flask
秋氘渔2 小时前
迭代器和生成器的区别与联系
python·迭代器·生成器·可迭代对象
Gu_shiwww2 小时前
数据结构8——双向链表
c语言·数据结构·python·链表·小白初步
Dxy12393102164 小时前
python把文件从一个文件复制到另一个文件夹
开发语言·python
sonrisa_4 小时前
collections模块
python
折翼的恶魔5 小时前
数据分析:排序
python·数据分析·pandas