caffe 訓練安裝測試問題集錦

2021-08-21 14:09:20 字數 4450 閱讀 8370

1、check failed: target_blobs.size() == source_layer.blobs_size() (2 vs. 1) incompatible number of blobs for layer conv0

測試的時候出現此問題

2、cudasuccess(2 vs. 0) out of memory,如下圖

這種問題為視訊記憶體不足導致的,出現這種問題有以下幾種可能

1)若出現在train階段,則train的batch_size設定的太大,此時改小batch_size一般就能解決

2)若出現在train過程中的test階段,則test的batch_size設定的太大,此時改小batch_size一般就能解決

若改小test的batch_size還不能解決此問題是因為在整個train過程中test的時候train所占用的batch_size的空間並沒有釋放,所以train中的test的batch_size的大小為train的batch_size加上test的batch_size,這種情況就只能先train,train結束之後再test

3)若改小batch_size還是不能解決此情況,那麼有可能是輸入太大導致的,這時候在生成lmdb的時候把尺寸設定的小一點就可以了

4)若以上三種均不能解決,那麼有可能是網路太複雜導致的,這時可以更換簡單一點的網路去訓練,或者換視訊記憶體更大一點的gpu

3、error: hdf5.h: no such file or directory

step 1

在makefile.config檔案,新增/usr/include/hdf5/serial/ 到 include_dirs,也就是把下面第一行**改為第二行**。

include_dirs := $(python_include) /usr/local/include

include_dirs := $(python_include) /usr/local/include /usr/include/hdf5/serial/

step 2

在makefile檔案中,把 hdf5_hl 和hdf5修改為hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行**改為第二行**。

libraries += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

libraries += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

4、fatal error: caffe/proto/caffe.pb.h: no such file or directory

$ protoc src/caffe/proto/caffe.proto --cpp_out=.

$ sudo mkdir include/caffe/proto

$ sudo mv src/caffe/proto/caffe.pb.h include/caffe/proto

5、caffe cudnnsetconvolution2ddescriptor error: too few arguments in function call

在caffe/include/caffe/util/cudnn.hpp檔案中修改如下

template inline void setconvolutiondesc(cudnnconvolutiondescriptor_t* conv,

cudnntensordescriptor_t bottom, cudnnfilterdescriptor_t filter,

int pad_h, int pad_w, int stride_h, int stride_w)

6、caffe /usr/bin/ld: cannot find -lhdf5

或./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: no such file or directory

修改makefile.config檔案如下

include_dirs := $(python_include) /usr/local/include /usr/include/hdf5/serial

library_dirs := $(python_lib) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

7、warning: enumeration value 'cudnn_status_runtime_prerequisite_missing'

對cudnngeterrorstring{}函式進行了修改,修改如下

#if cudnn_version_min(6, 0, 0)

case cudnn_status_runtime_prerequisite_missing:

return "cudnn_status_runtime_prerequisite_missing";

#endif

#if cudnn_version_min(7, 0, 0)

case cudnn_status_runtime_in_progress:

return "cudnn_status_runtime_in_progress";

case cudnn_status_runtime_fp_overflow:

return "cudnn_status_runtime_fp_overflow";

#endif

8、

.build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::string const&, int)'

.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::string const&, cv::_inputarray const&, std::vector>&, std::vector> const&)'

.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_inputarray const&, int)'

解決方法,修改makefile.config檔案把use_pkg_config := 1前面的#號去掉即可

9、python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: no such file or directory

解決方法:

import numpy as np

np.get_include()

得到:

/usr/local/lib/python2.7/dist-packages/numpy/core/include

在makefile.config找到python_include,發現有點不同:

python_include := /usr/include/python2.7 \

/usr/lib/python2.7/dist-packages/numpy/core/include

要加乙個local,變成:

python_include := /usr/include/python2.7 \

/usr/local/lib/python2.7/dist-packages/numpy/core/include

再make pycaffe就ok了

10、「check failed: error == cudasuccess (10 vs. 0) invalid device ordinal」

此問題發生在推理階段,造成此問題原因是因為實際的gpu的個數跟配置的gpu個數不相符導致的

11、create_annoset.py出現os.symlink(out_dir,link_dir) oserror:[errno 17] file exists,如下:

解決方法:把create_annoset.py檔案166行的if os.path.exists(link_dir)改為如下

hadoop hdfs 問題集錦 面試問題集錦

hadoop hdfs問題集錦 一 hadoop為什麼不適合處理大量的小檔案,怎麼解決?原因 1 檔案的元資料 包括檔案被分成了哪些blocks,每個block儲存在哪些伺服器的哪個block塊上 都是儲存在namenode上的記憶體,會對namenode的記憶體造成壓力 2 檔案過多會造成檔案的定...

面試問題集錦

jdbc運算元據庫過程 可重入鎖和synchronized鎖區別 synchronized的上鎖機制。redis實現分布式鎖 jvm優化 classloader 事務的傳播級別 mysql的鎖機 制除了用過redis 還有沒有用過其他的快取技術?jvm原理?class載入順序 aop怎麼實現啊?分布...

微軟MCSE 認證測試問題集錦 一

windows 2000的安裝 問 是否可以把windows 2000 professional公升級為server?答 不可以。它們是windows 2000的兩個不同的產品系列,95 98 nt workstation是客戶端,所以只能公升級到2000的客戶端 professional 而win...