错误一览
- 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。但我还没搞懂为什么,特此记录(怕忘记)。希望有遇到这个问题的可以有所帮助。