【深度学习代码报错修改】跑图像翻译(image-to-image translation)的代码【SPMPGAN】中遇到的问题总结

慈云数据 8个月前 (03-13) 技术支持 73 0

错误一览

  • RuntimeError: No CUDA GPUs are available
  • TypeError:load() missing 1 required positional argument:'Loader'
  • TypeError: Expected state_dict to be dict-like, got

    RuntimeError: No CUDA GPUs are available

    这个问题比较常见了,原因在于源代码需要多块gpu,而我们的电脑通常只有1块,参考:在这里插入图片描述在这里我也是将源代码中的’2’改为了’0’:

    # os.environ["CUDA_VISIBLE_DEVICES"] = '2'
    os.environ["CUDA_VISIBLE_DEVICES"] = '0'
    

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

    这个问题也比较常见,csdn上一搜一大堆,该问题在于使用yaml.load()时报错。原因是YAML 5.1版本后禁用了这个用法,这里我是将yaml降级了(原先下载的是6.0版本的),具体参考:TypeError: load() missing 1 required positional argument: ‘Loader‘?

    TypeError: Expected state_dict to be dict-like, got

    这个问题我在csdn上搜也没有搜出来,我本身代码能力比较弱,就先请教了我的同门,奈何他也未能解决。于是请教了研二的师兄,师兄给我一顿看,最后做了如下修改:

    源代码中需要加载一个pth文件,使用的是这样几句:

    FID_WEIGHTS_URL = 'https://Github.com/mseitzer/pytorch-fid/releases/download/fid_weights/pt_inception-2015-12-05-6726825d.pth'
    state_dict = load_state_dict_from_url(FID_WEIGHTS_URL, progress=True)
    inception.load_state_dict(state_dict)
    

    奈何这个网络无法访问,需要科学上网,而我是连朋友的远程,就不好搞(其实这个时候报的错不是上边题目里的错,报的错是URLError,这个比较好解决)。经过搜索,我在自己的电脑上(可以进入github)进入该网站下载了这个pth文件,然后放进服务器里,并将代码修改如下:

    pthfile = '/home/data/SPMPGAN-main/539c4500-8050-11e9-8c6a-72d1f2ad2d10'
    state_dict = inception.load_state_dict(torch.load(pthfile,map_location = 'cuda'))
    inception.load_state_dict(state_dict)
    

    还是报错,师兄把上边那几行都注释掉,只改成一句:

    inception.load_state_dict({k.replace('module.',''):v for k,v in torch.load(pthfile).items()})
    

    如图:

    在这里插入图片描述

    然后!正常开始训练了,我的崇拜感直接up。但我还没搞懂为什么,特此记录(怕忘记)。希望有遇到这个问题的可以有所帮助。

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon