You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch加载预训练ResNet1D模型出现AttributeError如何解决?

问题根因

你目前使用的是PyTorch的全模型序列化保存方式torch.save(model, path),这种方式会把模型实例的结构和权重绑定序列化,同时依赖训练时模型类ResNet1D所在的模块路径,当你在没有定义ResNet1D类的独立脚本中加载时,PyTorch找不到对应的类定义,就会抛出这个属性错误。

解决方案

方案1:加载前在独立脚本中引入/定义ResNet1D类

  • 直接把model_prep.py里的ResNet1D类的完整代码复制到test.py开头,或者把model_prep.py作为模块导入:
# test.py 开头添加
from model_prep import ResNet1D
import torch

# 后续加载逻辑不变
model = torch.load('/content/drive/MyDrive/myModel.pt')
model.eval()

注意:需要保证test.py和model_prep.py在同一目录下,或者model_prep.py在Python的模块搜索路径中

方案2(更推荐):重新保存为权重字典格式,避免类路径依赖

这种方案是PyTorch官方推荐的模型保存方式,只保存训练好的权重参数,不绑定模型结构,通用性更强:

  1. 先回到model_prep.py中重新导出模型:
# 仅保存模型权重字典
torch.save(model.state_dict(), '/content/drive/MyDrive/myModel_weights.pt')
  1. 之后在任意独立脚本中加载时,先实例化ResNet1D类,再加载权重:
import torch
from model_prep import ResNet1D # 或者直接复制ResNet1D类定义到此处

# 先初始化模型结构
model = ResNet1D() # 如果类有初始化参数要按实际传入
# 加载权重
model.load_state_dict(torch.load('/content/drive/MyDrive/myModel_weights.pt'))
model.eval()

Tkinter部署可行性

这个方案完全可行,Tkinter是Python标准自带的GUI库,不需要额外安装复杂依赖,适合轻量本地工具开发:

  • 你只需要在Tkinter的业务逻辑代码中按照上面的方案先加载好模型,再把用户输入的待预测数据做和训练时一致的预处理,喂给模型得到预测结果,最后把结果渲染到GUI界面上即可
  • 单条数据预测的计算量很小,普通PC运行完全没有性能问题

内容的提问来源于stack exchange,提问作者Quine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:51:01