赞
踩
在训练时,常遇到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】查看是不是代码实现网络时候出现纰漏,本人就在设计池化层时,将加法写成了乘法,导致参数陡增,训练时爆显存。可以适当修改网络结构,减少参数,训练速度也会快些。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。