问题: module must have its parameters and buffers on device cuda:0 (device_ids[0]) but found one of them on device: cpu
当在pytorch下训练好模型之后,测试的时候调用checkpoint,用cpu跑的时候出现这个错误。
分析: 出现这个错误主要是因为模型在创建的时候用的是分布式的模型,model = torch.nn.DataParallel(model, device_ids=cfg.GPUS),在用cpu跑的时候,就会出现这个效果,原因就是由于这个分布式训练保存的模型不能再cpu下运行。所以,在测试的时候,注释掉了这句话,不用分布式的,就可以了。
结论:看文档,理解api的涵义,就好做事情了。