首先需要说明的是,在安装这种复杂的环境时,最好把之前所有涉及到与本次相关的软件全部卸载。不然会出现版本不兼容,多个残缺的版本存在互相干扰的情况。而在这种情况下,排除问题的难度时耗时又耗力的。
python 3.5.2
tensorflow-gpu 1.4.0
cuda 8.0. #使用nvcc -V 查看
cudnn 6.0
说明:
tensorflow 1.2对应cuda8.0 + cudnn 5.1
tensorflow 1.3以及1.4对应cuda8.0 + cudnn6.0
python :
python3 #这样输出的是你自己安装的python版本
tensorflow-gpu:
python3 #首先进入python环境
import tensor flow as tf #引入tensorflow组件
tf.__version__ #是两个下划线,查看版本
tf.__path__ #查看tensorflow安装位置
cuda:
nvcc -V
cudnn:
sudo cat /usr/local/cuda-8.0/include/cudnn.h | grep CUDNN_MAJOR -A2 #这里是我的cudnn的安装路径
首先的一个安装流程是cuda->cudnn->tensorflow,当然前提是python的环境已经配置好。
参考如下博,虽然博主是基于ubuntu14.04安装的,但是方法都是一样的:
cuda安装和测试点击这里
在这里我主要想提一下在配置cuda时遇到的问题:
1)一定要牢记的是cuda的安装路径在
/usr/local/cuda-8.0
2)配置环境变量,添加cuda路径到bashrc文件,其实这里有两种方式:
(1)第一种直接使用博主提到的方法:
echo 'export PATH=/usr/local/cuda-8.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
我是更推荐这种方法的,在不打开bashrc文件的条件下添加路径。
(2)第二种方法是:
edit ~/.bashrc #在终端打开该文件
#把路径添加到文件里保存退出
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
但是我在使用第二种方法的时候出现了很多错误:
(1)(gedit:2461): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
关于这个错误,其实网上有很多解决办法,比如这个博客的解决办法,但是我尝试都没有成功,所以我选择了第一种方法。
(2)还会出现一不小心把bashrc文件覆盖,导致终端打开的bashrc文件为空,这时候解决方法可以参考这个博客。
(3)还应该注意的是在终端输入指令时所有的符号都应该是英文输入法状态下输入,如果是中文状态下,输入的符号指令也会报错。
cudnn的安装方法比较简单,参考这篇博客。
我这里安装的是带GPU的tensorflow 1.2,使用的是源码安装。关于tensorflow的安装方法有很多,我觉得该方法最为简便。
当然,整个安装过程参考这篇文章就能完成。
这里我在写一下我遇到的问题:
(1)因为我是使用python3.5,所以对应的pip安装应该是是用下列的
#这里默认的安装tensorlfow最新版
pip3 install tensorflow-gpu #这是安装带gpu版本的,如果不带gpu,直接使用pip3 install tensorflow
(2)需要注意的是tensor flow的版本一定要与cuda和cudnn版本相对应,我之前默认安装的tensorflow-gpu版本是1.7,但是我是cuda 8.0 以及cudnn 5.1。因为不兼容,所以会出现下列错误:
......low/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "/home/idc/anaconda3/envs/imagecaption/lib/python3.5/imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "/home/idc/anaconda3/envs/imagecaption/lib/python3.5/imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/install_sources#common_installation_problems
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
其中最主要的错误是:
ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
主要的原因是在当前cuda和cudnn版本下,不兼容,没有libcublas.so.9.0文件,我们可以去/usr/local/cuda-8.0/lib64文件夹去查看,发现只有如下的libcudnn文件:
所以很明了的解决方案有两种,一是升级cuda和cudnn版本,二是降低tensorflow的版本,我选择了降低tensorflow版本,解决方案参看这个博客。
当然这里博客所有的指令下载源在国外,一般安装tensorflow时速度很慢,这时侯可以考虑更换国内镜像。具体方法可以参考我的这篇博客pip更换至国内镜像源。
当然在我降低tensorflow版本到1.4之后,新问题又出现了,这次是libcublas.so.6.0找不带,所以我直接又降到了1.2.0,最后终于成功了:
ImportError: libcublas.so.6.0: cannot open shared object file: No such file or directory
参考这篇文章
(1)首先,在终端输入下列指令找到python3的文件路径
which python3
(2)然后打开pycharm,新建一个project,在File->setting->project->project interpreter
点击右边红框处的设置,选择Add local,然后在红框出输入之前在终端的路径,保存就可以了。
这时候回到pycharm,新建一个python文件输入以下代码,输出hello则表示成功:
import tensorflow as tf
h = tf.constant("hell")
sess=tf.Session()
print(sess.run(h))