PyTorch中的No module named models?

PyTorch中的No module named models?

原创

迷途小书童的Note

迷途小书童的Note

2020/07/28 16:21

阅读数 1.4K

本文被收录于专区

AI & 大数据

进入专区参与更多专题讨论 

软硬件环境

  • ubuntu 18.04 64bit

  • anaconda with 3.7

  • nvidia gtx 1070Ti

  • cuda 10.1

  • pytorch 1.5

问题

在使用pytorch深度学习框架训练出来的模型文件,在另外的工程中使用,经常会碰到如下的错误

  File "/home/xugaoxiang/anaconda3/envs/torchTest/lib/python3.7/site-packages/torch/serialization.py", line 593, in load    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)  File "/home/xugaoxiang/anaconda3/envs/torchTest/lib/python3.7/site-packages/torch/serialization.py", line 773, in _legacy_load    result = unpickler.load()ModuleNotFoundError: No module named 'models'

解决方法

其实这个问题,在pytorch的官方文档中就有提到,如下

上面这种方法呢是推荐的做法,在执行torch.savetorch.load时,操作的都是模型的参数,这样移植起来非常的方便

而下面的方法则是针对整个模型,在训练模型的时候,会将本地的class和目录结构都写入到模型中。很多开源项目在模型训练完成后也是采用这样的方法来保存,因此,当在你自己的项目中去使用这样的模型时,往往就会遇到上面出现的问题,解决的方法就是在你的项目中保持原有项目的必要结构,如相应的class和模块

参考资料

  • https://pytorch.org/docs/stable/notes/serialization.html

  • https://discuss.pytorch.org/t/modulenotfounderror-no-module-named-network/71721/3

  • https://zhuanlan.zhihu.com/p/38056115

  • https://github.com/ultralytics/yolov5/issues/22

 

本文分享自微信公众号 - 迷途小书童的Note(Dev_Club)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享

在加载保存了的pytorch网络模型时报错:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/lihua/anaconda3/envs/Autoenc/lib/python3.5/site-packages/torch/serialization.py", line 367, in load
    return _load(f, map_location, pickle_module)
  File "/home/lihua/anaconda3/envs/Autoenc/lib/python3.5/site-packages/torch/serialization.py", line 538, in _load
    result = unpickler.load()
  File "/home/lihua/Downloads/pycharm-community-2018.2.4/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 20, in do_import
    module = self._system_import(name, *args, **kwargs)
ImportError: No module named 'model'
然后查阅资料(here)才知道,直接使用save是有风险的,可能换了工程就不能load(好恐怖的问题,难怪有一次我的实验结果老是加载错误)。所以最终还是使用了推荐的方法:

torch.save(the_model.state_dict(), PATH)
————————————————
版权声明:本文为CSDN博主「李歇特冯·兹拜因巴哈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37518259/article/details/106050327

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值