Tensorflow版本和cudnn版本不对应问题解决

因为尝试官方的fine-tune BERT模型,将tensorflow升级到了1.11.*版本,后来在执行一个CNN项目代码的时候,突然出现报错:

E tensorflow/stream_executor/cuda/cuda_dnn.cc:343] Loaded runtime CuDNN library: 7.0.5 but source was compiled with: 7.1.3. CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. If using a binary install, upgrade your CuDNN library. If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.

最开始装的环境是tf 1.7+CUDA9.0+cudnn7.0.5。
现在是tf 1.11,版本不对应也可以理解,网上很多教程说遇到这个问题,就把tf降级到1.10,这个方法很多人说有效(确实也是成本比较低的一种解决办法,没什么风险)。
本人不信邪,就去冒险升级解决,最坏就是重装,没啥好怕的。
既然报错说需要7.1.3,那我就老老实实去下了7.1.3,然后替换掉原来的7.0.5相关文件和软链接。结果程序又告诉我下面的错误:

Loaded runtime CuDNN library: 7.1.3 but source was compiled with: 7.2.1. CuDNN library major and minor version needs to match or have higher minor version in case of CuDNN 7.0 or later version. If using a binary install, upgrade your CuDNN library. If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.

这太坑了…好嘛,我再去下7.2.1!官网并没有支持CUDA9.0的cudnn7.2.1(这里不能再折腾了,CUDA不能升级,有点大),看到了cudnn7.3.1和7.4.1都支持CUDA9.0,我于是就下载了7.3.1,再次操作:

sudo cp  cudnn7.3.1/include/cudnn.h /usr/local/cuda-9.0/include/
sudo cp cudnn7.3.1/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-9.0/lib64/libcudnn*

注意:这里的 /cuda-9.0/ 文件夹是和~/.bashrc里面的环境变量对应的,注意查看自己机器是什么,有的人是 /cuda/

cd /usr/local/cuda-9.0/lib64/
sudo rm libcudnn.so.7.1.3*
sudo ln -sf libcudnn.so.7.3.1 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig

可以执行

ll

查看新环境情况

lrwxrwxrwx 1 root root        13 1月  11 11:31 libcudnn.so -> libcudnn.so.7*
lrwxrwxrwx 1 root root        17 1月  11 11:30 libcudnn.so.7 -> libcudnn.so.7.3.1*
-rwxr-xr-x 1 root root 302770160 1月  11 11:27 libcudnn.so.7.3.1*

至此,问题解决

参考:
解决CuDNN runtime版本和编译版本不同的问题

你可能感兴趣的:(linux,深度学习,Tensorflow,python)