caffe 错误
一些caffe錯誤
如果找不到數據上的原因的話,可以懷疑caffe框架有問題,換用其它版本試試。比如我遇到的問題是在訓練時使用了Accuracy層,而該層的實現代碼在某次更新中GPU代碼存在bug,復用了其它層的變量導致對loss的計算產生了影響。訓練時去掉accuracy層就好了,測試時使用該層不受影響,或者使用這里的補丁https://github.com/BVLC/caffe/pull/5987 。
Check failed: error == cudaSuccess (9 vs. 0) invalid configuration argument
可能原因是GPU硬件配置低,線程數不夠,超過了它能承受的范圍。caffe不支持小于2.0計算能力的nvidia GPU,嘗試調小batch size或者降低圖片縮放的大小,使用較小的網絡如ZF net或者VGG_CNN_M_1024試試。
如果硬件沒問題那么如果Faster R-CNN的smooth L1 loss層報錯,RPN未產生候選區域,導致CAFFE_GET_BLOCKS分配到的block數為0,將配置文件中的bg_thresh_lo設置為0,可以增加roi的數量,然而有時候仍然不行。
將CAFFE_GET_BLOCKS(count)替換為std::max(1, CAFFE_GET_BLOCKS(count))也可以解決一部分這個問題。
如果問題仍未解決,請仔細檢查訓練數據,最終發現數據中某個樣本是負樣本(Faster R-CNN的該標簽中沒有目標標記),導致計算smooth l1損失時ground truth為0,因此導致了cuda的block數為0.
再來看Invalid Configuration Argument的一般原因:
Invalid Configuration Argument - This error means that the dimension of either the specified grid of blocks (dimGrid) , or number of threads in a block (dimBlock), is incorrect. In such a case, the dimension is either zero or the dimension is larger than it should be. This error will only occur if you dynamically determine the dimensions.
原因:之前安裝caffe時在/usr/lib/libcaffe.so創建了符號鏈接,刪除即可。
在Makefile或其include的Makefile.config中對gcc編譯選項加入-fopenmp:
CXXFLAGS += -fopenmp LDFLAGS += -lgomp
注意不要加入到COMMON_FLAGS中,因為其被nvcc用到,而nvcc沒有openmp選項。
free(): invalid pointer: 0x00000000020663b0
可能是 glibc malloc/free 的問題, 可用TCMalloc庫替代:
# 下載tcmalloc庫.so sudo apt install libtcmalloc-minimal4 # 可選方式二: 性能分析工具(全家桶): apt install google-perftools # 對于要執行的程序通過preload替換掉原malloc功能庫 export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4"
Google開源的TCMalloc,在C++小對象頻繁創建銷毀的處理上擁有非常大的優勢。tcmalloc速度快,但是耗內存,不適合直接與caffe鏈接到一塊, 從caffe的提交歷史可以看到曾經加入了tcmalloc后來又刪除了.
在使用PyTorch或者Tensorflow等框架時也可能遇到這個問題.
參考How To Use TCMalloc? 與 TCMalloc : Thread-Caching Malloc
caffe的python接口.
caffe的python接口很容易因為C++代碼的改動編譯而出現運行時錯誤. 解決方法是刪除python/caffe/下的caffe.so 或者重新編譯整個工程.
其它錯誤, 每次修改caffe的C++代碼并編譯caffe時make或cmake工具僅編譯改動過的文件及依賴文件,可能會出現一些很奇怪的運行時錯誤. 這種情況下的首選嘗試方法就是重新編譯整個工程. (我遇到很多次這種情況了, 可能是Makefile寫的不夠完善)
轉載于:https://www.cnblogs.com/makefile/p/caffe-errors.html
總結
- 上一篇: 女人做梦梦到坟墓是什么征兆
- 下一篇: odoo10学习笔记十四:mixin其他