- 在迁移学习 训练时,出现了以下错误:
0728 17:07:02.163038 4754 solver.cpp:337] Iteration 1449, Testing net (#0)
F0728 17:07:02.559718 4754 syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0) out of memory
*** Check failure stack trace: ***
@ 0x7f6601d335cd google::LogMessage::Fail()
@ 0x7f6601d35433 google::LogMessage::SendToLog()
@ 0x7f6601d3315b google::LogMessage::Flush()
@ 0x7f6601d35e1e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f66024f7820 caffe::SyncedMemory::to_gpu()
@ 0x7f66024f67e9 caffe::SyncedMemory::mutable_gpu_data()
@ 0x7f660236edf2 caffe::Blob<>::mutable_gpu_data()
@ 0x7f660256e5b4 caffe::BNLayer<>::Forward_gpu()
@ 0x7f6602388702 caffe::Net<>::ForwardFromTo()
@ 0x7f6602388827 caffe::Net<>::Forward()
@ 0x7f6602541302 caffe::Solver<>::Test()
@ 0x7f6602541d1e caffe::Solver<>::TestAll()
@ 0x7f6602541e3c caffe::Solver<>::Step()
@ 0x7f66025429c9 caffe::Solver<>::Solve()
@ 0x40bda9 train()
@ 0x4077e8 main
@ 0x7f66004c9830 __libc_start_main
@ 0x4080b9 _start
@ (nil) (unknown)
已放弃 (核心已转储)
第一眼以为是gpu内存什么的问题,一般需要改tain.prototxt 文件中的batch_size, 但是,之前出现 out of memory 时,我已经把batch_size改为 1 。所以没法再改了。
再一看,发现该问题是出现在test阶段,然后我改了segnet_solver.prototxt 文件中的 test_interval:1449。 改为100(表示100次迭代后,进行一次test),所以在下一次训练时,在迭代100次就出现了问题。综上,应该是test的问题,而且,因为nyu的数据集较小,没有预备测试集。待我做好测试集以后再试试!
ok,训练集和测试集准备好,并在train.prototxt中做出修改,增加测试阶段的部分(仿照train部分)
不过,结果也太差了!
问题二: Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR
*** Check failure stack trace: ***
-
解决方案:终端运行的线程太多,导致程序无法正常启动,尝试关闭不必要的线程。F0319 17:07:22.472443 4156 cudnn_conv_layer.cpp:53] Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR *** Check failure stack trace: ***