欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

解决pytorch中的ModuleNotFound: No module named ‘models’问题

PyTorch 迷途小书童 3年前 (2020-07-07) 14671次浏览 0个评论

软硬件环境

  • 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 的官方文档中就有提到,如下

pytorch

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

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

pytorch

参考资料

喜欢 (2)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.