2017-01-17 18 views
1

我试图在我的caffe数据上运行fcn。我能够通过convert_imageset内置函数caffe将我的图像集转换为lmdb。但是,一旦我想训练net,它给了我下面的错误:是否可以减少convert_imageset.cpp中批处理图像的数量以解决GPU内存不足的问题?

Check failed: error == cudaSuccess (2 vs. 0) out of memory 
*** Check failure stack trace: *** 
..... 
Aborted (core dumped) 

我经历了许多在线资源去解决内存故障,但其中大部分建议减少批量大小。甚至,我将图像的大小缩小到256x256。我还没有解决这个问题。 我用这个命令nvidia-smi检查了GPU的内存,型号是Nvidia GT 730,内存是1998 MiB。由于train_val.prototxt中的批量大小为1,因此我不能在train_val.prototxt中做任何事情。所以我的问题是:

  1. 通过查看终端日志文件,我意识到,只要convert_imageset转换数据为LMDB,它正在1000图像在一组。是否有可能我将这个数字改成143151convert_imageset.cpp更小(例如2;一次取两个图像),重新编译caffe,然后使用convert_imageset将图像转换为lmdb?是否有意义?
  2. 如果问题1的答案是肯定的,我该如何再次编译caffe, 应该删除build文件夹,并再次从 从头开始执行caffe安装?
  3. caffe如何处理LMDB数据?是否像运行convert_imagenet时显示一批显示1000个图像?

您的帮助真的很感谢。 谢谢...

回答

0
  1. 据我所知,对于致力于在在CUDA内存不足每笔交易(txn->Commit();),以lmdb条目的数量没有影响。

  2. 如果您确实想因任何原因重新编译caffe,只需运行make clean即可。这将清除一切,让你从头开始重新编译。

  3. 同样,AFAIK,咖啡一次访问图像,而不管写入数据集时使用的事务大小的大小如何。

确定batch_size被设置为1 训练和测试阶段?

+0

非常感谢您的信息。是的,它是批量大小为1的FCN语义分段。对于我的问题,有没有解决方案? –

+0

@ S.EB购买内存更大的新GPU。 :| – Shai

+0

感谢您的帮助 –

相关问题