0. 电脑配置
1. Ubuntu 的开发环境
- kernel: 4.4.0-87-generic
- g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
- Python 2.7.13 :: Anaconda 4.4.0 (64-bit) # 我装了Anaconda2,此Python是其自带的。
- gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
2. 安装nvidia显卡驱动
不用自己手动下载驱动的。
参考: http://www.jb51.cc/article/p-gxbsuqpe-bdp.html
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-375 # 根据提示安装相应的版本
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
执行完上述后,重启(reboot)。
重启后输入:
nvidia-smi
如果出现了你的GPU列表,则说明驱动安装成功了:
3. 安装CUDA 8.0
cuda是nvidia的编程语言平台,想使用GPU加速就必须要使用cuda。
当然,首先要确定你的Nvidia显卡支持CUDA8.0才可以。
3.1 下载cuda8.0的安装文件
从这里下载cuda8.0的安装文件
https://developer.nvidia.com/cuda-release-candidate-download
选择对应的开发环境, 下载 runfile(local)。
这里是nvidia给出的官方安装指南(遇到问题时可以查阅):
http://docs.nvidia.com/cuda/cuda-installation-guide-linux/#axzz4HIBXnwyt
3.2 安装时的选项
下载完cuda8.0后,执行如下语句,运行runfile文件:
sudo sh cuda_8.0.27_linux.run
执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia375驱动时,一定要选择否,因为前面我们已经安装了更加新的nvidia375,所以这里不要选择安装。而且据说安装了此驱动会产生linux循环登陆的问题。
其余的都直接默认或者选择是即可。
3.3 配置环境变量
安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部:
sudo gedit ~/.bashrc
在打开的文本末尾加上:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后设置环境变量和动态链接库,在命令行输入:
$ sudo gedit /etc/profile
在打开的文件末尾加入:
export PATH=/usr/local/cuda/bin:$PATH
注意符号是英文的,否则下次重启ubuntu会有警告信息窗口。
sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
然后执行
sudo ldconfig
使链接立即生效。
这时有可能会有 libEGL.so.1 不是符号连接 之类的错误信息。
可以参考: http://www.jb51.cc/article/p-hqadxjpq-bpe.html
原因: 系统找的是一个符号连接,而不是一个文件。这应该是个bug….
解决方法:
1.对这两个文件更名
2.重新建立符号连接:sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1 sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39
3.4 测试cuda的Samples
测试之前,先把NVIDIA_CUDA-8.0_Samples文件夹权限改成可以读写增删的。
cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
如果显示的是一些关于GPU的信息,则说明安装成功了。
4. 安装CUDNN 5.1
cudnn有5.1和6.0两个主要版本。tensorflow1.2.1 不支持6.0版本的cudnn, 所以要安装cudnn5.1版本。
4.1 下载CUDNN 5.1
官网:
https://developer.nvidia.com/cudnn
需要使用邮箱注册。
下载cuDNN v5.1 Library for Linux.
4.2 安装cuDNN 5.1
下载完cudnn5.1之后进行解压,cd进入cudnn5.1解压之后的include目录,在命令行进行如下操作:
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
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.0.10 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
如果以后要换cuDNN的版本,照着上述步骤重装一遍即可。
5. 安装tensorflow 1.2.1
5.1 pip安装
参考
https://www.tensorflow.org/install/install_linux 之 Installing with native pip。
sudo apt-get install python-pip python-dev # for Python 2.7
pip install tensorflow-gpu # Python 2.7; GPU support
官网也列出了其他安装方法, 但是上述方法是最简单方便的。但是要有网络才可以。
也可以安装cpu版本的。
离线安装1.3.1rc0版本,但是失败了。
使用Anaconda方法,但是每次都要激活才能使用,太麻烦了。而且,在PyCharm里没有办法运行调试。
5.2 验证安装成功
用终端运行python, import tensorflow 试验:
没有错误就是安装成功了。
6. 使用tensorflow训练softmax 数字识别
使用Mnist数据集。参考:http://www.jb51.cc/article/p-ksmtklsm-bnw.html
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data",one_hot=True)
import tensorflow as tf
x = tf.placeholder(tf.float32,[None,784])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x,W) + b)
y_ = tf.placeholder("float",10])
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(1000):
batch_xs,batch_ys = mnist.train.next_batch(100)
sess.run( train_step,Feed_dict={x: batch_xs,y_:batch_ys})
correct_prediction = tf.equal(tf.argmax(y,1),tf.arg_max(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction,"float"))
print sess.run(accuracy,Feed_dict={x: mnist.test.images,y_: mnist.test.labels})
如果没有错误,就证明你安装成功了TensorFlow了。
开始你的深度学习之旅吧!
7. 后记:
无论在Linux还是Windows下做Python开发,一款好用的Python IDE是必不可少的。推荐大家使用PyCharm。Linux和Windows版本都有。界面美观好用,代码提示功能非常棒!
只是提醒大家注意,PyCharm的Python Console只能开一个,否则容易造成CUDA_OUT_OF_MEMORY的错误。
另外,Python有各种各样的库,如numpy等。一一安装无比复杂,特别是没有网络的时候。
推荐大家Anaconda。python2.*使用Anaconda2,python3.*使用Anaconda3。几乎常用的库都集成在了一个*.sh里面了。
两者的下载,安装和配置请参考我的博文:http://www.jb51.cc/article/p-ruajqmmj-wr.html 使用Anaconda2和PyCharm, 双剑合璧,天下无敌!