RuntimeError错误的几个可能原因记录和解决方法

在训练时,常遇到RuntimeError错误,提示Memory或者RAM不足,甚至受到buy an new RAM的嘲笑!记录一下所遭遇的报错的原因和解决办法,希望对大家有所帮助,也欢迎大家在评论区补充和纠正。

 

【Q】DataLoader 函数num_workers 设置过大,线程过多,过多占用Cpu,导致报错memory不足。

【A】改小num_workers 即可, 参考值4 ,8 。

 

【Q】DataLoader 函数batch_size设置过大,过多占用Gpu,导致爆显存。

【A】改小batch_size即可, 参考值1,4 ,8 ,16。

 

【Q】运行时间过长,缓存过多导致内存或者显存溢出。

【A】清除缓存,事实上在pytorch机制中是会自动清除缓存的,但是人工清除有时也有用,代码如下:

    try:
        main()    # the code may result error
    except RuntimeError as exception:
        if "memory" in str(exception):
            print("WARNING: out of memory")
            if hasattr(torch.cuda, 'empty_cache'):
                torch.cuda.empty_cache()
        else:
            raise exception

 

【Q】网络结构设计不合理,或者部分网络参数过大,计算量过大。

【A】查看是不是代码实现网络时候出现纰漏,本人就在设计池化层时,将加法写成了乘法,导致参数陡增,训练时爆显存。可以适当修改网络结构,减少参数,训练速度也会快些。

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值