本文所采用的环境为:Ubuntu16.04 64位。

1、安装caffe相关依赖项:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2、安装Python相关依赖库:

sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython

3、安装驱动。

驱动可以在NVIDIA官网下载:http://www.nvidia.com/Download/index.aspx?lang=en-us,选择适合自动的电脑的驱动,查看电脑驱动的方式:

spci | grep -i vga:
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107GLM [Quadro K1100M] (rev a1)

也可以通过Ubuntu自带的附加驱动进行下载,这种方式不容易出错。

在附加驱动中选择电脑的驱动版本。安装成功后,通过:

sudo nvidia-smi

查看是否安装成功。若列出了GPU的信息列表则表示驱动安装成功。如下图:

3、安装CUDA

CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。
(1)下载CUDA
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:

下载完成通过下面指令进行安装:

sudo sh cuda_8.0.61_375.26_linux.run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装Linux-x86_64375.26驱动时,一定要选择否。因为前面我们已经安装了更加新的Linux-x86_64375.26,所以这里不要选择安装。其余的都直接默认或者选择是即可。其它的安装默认方式就可以了。

(2)配置环境

打开~/.bashrc文件:

sudo nano ~/.bashrc

在文件的末尾加入:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(3)测试CUDAsamples

 cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
 make
 sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功。

(4)配置cuDNN

cuDNNGPU加速计算深层神经网络的库。首先去官网https://developer.nvidia.com/rdp/cudnn-download下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:

下载cuDNN5.1之后进行解压:

sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz 

进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:

cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include  #复制头文件
然后进入: lib64
cd lib64
sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接,注意自己下载的版本号
sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接进入lib64目录下的动态文件

4 安装opencv2.4.13,

参考:http://blog.csdn.net/lovelyaiq/article/details/11798791

5配置caffe

(1)使用Git直接下载Caffe非常简单,或者去https://github.com/BVLC/caffe下载。由于我习惯去github上找代码,所以就直接去下载的源码。

下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe.

(2)因为make指令只能makeMakefile.config文件,而Makefile.config.examplecaffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.configsudocpMakefile.config.exampleMakefile.config

(3)打开并修改配置文件:

 sudo gedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件:

a.若使用cudnn,则

将#USE_CUDNN := 1修改成: USE_CUDNN := 1

b.若使用的opencv版本是3的,则

将#OPENCV_VERSION := 3 修改为:OPENCV_VERSION := 3

c.若要使用python来编写layer,则

将       #WITH_PYTHON_LAYER := 1  
修改为 WITH_PYTHON_LAYER := 1 

d.重要的一项:

#Whateverelseyoufindyouneedgoeshere.下面的

INCLUDE_Dirs := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_Dirs := $(PYTHON_LIB) /usr/local/lib /usr/lib 

修改为:

INCLUDE_Dirs := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial /opt/Opencv2/include
LIBRARY_Dirs := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial /opt/Opencv2/lib

其中:INCLUDE_Dirs为需要包含的头文件,例如将Opencv的头文件,如果不加入,opencv的头文件将会报错,找不到头文件。例如:

src/caffe/data_transformer.cpp:2:33:fatalerror:opencv2/core/core.hpp:没有那个文件或目录。

LIBRARY_Dirs为动态链接库文件路径,编译过程中需要的动态链接库,都需要加入到其中。

这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.

(4)修改makefile文件

打开makefile文件,做如下修改:

将:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLInes -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(5)编辑/usr/local/cuda/include/host_config.h

将其中的第115行注释掉:

将#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
6 验证

经过前面的努力,最后终于到了验证的阶段,在验证的阶段,也会有很多的坑等着你,但要充分发挥,逢坑必补的原则。

make test
make runtest
make pycaffe  
make distribute
# dir 是caffe放置的路径
echo 'export PYTHONPATH=/dir/caffe/python:$PYTHONPATH' >> ~/.bashrc

验证pycaffe是否安装成功:

Python 2.7.12 (default,Nov 19 2016,06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help","copyright","credits" or "license" for more information.
>>> import caffe
>>> #如果没有报错,说明安转成功


7 遇到的问题

下面是在构建Caffe的过程中遇到的问题和解决的方法。

7.1Pythoncaffe报错:Nomodulenamedgoogle.protobuf.internal

 sudo apt-get install python-protobuf
7.2ImportError:Nomodulenamedskimage.io

sudo apt-get install python-skimage

7.3 ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory

sudo ldconfig /usr/local/cuda/lib64

Ubuntu搭建Caffe深度学习的更多相关文章

  1. html5录音功能实战示例

    这篇文章主要介绍了html5录音功能实战示例的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. 基于 HTML5 WebGL 实现的医疗物流系统

    物联网( IoT ),简单的理解就是物体之间通过互联网进行链接。这篇文章给大家介绍基于 HTML5 WebGL 实现的医疗物流系统,感兴趣的朋友跟随小编一起看看吧

  3. HTML5页面无缝闪开的问题及解决方案

    这篇文章主要介绍了HTML5页面无缝闪开方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. HTML5跳转小程序wx-open-launch-weapp的示例代码

    这篇文章主要介绍了HTML5跳转小程序wx-open-launch-weapp的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. ios – 与Xcode Bots持续集成

    我想使用Xcode机器人进行持续集成.我已经安装了OSXMavericks和Server(版本3).我可以使用Xcode5.0.1创建机器人.在集成时,它正在成功地执行分析测试,但总是最终的集成结果是失败的.IntegrationFailed.Unexpectedinternalservererror.Seetheintegration’slogsformoredetails.`我没有从服务器错误

  6. ios – 使用NSURLSession.downloadTaskWithURL时的内存泄漏

    或者,繁荣,内存泄漏.Apple的NSURLSession类参考在管理边框中的会话部分中指定:IMPORTANT—Thesessionobjectkeepsastrongreferencetothedelegateuntilyourappexitsorexplicitlyinvalidatesthesession.Ifyoudonotinvalidatethesession,yourappleaksmemoryuntilitexits.嗯是的.你也可以考虑这两种方法:>flushWithCompletio

  7. xcode – osx上的config.log是什么?它在哪里?

    任何人都可以解释’configure’是什么和做什么,一般可以找到config.log文件?

  8. ios – Swift Physics:碰撞时的角度计算错误

    我有一个简单的SpriteKit应用程序,带有墙壁和球.两者都设置了SKPhysicsBody.当我向一个方向施加力时,我希望球在碰撞时以相同的角度在墙壁上反射,但方向相反.但有时我看到角度很奇怪.我使用了所有的physicsBody属性,但是无法修复它.有时第一次反射看起来很好,但是第三次或第六次反射,有时第一次反射是错误的角度.我从不同的帖子中读到,人们有点自我计算的“正确方向”.但我无法想象

  9. Swift WKWebView的js调用swift

    最近项目需求,需要用到JavaScriptCore和WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。

  10. Swift WKWebView的swift调用js

    不多说,直接上代码:在html里面要添加的的代码,显示swift传过去的参数:这样就实现了swift给js传参数和调用!

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部