欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

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

PyTorch 迷途小书童 4年前 (2020-07-07) 15778次浏览 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)

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