PyTorch 报错处理汇总(包含CUDA)

Error 汇总

  1. CUDA out of memory
    原因: GPU内存溢出
    解决: 减小 BATCH_SIZE

  2. CUDA error: device-side assert triggered
    原因: 实际输入的label类别或Mask图像的像素类别超过了设定的类别数 NUM_CLASSES
    解决: 检查label值或mask图像的像素值, 如二值图像则令mask[mask>1]=1

  3. RuntimeError: Error(s) in loading state_dict: Missing key(s) in state_dict: “module…”; Unexpected key(s) in state_dict
    原因: 模型训练时使用了 torch.nn.DataParallel(),而此时加载模型参数后没有使用
    解决:
    法① 添加 net = nn.DataParallel(net)
    法② 替换导入

    net.load_state_dict({k.replace('module.',''):v for k,v in torch.load(参数路径).items()}) 
    
  4. RuntimeError: Error(s) in loading state_dict for Yolact: Missing key(s) in state_dict: “backbone.layers.2.6.conv1.weight”, …
    原因: 权重文件中的参数不匹配
    解决: 将权重读出来, 对比报错信息, 更换权重文件或适配模型代码

    import torch
    
    path = "yolact_base_54_800000.pth"
    state_dict = torch.load(path)
    print(list(state_dict.keys()))
    
  5. OSError: [Errno 22] Invalid argument: '\u202aD:/coco2017/annotations/instances_val2017.json
    原因: 复制得到的路径中存在其他字符 \u202aD
    解决: 手动输入出错位置 D:/

  6. ImportError: DLL load failed: 页面文件太小,无法完成操作。
    原因: 多线程问题, 虚拟内存不足
    解决: 减小num_workers或扩大虚拟内存

  7. BrokenPipeError: [Errno 32] Broken pipe
    原因: windows下多线程的问题,和DataLoader类有关
    解决: 减小num_workers

  8. Error(s) in loading state_dict for Yolact: size mismatch for prediction_layers.0.conf_layer.weight:
    copying a param with shape torch.Size([243, 256, 3, 3]) from checkpoint, the shape in current model is torch.Size([21, 256, 3, 3]).

    原因: 构造模型与导入模型的参数Size不一致, 是由于微调模型改变了输出层的形状
    解决: 先导入模型参数, 再重置输出层

  9. RuntimeError: Can’t call numpy() on Variable that requires grad. Use var.detach().numpy() instead.
    原因: 带梯度变量不能直接转为numpy类型
    解决: 采用建议的增加var.detach().numpy() 或者使用with torch.no_grad(): 或者 @torch.no_grad()


原因:
解决:

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务