解决方案:炼丹师养成计划 Pytorch+DeepLearning遇见的各种报错与踩坑避坑记录(一)

解决方案:炼丹师养成计划 Pytorch+DeepLearning遇见的各种报错与踩坑避坑记录(一),第1张

文章目录
  • 问题1: load() missing 1 required positional argument: 'Loader'
  • 问题2:ModuleNotFoundError: No module named 'dateutil'
  • 问题3:RuntimeError: Expected object of backend CPU but got backend CUDA for argument #4 'mat1'
  • 问题4:ValueError: not enough values to unpack (expected 3, got 2)
  • 问题5:Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

问题1: load() missing 1 required positional argument: ‘Loader’

问题原因:该报错原因提示为load函数缺少必填的Loader参数

解决方案1:使用safe_load()函数代替 load()

import yaml
    with open(filename, 'r') as f:
        yaml_cfg = edict(yaml.safe_load(f))

解决方案2:添加参数 Loader=yaml.FullLoader

import yaml
    with open(filename, 'r') as f:
        yaml_cfg = edict(yaml.load(f,Loader=yaml.FullLoader))

解决方案3:降级pyyaml 版本(亲测有效)
pip install pyyaml==5.4.1

问题2:ModuleNotFoundError: No module named ‘dateutil’

问题原因:pip install dateutil失败,因为该模块非常坑,他叫 python-dateutil
解决方案: pip3 install python-dateuti

问题3:RuntimeError: Expected object of backend CPU but got backend CUDA for argument #4 ‘mat1’

问题原因:期望的对象是在后端CPU,但参数在后端CUDA上面,直白来说,就是模型没有放到cuda上面,但是模型需要的参数或者模型的部分模块被放到了cuda上面。

解决方案:将模型也放到cuda上

# 进行可用设备检测, 有GPU的话将优先使用GPU
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model = model.to(device) 或 model = model.cuda(device)
问题4:ValueError: not enough values to unpack (expected 3, got 2)

问题原因:期望有三个返回值,但其实函数只有两个返回值

解决方案:定位到错误,检查函数和接收函数返回值的参数个数

问题5:Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

问题原因:输入的数据类型为torch.cuda.FloatTensor,说明输入数据在GPU中
模型参数的数据类型为torch.FloatTensor,说明模型还在CPU

解决方案:将对应的模型参数放入cuda
如:

proj = nn.Conv2d(3, 3, 3, 4, 0)
imgs[i] = proj(imgs[i])

出错,说明img[i]在gpu上面,而我们的proj还在cpu上,所以要把proj放到cuda上面去:

proj = nn.Conv2d(3, 3, 3, 4, 0)
proj = proj.cuda()
imgs[i] = proj(imgs[i])

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/713894.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存