这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推。
但是SSD配置时的例子是将训练语句整合成一个python文件ssd_pascal.py,所以需要改此代码。相关配置训练方法请参看转载博文:
解决方法:将ssd_pascal.py文件中第332行gpus = "0,1,2,3"的GPU选择改为gpus = "0",后面的1,2,3都删掉即可。再次训练即可。
当然,由于博主只有一块GPU且电脑运行内存有限,还需要将ssd_pascal.py文件中的337行batch_size = 32和338行accum_batch_size = 32都改小一倍,即更改批量大小,不然会出现“Check failed: error == cudaSuccess (2 vs. 0) invalid ...”的错误。
---------------------
!
ubuntu14.04 caffe 运行别人的程序,报错Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal。根据网上的说法,GPU内存不够,可是batch大小改为1了还是不行。问了博士师兄才发现,在该行上面有一行,写着using GPUs 1.而我只有一个GPU,如图2,我把solver_48.prototxt中最后一行的device_id改为0,接着运行,见图,这个错误就没有啦~~