1

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

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

我浏览了许多在线资源来解决内存故障,但大多数都建议减少批量大小。甚至,我将图像的大小减小到 256x256。我还不能解决这个问题。我通过这个命令检查了GPU的内存,nvidia-smi模型是Nvidia GT 730,内存是1998 MiB。由于批量大小train_val.prototxt为 1,我无法在train_val.prototxt. 所以我的问题是:

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

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

4

1 回答 1

0
  1. txn->Commit();AFAIK,在 cuda 内存 不足的每个事务()中提交给 lmdb 的条目数没有影响。

  2. 如果您出于某种原因确实想重新编译 caffe,只需运行make clean. 这将清除所有内容并让您从头开始重新编译。

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

您确定在TRAIN 和 TEST 阶段batch_size设置为 1吗?

于 2017-01-17T16:38:55.973 回答