PyTorch搭建CIFAR10卷积自编码器出现RuntimeError如何解决?
报错原因及修复方案
报错根因
- 设备类型不匹配:模型已通过
model.to(device)迁移到GPU,所有权重参数为torch.cuda.FloatTensor类型;但从测试集加载的img张量默认存储在CPU,为torch.FloatTensor类型,PyTorch不支持不同设备的张量直接参与卷积运算,因此触发报错。 - 代码书写错误:
img.to(device)是无效操作,PyTorch中张量的.to()方法不是原地操作,必须将返回值赋值给原变量才能完成设备迁移,代码中原img变量始终停留在CPU设备。
修复方案
方案1:迁移输入张量到GPU
修改设备迁移代码,将转移后的张量赋值回img:
# 替换原有的 img.to(device) img = img.to(device) # 后续推理可正常运行 model.encoder(img)
方案2:迁移模型到CPU推理
如果不需要使用GPU做推理,可将模型迁移回CPU后运行:
model = model.cpu() # 后续推理可正常运行 model.encoder(img)
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

