現在caffe用的越來越少了,但是由於如下的兩個原因,還有可能偶爾會被用到:
一些舊模型可能是用caffe生成的,臨時需要用一下;
caffe的原始碼結構寫得非常清晰,而且其編譯鏈結過程據說會很鍛鍊內功。
因此,還會偶爾編譯caffe。現在將遇到的各種坑簡單的記錄下來,並供以後汲取營養。
參見如下的方法即可:
ubuntu16.04 在cuda9.0環境下編譯caffe;
ubuntu18.04配置caffe環境(cudn9.0 + cudnn7 gpu版)&&ubuntu16.04可用
ubuntu16.04 安裝 caffe:
上面這幾個互相參考即可。
一度一直報錯:「/usr/include/c++/5/bits/c++0x_warning.h:32:2:error: #error this file requires compiler and library supportfor the iso c++ 2011 standard. thissupportmust be enabled with the -std=c++11 or -std=gnu++11compileroptions.「一直不知道時什麼原因,後來發現只有在編譯cu檔案的時候財報這個錯誤,發現時是在配置cuda的時候報錯。這是編譯器沒有指定
後來在make runtest 和 make pycaffe的時候也報了類似的錯誤;
在makefile裡面找到如下的內容,並新增上-std=c++11
cxxflags += -pthread -fpic $(common_flags) $(warnings)-std=c++11
nvccflags += -d_force_inlines -ccbin=$(cxx) -xcompiler -fpic $(common_flags)-std=c++11
linkflags += -pthread -fpic $(common_flags) $(warnings)-std=c++11
caffe和pycaffe都編譯成功之後,在pycaffe裡面import caffe始終報如下的錯誤:
[pycaffe] typeerror: __init__() got an unexpected keyword argument 'syntax'
經過檢索,發現是系統的protobuf版本不吻合導致的。
用如下命令檢視檢視系統的protobuf:
protoc --version
檢視哪些路徑安裝了protobuf:
whereis protoc
檢視預設呼叫的是哪乙個:
which protoc
顯示目前版本為3.8.0。而根據如下的帖子, ,基本可以判定,caffe需要的版本為2.6.1,上述錯誤是由於版本不對導致的。解決辦法是必須要將系統中所有的protobuf全部刪除,然後重新裝乙個2.6.1版本。刪除的方法是(
sudo apt-get remove libprotobuf-dev
sudo apt-get remove protobuf-compiler
sudo apt-get remove python-protobuf
sudo rm -rf /usr/local/bin/protoc
sudo rm -rf /usr/bin/protoc
sudo rm -rf /usr/local/include/google
sudo rm -rf /usr/local/include/protobuf*
sudo rm -rf /usr/include/google
sudo rm -rf /usr/include/protobuf*
以下三行慎用!
sudo rm -rf /usr/local/lib/libproto*
sudo rm -rf /usr/lib/libproto*
sudo rm -rf /usr/lib/x86_64-linux-gnu/libproto*
之後就可以重新開始安裝:
$ cd protobuf-2.6.1
$ ./configure
$ make all
$ sudo make install
為了python能夠呼叫,還需要安裝python介面,否則在呼叫pycaffe時,import caffe會報如下錯誤:
importerror: no module named google.protobuf.internal
安裝方法:
在protobuf2.6.1.的路徑下:
cd ./python
python setup.py build
python setup.py test
python setup.py install
工欲善其事必先利其器
裸機開發流程 1.編寫裸機程式 2.除錯裸機程式 3.生成2進製映像 編譯 鏈結 格式轉換 4.燒寫 執行2進製映像。嵌入式開發模型 交叉開發常用交叉工具 1 交叉編譯器,arm linux gcc 2 交叉鏈結器,arm linux ld 3 交叉轉換器,arm linux readelf 4 交...
工欲善其事,必先利其器
如何做好乙個答辯ppt?最為重要的是,不要照搬網上那些所謂的模板,不要用模板,不要用模板。你覺得模板很酷炫還是很大氣?所謂的模板醜不醜不說,很有可能不適合你要表達的東西,填鴨式的ppt是很糟糕的。去改動別人的ppt模板,來適應自己所要表達的內容,所花費的時間完全夠你做乙個ppt了。另外,報告用ppt...
「工欲善其事 必先利其器」
部落格不夠,日常來湊!haha,真的兩個週都沒有更新過文章了 愧疚 前兩天看到一句話講,只要精神上滿足,身體的疲憊算不上什麼。我好像真的達不到這個境界。為期半個多月的感冒真的讓我變懶散了好多,不過還好,感覺終於可以告一段落了。昨天終於好好的著手去寫趙老師留給我的作業 超怕過期的說 學了一丟丟pyth...