日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

caffe 错误

發(fā)布時(shí)間:2023/11/29 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 caffe 错误 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一些caffe錯(cuò)誤

  • 訓(xùn)練時(shí)很快梯度爆炸,loss猛增至nan
    如果找不到數(shù)據(jù)上的原因的話,可以懷疑caffe框架有問題,換用其它版本試試。比如我遇到的問題是在訓(xùn)練時(shí)使用了Accuracy層,而該層的實(shí)現(xiàn)代碼在某次更新中GPU代碼存在bug,復(fù)用了其它層的變量導(dǎo)致對(duì)loss的計(jì)算產(chǎn)生了影響。訓(xùn)練時(shí)去掉accuracy層就好了,測(cè)試時(shí)使用該層不受影響,或者使用這里的補(bǔ)丁https://github.com/BVLC/caffe/pull/5987 。
  • Check failed: error == cudaSuccess (9 vs. 0) invalid configuration argument
    可能原因是GPU硬件配置低,線程數(shù)不夠,超過了它能承受的范圍。caffe不支持小于2.0計(jì)算能力的nvidia GPU,嘗試調(diào)小batch size或者降低圖片縮放的大小,使用較小的網(wǎng)絡(luò)如ZF net或者VGG_CNN_M_1024試試。
    如果硬件沒問題那么如果Faster R-CNN的smooth L1 loss層報(bào)錯(cuò),RPN未產(chǎn)生候選區(qū)域,導(dǎo)致CAFFE_GET_BLOCKS分配到的block數(shù)為0,將配置文件中的bg_thresh_lo設(shè)置為0,可以增加roi的數(shù)量,然而有時(shí)候仍然不行。
    將CAFFE_GET_BLOCKS(count)替換為std::max(1, CAFFE_GET_BLOCKS(count))也可以解決一部分這個(gè)問題。
    如果問題仍未解決,請(qǐng)仔細(xì)檢查訓(xùn)練數(shù)據(jù),最終發(fā)現(xiàn)數(shù)據(jù)中某個(gè)樣本是負(fù)樣本(Faster R-CNN的該標(biāo)簽中沒有目標(biāo)標(biāo)記),導(dǎo)致計(jì)算smooth l1損失時(shí)ground truth為0,因此導(dǎo)致了cuda的block數(shù)為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.

  • 編譯時(shí)報(bào)錯(cuò):convert_imageset.cpp undefined reference to `caffe::ReadImageToDatum
    原因:之前安裝caffe時(shí)在/usr/lib/libcaffe.so創(chuàng)建了符號(hào)鏈接,刪除即可。
  • 編譯時(shí)報(bào)錯(cuò):undefined reference to 'omp_set_num_threads'
    在Makefile或其include的Makefile.config中對(duì)gcc編譯選項(xiàng)加入-fopenmp:
    CXXFLAGS += -fopenmp LDFLAGS += -lgomp
    注意不要加入到COMMON_FLAGS中,因?yàn)槠浔籲vcc用到,而nvcc沒有openmp選項(xiàng)。
  • 在運(yùn)行caffe的時(shí)候,如果出現(xiàn)如下報(bào)錯(cuò)
    free(): invalid pointer: 0x00000000020663b0
    可能是 glibc malloc/free 的問題, 可用TCMalloc庫替代:
    # 下載tcmalloc庫.so sudo apt install libtcmalloc-minimal4 # 可選方式二: 性能分析工具(全家桶): apt install google-perftools # 對(duì)于要執(zhí)行的程序通過preload替換掉原malloc功能庫 export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4"
    Google開源的TCMalloc,在C++小對(duì)象頻繁創(chuàng)建銷毀的處理上擁有非常大的優(yōu)勢(shì)。tcmalloc速度快,但是耗內(nèi)存,不適合直接與caffe鏈接到一塊, 從caffe的提交歷史可以看到曾經(jīng)加入了tcmalloc后來又刪除了.
    在使用PyTorch或者Tensorflow等框架時(shí)也可能遇到這個(gè)問題.
    參考How To Use TCMalloc? 與 TCMalloc : Thread-Caching Malloc
  • caffe的python接口.
    caffe的python接口很容易因?yàn)镃++代碼的改動(dòng)編譯而出現(xiàn)運(yùn)行時(shí)錯(cuò)誤. 解決方法是刪除python/caffe/下的caffe.so 或者重新編譯整個(gè)工程.
    其它錯(cuò)誤, 每次修改caffe的C++代碼并編譯caffe時(shí)make或cmake工具僅編譯改動(dòng)過的文件及依賴文件,可能會(huì)出現(xiàn)一些很奇怪的運(yùn)行時(shí)錯(cuò)誤. 這種情況下的首選嘗試方法就是重新編譯整個(gè)工程. (我遇到很多次這種情況了, 可能是Makefile寫的不夠完善)

  • 轉(zhuǎn)載于:https://www.cnblogs.com/makefile/p/caffe-errors.html

    總結(jié)

    以上是生活随笔為你收集整理的caffe 错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。