黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Ubuntu14.04配置cuda-convnet

系統(tǒng) 2869 0

轉(zhuǎn)載請(qǐng)注明:http://blog.csdn.net/stdcoutzyx/article/details/39722999

在上一個(gè)鏈接中,我配置了 cuda ,有強(qiáng)大的 GPU ,自然不能暴殄天物,讓資源白白空暇著,所以配置一下卷積神經(jīng)網(wǎng)絡(luò)跑一下程序嘍。至于卷積神經(jīng)網(wǎng)絡(luò)的原理,容后再寫。打算先寫庫(kù)的使用方法,再寫原理,以行動(dòng)帶動(dòng)對(duì)理論的追求。

話不多說(shuō),步入正題。

1.?預(yù)說(shuō)明

關(guān)于 cuda-convnet ,起源于一篇經(jīng)典論文 ①,論文中針對(duì) ILSVRC-2010 的數(shù)據(jù)進(jìn)行實(shí)驗(yàn),然后發(fā)布了事實(shí)上驗(yàn)使用的代碼,鏈接為 ②。可是,事實(shí)往往跟論文是有差距的,鏈接②中的代碼根本不能重現(xiàn)論文中的結(jié)果。在下不才,在使用這個(gè)鏈接的庫(kù)非常久之后才發(fā)現(xiàn)的,認(rèn)為非常坑,希望后來(lái)者慎之。

之所以說(shuō)它坑,首先,論文中提到特性中, multi-GPU dropout 就沒(méi)有實(shí)現(xiàn),并且也沒(méi)有給出論文中 8 層卷積神經(jīng)網(wǎng)絡(luò)的配置文件。總之不能直接拿來(lái)用,須要自己探索。

盡管如此,但有總比沒(méi)有好,畢竟這個(gè)庫(kù)實(shí)現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)封裝的非常好,論文中的大神的貢獻(xiàn)非我等小菜所能企及的。給大神點(diǎn) 32 個(gè)贊。

本文僅僅對(duì) cuda-convnet cuda-convnet2 的配置進(jìn)行說(shuō)明,論文中的作者還發(fā)布了其它版本號(hào)的庫(kù),尚未用到,故且按下不提。

2.?Cuda-convnet 配置

2.1.?源代碼下載

參考鏈接②,先將源代碼下載下來(lái)。

      svn checkout http://cuda-convnet.googlecode.com/svn/trunk/ cuda-convnet-read-only
    

取出的版本號(hào)是 562

2.2.?安裝必要的庫(kù)

然后,安裝必須的庫(kù),我使用的是 ubuntu 系統(tǒng)。所以命令為

      sudo apt-get install python-dev python-numpy python-magic python-matplotlib libatlas-base-dev
    

當(dāng)然,還要確認(rèn)你安裝了 cuda ,我安裝的是 cuda6.5 ,在 /usr/local/ 文件夾下,例如以下所看到的:

      $ ls /usr/local
bin  cuda  cuda-6.5  etc  games  include  lib  man  sbin  share  src
    

2.3.?更改 build.sh

進(jìn)入到剛才下載的 cuda-convnet-read-only 文件夾,更改 build.sh 文件里的配置路徑。例如以下所看到的:

      # CUDA toolkit installation directory.
export CUDA_INSTALL_PATH=/usr/local/cuda
 
# CUDA SDK installation directory.
export CUDA_SDK_PATH=/usr/local/cuda-6.5/samples/common/inc
 
# Python include directory. This should contain the file Python.h, among others.
export PYTHON_INCLUDE_PATH=/usr/include/python2.7
 
# Numpy include directory. This should contain the file arrayobject.h, among others.
export NUMPY_INCLUDE_PATH=/usr/lib/python2.7/dist-packages/numpy/core/include/numpy
 
# ATLAS library directory. This should contain the file libcblas.so, among others.
export ATLAS_LIB_PATH=/usr/lib/atlas-base
 
make $*
    


依照官網(wǎng)的教程,配置完 build.sh 后就能夠進(jìn)行編譯了。可是會(huì)錯(cuò)誤發(fā)生,還須要改例如以下幾個(gè)地方才干夠。

2.4.?頭文件加入

直接編譯會(huì)發(fā)生找不到 cutil_inline.h 頭文件的錯(cuò)誤。分析原因可能是原來(lái)有這個(gè)頭文件,后來(lái)這個(gè)頭文件的功能被實(shí)現(xiàn)到其它頭文件里去了。

include 子目錄下田間 cutil_inline.h 文件,并輸入內(nèi)容。

      #include "helper_cuda.h"
#define cutilCheckMsg(a) getLastCudaError(a)
#define cutGetMaxGflopsDeviceId() gpuGetMaxGflopsDeviceId()
#define MIN(a,b) (a) < (b) ? (a) : (b)
    

2.5.?MakeFile 文件更改

MakeFile 3 行,原文例如以下:

      INCLUDES :=  -I$(PYTHON_INCLUDE_PATH) -I$(NUMPY_INCLUDE_PATH) -I./include -I./include/common -I./include/cudaconv2 -I./include/nvmatrix
    

加入 cuda 的路徑后例如以下:

      INCLUDES :=  -I$(PYTHON_INCLUDE_PATH) -I$(NUMPY_INCLUDE_PATH) -I$(CUDA_SDK_PATH) -I./include -I./include/common -I./include/cudaconv2 -I./include/nvmatrix
    

保存之。

2.6.?最后的庫(kù)鏈接錯(cuò)誤

做完上述修改后,能夠編譯了,但到最后會(huì)發(fā)生一個(gè)庫(kù)鏈接的錯(cuò)誤,不用管,直接將那個(gè)庫(kù)凝視掉。

common-gcc-cuda-4.0.mk 文件的 332 行。直接用 # 號(hào)凝視。

      # LIB += -lcutil_$(LIB_ARCH) $(LIBSUFFIX) -lshrutil_$(LIB_ARCH) $(LIBSUFFIX)
    

至此,就能夠完畢 cuda-convnet 的編譯了。

3.?Cuda-convnet2 配置

顧名思義,這是 cuda-convnet 2.0 版本號(hào),支持多 GPU 執(zhí)行。

3.1.?源代碼下載

git?clone? https://code.google.com/p/cuda-convnet2/

3.2.?必要的庫(kù)

      sudo apt-get install python-dev python-numpy python-scipy python-magic python-matplotlib libatlas-base-dev libjpeg-dev libopencv-dev
    

3.3.?配置

我僅僅能說(shuō),這個(gè)版本號(hào)的比上個(gè)版本號(hào)人性化多了,這個(gè)版本號(hào)的 build.sh 直接如此。

      # CUDA toolkit installation directory.
export CUDA_INSTALL_PATH=/usr/local/cuda
 
# Python include directory. This should contain the file Python.h, among others.
export PYTHON_INCLUDE_PATH=/usr/include/python2.7
 
# Numpy include directory. This should contain the file arrayobject.h, among others.
export NUMPY_INCLUDE_PATH=/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/
 
# ATLAS library directory. This should contain the file libcblas.so, among others.
export ATLAS_LIB_PATH=/usr/lib/atlas-base
 
# You don't have to change these:
export LD_LIBRARY_PATH=$CUDA_INSTALL_PATH/lib64:$LD_LIBRARY_PATH
export CUDA_SDK_PATH=$CUDA_INSTALL_PATH/samples
export PATH=$PATH:$CUDA_INSTALL_PATH/bin
    

假設(shè)是在 ubuntu 下的話,這樣就直接已經(jīng)基本把路徑都配置對(duì)了。

3.4.?鏈接錯(cuò)誤

可是直接編譯的話還是會(huì)遇到錯(cuò)誤,例如以下所看到的:

      cd ./bin/ && g++  -O3   -DNUMPY_INTERFACE -shared -Wl,-no-undefined -o libutilpy.so src/matrix.o -L/usr/lib/atlas-base -latlas -lcblas -lpython2.7
/usr/bin/ld: cannot find -latlas
/usr/bin/ld: cannot find -lcblas
collect2: error: ld returned 1 exit status
    

主要是由于 atlas 庫(kù)中沒(méi)有 libatlas.so libctlas.so 。查看 atlas 的文件夾發(fā)現(xiàn)結(jié)構(gòu)如此:

      :/usr/lib/atlas-base$ ls -l
總用量 4292
drwxr-xr-x 2 root root    4096  9月 22 11:41 atlas
lrwxrwxrwx 1 root root      15  2月  4  2014 libatlas.so.3 -> libatlas.so.3.0
-rw-r--r-- 1 root root 3746968  2月  4  2014 libatlas.so.3.0
lrwxrwxrwx 1 root root      15  2月  4  2014 libcblas.so.3 -> libcblas.so.3.0
-rw-r--r-- 1 root root  135376  2月  4  2014 libcblas.so.3.0
lrwxrwxrwx 1 root root      17  2月  4  2014 libf77blas.so.3 -> libf77blas.so.3.0
-rw-r--r-- 1 root root  131000  2月  4  2014 libf77blas.so.3.0
lrwxrwxrwx 1 root root      22  2月  4  2014 liblapack_atlas.so.3 -> liblapack_atlas.so.3.0
-rw-r--r-- 1 root root  369472  2月  4  2014 liblapack_atlas.so.3.0
    

加入兩個(gè)軟鏈接,運(yùn)行命令:

      sudo ln -s libatlas.so.3.0 libatlas.so
sudo ln -s libcblas.so.3.0 libcblas.so
    

文件夾結(jié)構(gòu)變?yōu)槿绱耍?

      /usr/lib/atlas-base$ ls -l
總用量 4292
drwxr-xr-x 2 root root    4096  9月 22 11:41 atlas
lrwxrwxrwx 1 root root      15 10月  1 22:35 libatlas.so -> libatlas.so.3.0
lrwxrwxrwx 1 root root      15  2月  4  2014 libatlas.so.3 -> libatlas.so.3.0
-rw-r--r-- 1 root root 3746968  2月  4  2014 libatlas.so.3.0
lrwxrwxrwx 1 root root      15 10月  1 22:36 libcblas.so -> libcblas.so.3.0
lrwxrwxrwx 1 root root      15  2月  4  2014 libcblas.so.3 -> libcblas.so.3.0
-rw-r--r-- 1 root root  135376  2月  4  2014 libcblas.so.3.0
lrwxrwxrwx 1 root root      17  2月  4  2014 libf77blas.so.3 -> libf77blas.so.3.0
-rw-r--r-- 1 root root  131000  2月  4  2014 libf77blas.so.3.0
lrwxrwxrwx 1 root root      22  2月  4  2014 liblapack_atlas.so.3 -> liblapack_atlas.so.3.0
-rw-r--r-- 1 root root  369472  2月  4  2014 liblapack_atlas.so.3.0
    

然后就能夠正常編譯了。

參考文獻(xiàn)

① ImageNet?Classification?with?Deep?Convolutional?Neural?Networks

②  https://code.google.com/p/cuda-convnet

③  https://code.google.com/p/cuda-convnet2

Ubuntu14.04配置cuda-convnet


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論