在安装完tensorflow 之后
想import tensorflow 爽一把的时候,却出现的错误ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
可以看到出错的原因是:没有找到libcudnn.so.6文件(6为对应版本具体可修改)
libcudnn.so.6 是一个软连接,连接到对应的libcudnn.so.6.0.21
该文件一般放在/usr/local/cuda/lib64/文件目录下
可以查看自己是否有libcudnn.so.6.0.21文件(该文件一般有100多M)
有的话直接跳过下一步
到官网https://developer.nvidia.com/cudnn下载相应的cudnn库
在注册完帐号之后即可下载(应该选择自己对应的版本)
命令:输出cuda的版本 cat /usr/local/cuda/version.txt
命令:查看你的系统信息 uname -m && cat /etc/*release
从下载完的文件中,将libcudnn.so.6.XXX(具体可修改到自己下载的版本)文件放在/usr/local/cuda/lib64/文件目录下
切换到该目录下,删除原本的软连接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6
然后修改文件权限,并创建新的软连接
sudo chmod u=rwx,g=rx,o=rx libcudnn.so.6.5.18
sudo ln -s libcudnn.so.6.5.18 libcudnn.so.6
sudo ln -s libcudnn.so.6 libcudnn.so
--------------分割线(当你使用的是服务器时)-----------------------
碰到个问题,因为使用的是服务器,没法更改usr目录下面的文件,或者因为更改了会导致别人的引用出错
因此,不能在/usr/local/cuda下更改,
本人使用的是在anaconda下安装的tensorflow 所以出现了上面的报错,因此我们将上述usr/.../lib64/文件夹下面的操作
换成在这个目录/home/username/anaconda3/envs/tensorflow/lib/下面进行即可,也不需要使用sudo权限了
------------------------------------------------------------------------
重新进入tensorflow环境下的python
import tensorflow
这就不会报错啦
运行下小例子检查一下
>>> import tensorflow as tf
>>> hello = tf.constant('hello')
>>> sess = tf.Session()
>>> a = tf.constant(10)
>>> b = tf.constant(20)
>>> print (sess.run(a+b))
30
可以开启魔幻之旅的 哈哈哈
出现错误ImportError:/usr/local/cuda-8.0/lib64/libcudnn.so.6: file too short 的原因应该是他连接到的这个库不对
同样按照上面的操作(删除连接-----创建连接)即可
上述步骤要是不能解决问题的话,可能就是路径不在环境变量中(哭唧唧。。这个问题花了一天的时间才解决的)
cd ~
sudo gedit .bashrc
在弹出的gedit文档编辑器(.bashrc中)中最后一行加入:
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
这个路径是你libcudnn存放的位置
保存更改的文件后,紧接着:
source .bashrc
再重启一下Terminal(终端),重新进入tensorflow。