亲测:ubuntu16.04,联想拯救者R720,GTX1050,cuda9.0,cudnn7.1.3,anaconda3-python3.6,源码安装tensorflow

亲测:ubuntu16.04,联想拯救者R720,GTX1050,cuda9.0,cudnn7.1.3,anaconda3-python3.6,源码安装tensorflow

写在前面的话:

为什么要使用源码编译安装tensorflow呢?因为听大神说使用公开的编译好的包安装完可能在运行的时候会出各种问题,使用源码编译安装很多东西可以自己修改,使用起来会方便一些,于是就狠心下来自己学一学源码编译安装了。然后,要编译源码呢就需要使用bazel这个东西,而要安装bazel就需要用到java的jdk8,所以就有了如下的种种过程balabalabala。。。。。

主要参考网站:

https://blog.csdn.net/a446712385/article/details/79149977
https://blog.csdn.net/u014475479/article/details/81702392
tensorflow开源网站:https://github.com/tensorflow/tensorflow

主要过程

(1)首先anaconda的安装:
https://www.anaconda.com/download/#linux
下载安装文件,执行命令进行安装bash Anaconda3-5.2.0-Linux-x86_64.sh ,安装完成后需要配置路径,
将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
sudo gedit ~/.bashrc
在打开的文件中加入如下语句:
echo ‘export PATH="~/anaconda2/bin:$PATH"’
更新bashrc以立即生效:
source ~/.bashrc

(2)pycharm的安装,到官网下载对应的安装文件,直接安装即可,如果不清楚流程可以百度一下,这里没有太大难度,本人也没有卡住
(3)安装cuda和cudnn
到nvidia官网下载cuda9.0和cudnn对应的安装文件,首先安装cuda,直接运行其.sh就可以安装,需要安装到默认的路径下,这里为/usr/local/cuda-9.0
执行完安装命令之后,需要配置cuda的路径,这里执行sudo gedit /etc/profile,在打开的文件中增加如下的内容:
export PATH=/usr/local/cuda-9.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
然后使用命令source /etc/profile 使得配置生效,这里我还在 sudo gedit ~/.bashrc 中也增加了如下的两句话,也是运行命令使得配置生效
export CUDA_INSTALL_DIR=/usr/local/cuda-9.0
export CUDNN_INSTALL_DIR=/usr/local/cuda-9.0
下载对应的cudnn,解压后会出现一个cuda的文件夹,之后执行命令,将对应的库拷贝过来,并且建立软链接,且修改相应文件的属性为可读,参考网站https://blog.csdn.net/hanshihao1336295654/article/details/79703177

(4)安装bazel,安装bazel的时候需要先安装jdk8,我按照网上说的,安装jdk8始终不成功,于是查看了一下系统:
~$ java -version
openjdk version “1.8.0_191”
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
原来系统已经带有jdk8了,所以就不用安装了(偷懒了),直接安装bazel,这里没有遇到问题,参考网站https://blog.csdn.net/a446712385/article/details/79149977
(5)下载tensorflow源码,下载之后cd进入tensorflow路径下,执行./configure进行编译配置,然后使用bazel进行编译,编译得到whl包之后使用pip进行安装
参考网站https://blog.csdn.net/a446712385/article/details/79149977
(6)tensorRT没有安装成功,按照网上的将相关的包从35改成36也是不好用的,然而我的python是3.6的,因此没有安装成功。有待后续研究

【疑难杂症:】开始使用的cudnn是7.4.1,tensorflow安装成功之后python可以导入,但是在运行程序的时候出现cudnn版本问题,提示如下:

tensorflow/stream_executor/cuda/cuda_dnn.cc:483] Loaded runtime CuDNN library: 7.1.3 but source was compiled with: 7.4.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.
简单分析cudnn的版本不对,于是重新下载7.1.3版本的cudnn,但是直接在原来的tensorflow源码上进行编译发现不能将cudnn7.4.1替换为7.1.3,不知道为什么,遂删掉原来的tensorflow源码,重新下载了一份新的,重新配置并编译,成功!
这里我猜测是这样子的:为什么要用源码编译呢?就是和自己的电脑硬件以及软件系统都能完全匹配上,而我的电脑硬件GPU只能使用cudnn7.1.3,因此我使用cudnn7.4.1来编译的tensorflow源码当然是会和系统产生冲突的了,所以我分析上面错误提示的意思是这样子的,这个错误提示是在tensorflow的一个源码文件cuda_dnn.cc 中打印出来的,这个可以在其源码中找到,源码里面应该是load了本地系统的cudnn运行时库,前半句“Loaded runtime CuDNN library: 7.1.3”是说load进来的本地系统运行时库是7.1.3版本的,后半句“but source was compiled with: 7.4.1”的意思是说但是你这个安装的tensorflow是使用7.4.1的cudnn编译出来的,两个版本不一样发生了冲突。那么剩下的部分也就是提示你该怎么办,具体该怎么办这个事情不太好说,根据自己的情况而定,本人尝试过从NVIDIA官网下载了libcudnn7_7.4.1.5-1+cuda9.0_amd64.deb以及另外两个测试deb都安装了,也都配置了,详细安装方式网上有很多,直接百度搜索如何安装cudnn就有了,我安装完后按照网上说的测试也都通过了,但是还是不好使,照样提示上面的错误,所以我分析特定的GPU只能使用特定的cudnn版本(我这个菜鸟以前是不知道的,大神们先笑话一下吧)。N多次尝试失败之后,我把所有的安装的tensorflow、cudnn全部删除了,重新下载了一份最新的tensorflow源码,然后安装了cudnn7.1.3,这里需要注意,要先将原来配置在cuda下的cudnn删掉,再重新装。

这里来一下具体的操作流程(最后一遍成功的流程):

首先,cd到/usr/local/cuda-9.0/lib64下执行删除原来的cudnn版本的命令:
sudo rm -rf libcudnn.so.7.4.1
sudo rm libcudnn*
然后再cd到/usr/local/cuda-9.0/include下,执行如下命令
sudo rm cudnn.h
(如果是首次安装就不需要执行上述的删除步骤了)
然后,下载对应cuda9.0的cudnn7.1.3版本,下载后是cudnn-9.0-linux-x64-v7.1.tgz,下解压,比如我的解压完之后的路径为/home/${user_name}/Downloads/cuda,cd到该路径下,执行如下命令配置cudnn:
sudo cp ./lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo cp ./include/cudnn.h /usr/local/cuda-9.0/include
sudo chmod a+r /usr/local/cuda-9.0/lib64/libcudnn* # 这里是修改文件为可读,否则后面会找不到这个库
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
cd 到这个路径下/usr/local/cuda-9.0/lib64,执行如下建立软链接的命令
sudo ln -sf libcudnn.so.7.1.3 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
到此,cuda和cudnn都配置完成了,然后就是对tensorflow源码进行配置,并且使用bazel进行编译,最后使用pip进行安装。后续的工作是按照参考博客的正常流程走的了。

以上,仅记录一个多礼拜下来自己使用源码安装tensorflow的艰辛,找了N多的博客,这里说一下心得,网上的博客很多,但是并不是所有的都和自己的情况能完全对应上,每个人的情况都不同,因此,本次安装过程是参考了许多的博客,综合到一起,并结合自己的系统情况,多次实验,最后成功的,这里的tensorRT却始终没有成功,不知道什么时候出支持py36的tensorRT。这就是菜鸟的安装过程了,大神们觉得哪里不妥的还请指教。

第一次写博客,这个格式掌握的不好~~~

追加:
1/编译1.14版本的tensorflow源码,出现no module karas_processing的问题,则需要先安装karas相关,按照如下命令:
pip install keras_applications1.0.4 --no-deps
pip install keras_preprocessing
1.0.2 --no-deps
pip install h5py==2.8.0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值