深度学习环境搭建:Ubuntu16.04+cuda9.0+cudnn7.5+opencv4.0+caffe+pytorch+tensorflow-gpu1.6

深度学习环境搭建:Ubuntu16.04+cuda9.0+cudnn7.5+opencv+caffe+pytorch+tensorflow-gpu 1.6

本人也算是小白,最近这些天一直没顾上码字儿,终于有时间了。这个过程真的是尝试了才知道,真的不难,但要注意细节,时间原因,前边几项都很简单在熟悉了以后,要根据人家博客所写的,一步步来,注意细节,只对后边三项进行解答,前边的安装我也是照着前人的博客一次性顺利安装的,只是在编译caffe的时候,出现了卡壳,所以只对这一部分重点介绍,上述所有工作,我的大致有效时间是6h,希望能够给刚刚入门的同学一点帮助,其实我也是小白,大神勿喷。

对于caffe的编译,首先感谢https://www.linuxidc.com/Linux/2016-12/138870p2.htm Linux教程的指导。由于后边我自己要做的开源项目与annconda的环境不兼容,所以我这次选择的是系统自带的python2.7 和3.5。

再有就是不推荐cuda10.0版本;cudnn下载的要与cuda版本对应,好多版本CSDN下载都需要积分好像是,我用会员下载了,百度云分享一下吧。
ubuntu16.04: 把安装包放在启动盘下,安装即可。
cuda9.0: 链接:https://pan.baidu.com/s/1-iQR2iAED9CJCwc1iz0XsQ
提取码:ngst
cudnn7.0:链接:https://pan.baidu.com/s/1s901IMp5rrZ0CALNAEbuFw
提取码:f02c
opencv:
我之前尝试过原代码编译安装,自认为不如pip安装,这次也是着急。直接使用pip install opencv-python?还是pip install python-opencv,哪一个不记得了,自己试试具体哪个就行。

一下截图由于身边没有机器,全部来自其他博主,但报错内容基本一致。

Caffe的配置

  1. 使用Git直接下载Caffe非常简单,或者去https://github.com/BVLC/caffe下载。由于我习惯去github上找代码,所以就直接去下载的源码,下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe。

  2. 因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config: **sudo cp Makefile.config.example Makefile.config **

  3. 打开并修改配置文件:
    使用 ** sudo vim Makefile.config ** #打开Makefile.config文件 根据个人情况修改文件:
    a.若使用cudnn,则

    #USE_CUDNN := 1
    修改成:
    USE_CUDNN := 1
    b.若使用的opencv版本是3的,则

    #OPENCV_VERSION := 3
    修改为:
    OPENCV_VERSION := 3 (由于我安装的是opencv4.0,所以这一项我就直接没用,可以忽略)
    c.若要使用python来编写layer,则
    将 #WITH_PYTHON_LAYER := 1
    修改为 WITH_PYTHON_LAYER := 1
    d.重要的一项 :
    将 # Whatever else you find you need goes here. 下面的
    1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
    修改为:
    1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
    2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
    这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
    e.针对:nvcc fatal : Unsupported gpu architecture 'compute_20’编译报错的问题
    此处由于使用cuda9.0 ,按照下列提示,将前两行直接删除(或注释)
    NVCC src/caffe/layers/bnll_layer.cu
    nvcc fatal : Unsupported gpu architecture ‘compute_20’
    Makefile:594: recipe for target ‘.build_release/cuda/src/caffe/layers/bnll_layer.o’ failed
    make: *** [.build_release/cuda/src/caffe/layers/bnll_layer.o] Error 1
    在这里插入图片描述

  4. 打开makefile文件,做如下修改(sudo vim Makefile):
    将:

    NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)  (大概中间靠下  100多行的位置)
    替换为:
    
    NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
    
  5. 编译; **sudo make all -j8 **(8代表线程数,根据自己电脑配置决定,不知道的话,写个16也无妨)
    编译过程中可能会出现如下错误:
    错误内容1:
    “fatal error: hdf5.h: 没有那个文件或目录”
    解决办法:
    step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
    将:
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    替换为:
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
    stept2:在Makefile文件的第173行,把 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
    错误内容2:
    “libcudnn.so.5 cannot open shared object file: No such file or directory”
    解决办法是将一些文件复制到/usr/local/lib文件夹下:
    #注意自己CUDA的版本号,这一步特别的关键!

    	1 sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
    	2 sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
    	3 sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
    	4 sudo cp /usr/local/cuda-9.0/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7&& sudo ldconfig
    
  6. 测试:sudo make runtest;如果运行之后出现下图,说明caffe配置成功。(此过程正常情况下,时间较长,可以喝点儿水歇歇了,哈哈哈)
    在这里插入图片描述
    到此caffe配置完毕!

7.问题还没彻底解决,不过剩下的都是小皮毛了:python调用caffe时,出现ImportError: No module named _caffe
感谢https://blog.csdn.net/sinat_33718563/article/details/80245576博主;在这里插入图片描述
解决办法:
首先在项目路径下进入终端并执行:
sudo make pycaffe
注意:
每次重新编译了caffe后都需要执行:sudo make pycaffe
8.在用户目录下,python里,输入import caffe,报错:
from google.protobuf.internal import enum_type_wrapper ImportError: No module named google.protobuf

sudo pip install protobuf
如果不成功,多试几次
9.
import sys,os# 设置当前的工作环境在caffe下
caffe_root = ‘/home/xxx/caffe/’ # 我们也把caffe/python也添加到当前环境
sys.path.insert(0, caffe_root + ‘python’)
import caffe
如果在命令行下,发现成功导入不报错,就说明安装完成

pytorch的安装

我在安装上边caffe的时候,通过X-shell开启了多个命令下载,为了省事儿,也是着急,直接还是选择了PyTorch官网直接down下来安装:
官网地址:https://pytorch.org/ ,下拉至最下方,根据自己的机器,选择对应的选项,最后在下方copy命令即可
还有要注意的是,尽量使用sudo获取权限,可能在你都下载完成的时候,此时发现权限不够,导致白白浪费时间,就比较可惜了。
在这里插入图片描述

tensorflow-gpu 1.6的安装

以上的操作建议在机器网速较快的情况下进行,由于我所实习的单位,工作日上班时间网络不好,所以我一般都是在下班以后的晚上,进行最简单的命令行pip安装;

sudo pip install tensorflow-gpu==1.6
还有要注意的是,尽量使用sudo获取权限,可能在你都下载完成的时候,此时发现权限不够,导致白白浪费时间,就比较可惜了。

有啥疑问,欢迎留言,或者微信:sunlianhao10086,备注下。

猜你喜欢

转载自blog.csdn.net/NcepuKZH/article/details/88614150