您的位置:首页 > Web前端

caffe相关问题(持续更新。。。。)

2017-08-21 17:31 375 查看
case1: syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0)  out of memory

这种情况下,可能有进程在使用显存,而且使用很多,已经耗尽显存了。无法再分配显存。

使用:nvidia-smi查看显存使用情况:

Mon Aug 21 17:22:35 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 960     Off  | 0000:01:00.0      On |                  N/A |
| 40%   60C    P2    37W / 120W |   1513MiB /  1993MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1438    G   /usr/lib/xorg/Xorg                             160MiB |
|    0      1500    C   /usr/bin/python                                 44MiB |
|    0      3268    G   compiz                                         108MiB |
|    0     25749    C   ../caffe/build/tools/caffe                    1195MiB |
+-----------------------------------------------------------------------------+
另一种情况是,train和test的prototxt里面的batch_size设置过大,导致显存一次不能载入那么多数据。该小即可:

test:

data_param {
source: "/home/gesture1/lmdb/gesture1_test_lmdb"
batch_size: 1
backend: LMDB
}
train:

data_param {
source: "/home/gesture1/lmdb/gesture1_trainval_lmdb"
batch_size: 1
backend: LMDB
}

现在看看这个batch_size是啥子意思:

这个是网络没迭代一次处理的图片数目,如果你有12800张照片,这个batch_size设置为128,则训练完所有的图片,至少需要迭代100次。

#############################

在使用ssd的mobilenet时候

发现网络输出提示:

Couldn't find any detections然后直接crash掉。
查看网络结构,发现如下的设置:

code_type: CENTER_SIZE
keep_top_k: 100
confidence_threshold: 0.25
我目下使用自己的数据集进行训练,只有四种物体。之前未crash掉是因为物体种类有21种,检测成其他物体且在0.25左右的可能性很高。为了证明这个推断,查看ssd算法原始deploy的输出值设定:
code_type: CENTER_SIZE
keep_top_k: 200
confidence_threshold: 0.01 可以看出是否发生crash与此处的阈值confidence_threshold有关
故而修改此值为0.001,再重新运行网络,不会发生crash的情况了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: