Caffe常见错误
在使用深度学习框架caffe,搭建网络训练过程中总会遇到这样或那样的问题,下面我将自己在学习过程中遇到的常见问题进行总结【会陆续更新】
- 错误一:cuda invalid address error
- 错误二:out of memory (2 vs. 0)
- 错误三:Check failed: error == cudaSuccess (74 vs. 0) misaligned address
1. cuda invalid address error
此类错误是kernel函数参数不允许传引用导致的。不用去检查网络结构了。换更高配置的显卡服务器即可。
2. out of memory (2 vs. 0)
出现该问题的原因是电脑内存不够,可能是GPU的运行内存使用过高;也可能是电脑的硬盘内存不够。
##解决办法:
(1)检查内存,硬盘内存不够的话就清理内存腾出空间来保存训练数据;
(2)硬盘内存足够的情况下查看GPU使用情况,终端输入nvidia-smi可查看;
GPU内存不多的话就减少网络的batchsize;
一般情况下我使用的是1080的显存有12G左右,训练30+层的网络,4848的块3倍的batchsize一般是64左右,2倍的batchsize一般是20-30,4倍的就更少了都在10左右,稍微大点就会提示内存不够,为了减少因为网络文件中的batchsize太小而导致不收敛的问题,可在solver文件中加大test_iter,从而增大实际的batchsize。 实际的batchsize=网络中的batchsizetest_iter,有时候不仅是训练batchsize太大会导致内存不够,实际训练batchsize=batchsizetest_iter太大也会导致该情况,减少batchsize即可,有时候为了避免训练的batchsize太小导致网络不收敛,在减小训练batchsize的时候可以适当增加solver文件中的test_iter。
###注:我试验过当网络中的batchsize设置非常小的时候(比如1、 2)即使增加test_iter网络收敛曲线仍是振荡的;batchsize 的正确选择是为了在内存效率和内存容量之间寻找最佳平衡,所以不是越大越好也不是越小越好,这个需要自己一点一点的试。。。尴尬,我常用的batchsize是32 48 64 128
图片来源超链接
3. Check failed: error == cudaSuccess (74 vs. 0) misaligned address
这个错误是caffe自带的bug引起的;
错误展示如下: