是否有可能在convert_imageset.cpp中批量减少图像数量以解决GPU的内存不足问题?

时间:2017-01-17 16:20:57

标签: deep-learning caffe pycaffe lmdb deeplearning4j

我试图在我的数据库中运行fcn。我能够通过lmdb内置函数caffe将我的图像集转换为convert_imageset。但是,一旦我想训练net,它就会给我以下错误:

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个图像。我是否可以将143convert_imageset.cpp151中的此数字更改为更小(例如2;一次拍摄两张图片),重新编译caffe,然后转换图像使用convert_imageset到lmdb?它有意义吗?
  2. 如果问题1的答案是肯定的,我怎么能再次编译caffe, 我应该删除build文件夹并再次执行caffe安装 刮?
  3. caffe如何处理LMDB数据?是否就像在运行convert_imagenet?
  4. 时拍摄了一批显示的1000张图像

    非常感谢您的帮助。 感谢...

1 个答案:

答案 0 :(得分:0)

  1. AFAIK,对cuda内存中每次事务(txn->Commit();)上提交给lmdb的条目数没有影响。

  2. 如果您因任何原因想要重新编译caffe,只需运行make clean即可。这将清除所有内容,让您从头开始重新编译。

  3. 同样,AFAIK,caffe一次访问lmdb batch_size图像,无论编写数据集时使用的事务大小大小。

  4. 对于两个 TRAIN和TEST阶段,您确定batch_size设置为1吗?