ubuntu16.04+cuda8.0+pycharm+tensorflow环境配置

来源:互联网 发布:网络音频广播系统 编辑:程序博客网 时间:2024/05/29 10:30

本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权

之前都是在caffe框架学习深度学习,这次准备上手tensorflow,因为服务器还没陪好,所以先在笔记本上进行环境配置。
电脑为Lenovo Thinkpad S3 Yoga,显卡为GeForce 940。

【代码均已标红】

1.安装Nvidia显卡驱动

在此之前可以先安装一个pip:sudo apt-get installpython-pip python-dev

先在Nvidia官网上根据你的电脑信息查看所需显卡驱动的版本:http://www.nvidia.com/Download/index.aspx?lang=en-us

比如这里我推荐的就是Nvidia-375.66

然后下载就行。
其实也可以在terminal里面通过命令来查看:

通过sudo lshw -numeric -C display可以查看显卡信息

通过ubuntu-drivers devices可以查看推荐使用的驱动

通过sudo apt-get install nvidia -xxx来下载驱动(xxx是你查询到的版本号,只要整数就行,比如我就是375)

安装完成之后,重启电脑,然后搜索Nvidia,如果出现 NVIDIA X Server Settings,就说明安装驱动成功了。

接下来就是安装cuda8了。

2.安装cuda8.0

这里因为我使用的是ubuntu16.04,所以选择安装cuda8.0。在官网下载:https://developer.nvidia.com/cuda-downloads
这里installer Type记得选择runfile,deb版本安装较为麻烦,并且会默认帮你下载OpenGL。
ps:如果你需要7.5版本,在主页右上角搜索就行了。
下载完成之后输入:
sudo sh cuda8.0.61_375.26_linux.run --override
然后就进入安装过程,开始都是End User License Agreement,你可以CTRL +C 跳过,然后accept,下面就是安装的交互界面,开始的Install NVIDIA Accelerated Graphics Driver for Linux?选择n,因为你已经安装驱动了。其他的选择y或者回车就行。
这个地方注意!我看过有的博客说一定不能手动安装Nvidia驱动,要安装他版本自动匹配的Nvidia驱动,否则会造成版本不匹配问题,但我当时已经安装了,然后感觉版本差不多我就没有管他,目前来看还没出问题。

安装完成后配置cuda环境变量:
通过gedit ~./bashrc或者vi ~./bashrc在文件bashrc后加上声明:
export PATH="$PATH:/usr/local/cuda-8.0/bin"
export LD_LIBRARY_PATH="/usr/local/cuda.8.0/lib64"
(这两个的区别是前者是弹出一个编辑器来进行编辑,后者是直接在terminal编辑,所以后者要通过source~./bashrc保存)

在terminal输入nvidia-smi,如果出现下面情况说明安装成功了:(nvidia-smi中间没空格)


3.安装cuDNN

接着安装学习库cuDNN。
下载cudnn5.1 Linux版本。在Nvidia官网下载:https://developer.nvidia.com/cudnn 


需要你先免费注册一个Nvidia账号才能下载。我当时注册的时候邮箱验证一直有延迟,换了好几个包括gmail也需要等一天,但有些人一小时就能收到,可能是随机的吧。

先解压cuDNN:tar xvzf cudnn-8.0-linux-x64-v5.1.tgz 

得到5个文件:

cuda/include/cudnn.h

cuda/lib64/libcudnn.so

cuda/lib64/libcudnn.so.5

cuda/lib64/libcudnn.so.5.1.5

cuda/lib64/libcudnn_static.a


通过命令来将相应的文件拷贝到对应的cuda目录下即可

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/lib

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

前面两个命令是复制 后面是改变文件权限 文件名加*号表明是带有该名字的所有文件。

4.安装opencv

先安装opencv3.1,防止之后用到。在官网下载3.1版本,然后安装相关的依赖项

首先安装Ubuntu系统需要的依赖项,也是看一个博客说要装,也不知道要干嘛。

sudo apt-get install --assume-yes libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

然后安装OpenCV需要的一些依赖项,同样不知道要干嘛。

sudo apt-get install build-essential cmake git

sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

然后在文件夹下建立build文件夹

mkdir build 

cd build/

输入:cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -DWITH_OPENGL=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..(两个点别忘了)

配置好之后就是这样:


然后make编译就可以了

make -j8

然后报了这样的错误

home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54:error: 'NppiGraphcutState' has not been declared

typedef NppStatus(*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat

这是由于CUDA 8.0不支持OpenCV的 GraphCut 算法,

进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:

#include"precomp.hpp"

#if !defined(HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#include"precomp.hpp"

#if !defined(HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

就可以了。

上面只是将opencv编译成功,但是并没有安装到我们的系统中,有很多的设置都没有写入到系统中,因此还要进行install。

sudo make install

sudo /bin/bash -c 'echo"/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig

这一步遇到了这个问题:



这个问题Google之后,因为libEGL.so.1正常情况下应该是一个符号链接,而不是实体文集件,修改其为符号链接即可
解决方法,比如:

sudo mv libEGL.so.1 libEGL.1.so
sudo ln -s  libEGL.1.so libEGL.so.1

注意这里有两个link不对,所以要改2个地方!根据自己的文件名来改
这样就ok了。

再次重启电脑,打开刚才的build文件夹,安装一个checkinstall:

sudo apt-get installcheckinstall

sudo checkinstall 


这是为了以后如果要更换opencv版本,可以更方便的卸载opencv,执行了checkinstall后,会在build文件下生成一个以backup开头的.tgz的备份文件和一个以build开头的.deb安装文件,当你想卸载当前的opencv时,直接执行dpkg -r build即可。

5.下载Anaconda

Anaconda是一个和Canopy类似的科学计算环境,但用起来更加方便。自带的包管理器conda也很强大。
从Anaconda官网(https://www.continuum.io/downloads)上根据自己需要的python版本下载Linux版本的Anaconda。

在Python2.7版本下,有一个x86,有一个power8,我们是Intel处理器,选择x86。

cd ~/Downloads

bash Anaconda-4.2.0-Linux-x86_64.sh

询问是否添加到环境变量中选择yes就行。

这样就安装完成了。
通过查询python版本可以确认是否安装成功。

6.安装tensorflow

先建立tensorflow运行环境:
$ conda create -n tensorflow python=2.7 (跟你的python版本有关)
source activate tensorflow #激活该环境

#下面这句话只能下载给CPU用的tensorflow

conda install -cconda-forge tensorflow

利用pip来下载给GPU用的tensorflow

exportTF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl 

下载安装

pip install --ignore-installed --upgrade $TF_BINARY_URL 
然后进入python试验一下:
import tensorflow as tf
然后报错:

输入:sudo cp/usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0&& sudo ldconfig

结果还是报错 ,猜测cuda出了问题。


应该是环境变量出了问题,在bashrc后面加上这两行:

exportLD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"

export CUDA_HOME=/usr/local/cuda

重启电脑,然后再次导入,运行成功。

7.安装pycharm

在官网下载Linux版本的pycharm:http://www.jetbrains.com/pycharm/download/#section=linux

安装pycharm

pycharm是目前使用最多的Python IDE,界面简洁美观 安装简单。

cd到安装目录,然后解压缩再打开pycharm.sh所在的文件所在目录,然后安装它

使用: ./pycharm.sh

然后弹出这个:

选择不导入,按顺序安装。

安装成功后在pycharm导入pycharm报错:


需要配置project interpreter 到tensorflow所在位置:



至此大功告成啦!运行一段代码试试~




参考文章:Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细



阅读全文
1 0
原创粉丝点击