這個我覺得不一定吧,深度學(xué)習(xí)平臺沒有好壞之分,只能說每個平臺的特點都不一樣,選哪個都可以,關(guān)鍵是當(dāng)你選定平臺準(zhǔn)備開始做的時候,盡量就不要換了。我目前用的是caffe,其實百度自己平臺PaddlePaddle也是可以的--、還有,你如果想去讀源碼的話,數(shù)學(xué)基礎(chǔ)一定要強(qiáng)?。。?/p>
創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、新田網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為新田等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
建議還是放到linux下運行,實際上很多人把caffe放到服務(wù)器上跑,而服務(wù)器一般是不帶GPU的,所以caffe可以不依賴cuda,如果你不需要CUDA,你可以安裝CPU_ONLY版本:編輯文件 .\windows\CommonSettings.props,設(shè)置CpuOnlyBuild 為 true,UseCuDNN為false。
當(dāng)然我還是建議在linux上跑
Caffe是目前深度學(xué)習(xí)比較優(yōu)秀好用的一個開源庫,采樣c++和CUDA實現(xiàn),具有速度快,模型定義方便等優(yōu)點。學(xué)習(xí)了幾天過后,發(fā)現(xiàn)也有一個不方便的地方,就是在我的程序中調(diào)用Caffe做圖像分類沒有直接的接口。Caffe的數(shù)據(jù)層可以從數(shù)據(jù)庫
由于最近安裝了Ubuntu16.04,苦于之前配置Caffe的教程都在版本14.04左右,無奈只能自己摸索,最終配置成功。本文教程的特點是不需要降級gcc的版本,畢竟cuda7.5不支持gcc5以上(默認(rèn)不支持,實際支持),避免出現(xiàn)一系列亂七八糟的問題,反正之前我是碰到了。
本文是在參考caffe官網(wǎng)教程()結(jié)合自己總結(jié)經(jīng)驗而來,對此表示感謝。
1.所需文件下載
1.1.Ubuntu16.04在官網(wǎng)下載(),然后在windows下用UltraISO制作,相關(guān)文章搜索有一大片,此處不再贅述。
1.2.cuda7.5下載,下載的版本是ubuntu15.04的run文件,個人感覺比較方便。
1.3.cudnn4.0下載(),進(jìn)去之后如果有注冊過nvidia的賬戶直接點擊download,否則需要注冊一個賬戶,注冊完之后有一個調(diào)查,隨便選幾個鉤就可以,然后下一步是接受條款開始就可以下載了。
1.4.caffe下載()就在官方的github下載就可以了。
2.顯卡驅(qū)動安裝
2.1.第一種方法是直接在ubuntu系統(tǒng)設(shè)置,軟件和更新里面,選擇中國的服務(wù)器源刷新之后,點擊附加驅(qū)動選項,在Nvidia Corporation選擇361.42(強(qiáng)迫癥必須安裝最新的),然后點擊應(yīng)用更改,下載安裝完之后重啟。
2.2.第二種方法是去官方下載()好驅(qū)動的run文件,選擇對應(yīng)顯卡型號下載。然后關(guān)機(jī)把顯示器插到集成顯卡接口上,或者終端下
sudo gedit /etc/modprobe.d/blacklist.conf
輸入密碼后在最后一行編輯上
blacklist nouveau
Ctrl +C保存后終端輸入
sudo update-initramfs -u
重啟之后在界面按Ctrl+Alt+F2,輸入root以及密碼,然后
service lightdm stop
sh 你自己的驅(qū)動文件的完整路徑,默認(rèn)選項就可以安裝了,安裝后重啟
3.Cuda7.5安裝
3.1.以文件名為cuda.run為例,終端下輸入
sh cuda.run --override 啟動安裝程序,此處有大量的條款,一路空格到最后 輸入accept,依次輸入y回車,然后n(不安裝顯卡驅(qū)動),然后一路y回車,有一個地方需要輸入密碼,還有兩個地方確認(rèn)安裝路徑,直接回車即可,完成安裝,默認(rèn)安裝路徑是/usr/local
將下載下來的cudnn-7.0-linux-x64-v4.0-prod.tgz 解壓之后,解壓后的cuda文件夾先打開里面的include文件夾,空白右鍵在終端打開輸入:
sudo cp cudnn.h /usr/local/cuda/include/
cd ~/cuda/lib64
sudo cp lib* /usr/local/cuda/lib64/
繼續(xù)更新文件鏈接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.4
sudo ln -s libcudnn.so.4.0.7 libcudnn.so.4
sudo ln -s libcudnn.so.4 libcudnn.so
然后設(shè)置環(huán)境變量
sudo gedit /etc/profile
在末尾加入
PATH=/usr/local/cuda/bin:$PATH
export PATH
保存之后創(chuàng)建鏈接文件
sudo vim /etc/ld.so.conf.d/cuda.conf
鍵盤按i進(jìn)入編輯狀態(tài),添加文字
/usr/local/cuda/lib64
然后按esc,輸入:wq保存退出。
終端下接著輸入
sudo ldconfig 使鏈接生效
4.生成Cuda Sample測試
首先在此之前先把需要的依賴包都安裝好,為接下來make caffe做準(zhǔn)備
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
然后開始make samples ,終端下
cd /home/gomee/NVIDIA_CUDA-7.5_Samples
sudo make all -j4
我是4核電腦所以用了j4,正常情況下肯定會報錯“unsupported GNU version! gcc versions later than 4.9 are not supported!”,原因就是這個cuda不支持gcc5.0以上,終端運行
cd /usr/local/cuda-7.5/include
cp host_config.h host_config.h.bak
sudo gedit host_config.h
Ctrl+F尋找有”4.9”的地方,應(yīng)該是只有一處,在其上方的
#if __GNUC__ 4 || (__GNUC__ == 4 __GNUC_MINOR__ 9)將兩個4改成5,保存退出,繼續(xù)
cd /home/gomee/NVIDIA_CUDA-7.5_Samples
sudo make all -j4
這就應(yīng)該開始make了,此處大約有5、6分鐘。完成之后
cd /home/gomee/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux
./deviceQuery
會出現(xiàn)類似以下的信息
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 750 Ti"
CUDA Driver Version / Runtime Version 8.0 / 7.5
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 2047 MBytes (2146762752 bytes)
( 5) Multiprocessors, (128) CUDA Cores/MP: 640 CUDA Cores
GPU Max Clock rate: 1228 MHz (1.23 GHz)
Memory Clock rate: 3004 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
Default (multiple host threads can use ::cudaSetDevice() with device simultaneously)
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 750 Ti
Result = PASS
這就說明成功了。
5.Python配置
將之前github下載的caffe壓縮文件解壓縮到任一目錄,然后安裝python
python的版本安裝有兩種方式:
第一是直接安裝anaconda,去官網(wǎng)下載 ,選擇linux 64bit 2.7版本下載安裝,anaconda安裝方便但是需要在最后的make配置文件中更改python包含路徑。
第二種方法就是使用原生的python2.7版本,終端下
sudo apt-get install python-pip 安裝pip
這里我們用pip安裝一些python需要的依賴包,不過為了避免各種問題,也可以通過apt-get安裝,反正我這兩種方式都安裝了一遍(-.-)
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
以caffe默認(rèn)解壓到/home/user(你的用戶名)/ ,文件夾名名稱caffe為例
cd /home/user/caffe/python
sudo su
for req in $(cat requirements.txt); do pip install $req; done
這里用pip安裝可能速度很慢,很可能下載好幾個小時,推薦用清華大學(xué)的pip源臨時安裝,所以命令改為如下:
for req in $(cat requirements.txt); do pip install -i $req; done
這里如果第一次有很多紅字錯誤,建議再運行幾遍指導(dǎo)安裝成功,對于黃字提示無需理會,可能是pip版本需要更新。
6.Caffe編譯過程
接下來要進(jìn)入最后的步驟了,終端中
cd /home/user/caffe
cp Makefile.config.example Makefile.config
gedit Makefile.config
將USE_CUDNN := 1 取消注釋,在
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include后面打上一個空格 然后添加/usr/include/hdf5/serial 如果沒有這一句可能會報一個找不到hdf5.h的錯誤
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include先不做更改。
如果是需要生成matlab的caffe wrapper 請取消注釋MATLAB_DIR然后替換為自己的目錄
說一下提前會出現(xiàn)的問題:
第一,make過程中出現(xiàn)比如 string.h ‘memcy’ was not declared in this scope的錯誤是由于gcc編譯器版本太新,解決方法是打開makefile搜索并替換
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
為
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
保存退出
第二,在make過程中還會報一個ld找不到libhdf5 和libhdf5_hl的鏈接問題,這個原因可能也是因為hdf5的問題,首先看/usr/lib/x86_64-linux-gnu 目錄下有沒有l(wèi)ibhdf5.so和libhdf5_hl.so,如果有的話,查看屬性是否有正確的鏈接(正常情況下應(yīng)該是沒有這兩個文件),然后右鍵在終端中打開
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
注意,10.1.0和10.0.2可能不同電腦安裝版本不同,注意看當(dāng)前目錄下存在的文件然后
sudo ldconfig 生效
接下來就是直接編譯的過程
cd /home/user/caffe
make all -j4
make test -j4
make runtest
make pycaffe
make matcaffe
如果編譯沒報錯正常的話,基本就沒問題了。測試python打開
cd /home/user/caffe/python
python
import caffe
如果不報錯就說明編譯成功
測試matlab打開./caffe/matlab/+caffe/private,看有沒有生成一個caffe的mex文件,可以運行+test文件夾里面的程序測試。
小問題:
在使用python接口的時候,可能會報一個什么錯誤(我給忘記了–!),對了是’Mean shape incompatible with input shape.’的錯誤,處理方法是python/caffe文件夾,編輯io.py文件,將
if ms != self.inputs[in_][1:]:
raise ValueError('Mean shape incompatible with input shape.')
替換為
if ms != self.inputs[in_][1:]:
print(self.inputs[in_])
in_shape = self.inputs[in_][1:]
m_min, m_max = mean.min(), mean.max()
normal_mean = (mean - m_min) / (m_max - m_min)
mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min
然后make clean再重新make
7.總結(jié)
至此,Ubuntu16.04下編譯Caffe的教程就結(jié)束了,作者歷時三天,裝了好幾遍系統(tǒng),剛開始用Ubuntu14.04,結(jié)果系統(tǒng)出現(xiàn)問題,強(qiáng)迫癥實在受不了,就嘗試著裝16.04繼續(xù)折騰,最終折騰成功。以后可能會更新python3下的編譯教程,需要自己編譯boost版本,總之也很麻煩。