Linux系统下安装TensorFlow2.3
系统概述
之前网上的大部分论坛都是介绍如何在PC端安装TensorFlow(后面简称为TF),而在最近的实际工作中,有需求将TF移植到我们目前正在使用的开发板上(我所使用的是Firefly的RK3288)。
好在网上有部分关于树莓派的TF移植,但是对于刚开始的接触此类安装的我有差异就是不同,现在再回头看一下安装过程实际上大同小异,其间也走了不少弯路,前后耗时大概2周,整个过程经历了如下几个阶段:
1.熟悉Linux环境的操作;
2.寻找TF安装包(但是不知道,所以使用的是TF1版本);
3.不断地卸载、安装Python的不同版本;
4.不断地处理pip的各种报错;
5.尝试升级GCC;
6.尝试升级RK3288的系统镜像;
7.尝试Python的多版本管理;
8.尝试安装TF2.3版本;
9.部署运行Demo;
经过以上9个阶段总算完成了这一安装工作,现在回头来看,整个安装过程仅需要关注如下几个方面:
**1.Linux系统;
2.TensorFlow2.3.0;
3.Python;**
接下来对这三个基本要素进行相关介绍。
Linux
网上对于Linux的学习资料也比较多,这里就不对该系统进行介绍,仅介绍本次相关知识点,在本次的安装使用的是Ubuntu,其它Linux系统也类似,主要包括如下两部分:
1.Linux系统的框架;
2.GCC的版本;
Linux系统的框架
对于Linux系统下的TF安装包一般都是whl文件,其命名一般如:
tensorflow-2.3.0-cp35-none-linux_armv7l.whl
其中最后最后面的armv7l就是该安装包要求的Linux框架,因此我们需要确认自己目前使用的系统,一般可通过如下指令进行获取(使用arch确认即可):
1.arch;
2.cat /proc/version;
3.uname -a;
4.lsb_release -a;
5.cat /etc/issue;
我们只需要知道我们的板子架构即可,即是如armv7l,或是aarch64.
GCC的版本
一般我们都是直接在板子上烧录Ubuntu的镜像系统,其中都会带有gcc,我们可以通过gcc -v来获取当前系统的gcc的版本,之所以要确认版本是是因为TF对编译工具链的版本是有要求的,如我安装的TF2.3.0需要gcc-7.3.1以上的版本。
实际上其依赖的是libstdc++.so这个,所以我们只需要通过如下指令确认目前系统中的so版本,只要能够满足TF的要求即可。
strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 |grep GLIBCXX
TensorFlow2.3
对于TF我们至少需要知道如下几个点:
1.TensorFlow是一个开放源代码软件库,用于进行高性能数值计算,可以理解成智能算法的实现支持库;
2.官方通过python实现了TF的Runtime(运行环境,只有将该环境安装到对应平台才能运行相关库);
3.TF2和之前的TF差异很大,因此建议使用TF2,更能更全;
4.TF2中已经包含了TensorFlow-Lite;
最后我们来解读一下其安装包,还以刚刚的tensorflow-2.3.0-cp35-none-linux_armv7l为例:
1.tensorflow-2.3.0:2.3.0是TF的版本号;
2.cp35:表示需要Python3.5.n的支持,实际上就是需要该版本对应的pip;
3.none:表示不局限;
4.linux_armv7l:表示系统及框架类型(32位类型);
GitHub上有该安装包。
Python
由于我们安装的TF Runtime是基于Python的包,因此我们需要保证环境中已经安装了合适版本的Python,一般我们安装的Linux系统中会带有3.6版本的python,但是就目前所知,TF2.3版本的安装包仅有cp35和cp37这两个版本的,所以我们在安装前还有安装3.5或者3.7版本的Python。
根据本次安装过程的感悟,不建议将之前的Python卸载然后再安装新的版本,建议使用pyenv对多版本的Python进行管理使用,这样可省很多时间(卸载顺序错误会导致各种意想不到的问题),并且pyenv的使用真的太方便了。
安装过程
根据前面的介绍,我们接下来详细介绍安装过程。
准备Linux系统
我们首先要保证板子上的Linux系统能够满足所使用的安装包的要求,这里建议直接使用Ubuntu18.04版本,里面的gcc版本是能够满足要求的。
如果你使用的是RK3288,那么一定要注意:如果通过recover方式升级固件之后系统不启动那么就要确认自己使用的RKDevTool_Release 的版本是否足够,我使用v2.4版本的多次升级都成功但是板子不运行,最终从RK3568中的工具中下载了v2.81版本的RKDevTool进行镜像下载,最终成功运行。
心得:Firefly RK3288官网的镜像文件都是可以用的(但是部分版本的镜像运行过程还是存在异常,不知道是否是板子的问题),如果不能使用那就是下载工具版本不对。
准备pyenv环境
安装完镜像之后,首先通过python3 -V确认当前的版本号,如果已经是3.5或者3.7那么恭喜你就可以跳过该阶段了,但是一般镜像中也仅安装了python,却没有安装对应的pip,因此还是强烈建议使用pyenv,因为它会自动帮助我们安装对应版本的pip。
关于pyenv的安装网上有很对,我是参考如下几个博客:
https://www.cnblogs.com/ningvsban/p/4384995.html
心得:TF是通过pip执行的安装,因此一定要正确安装pip。
下载自己平台对应的TessorFlow2.3**.whl文件
准备好python环境之后,我们就要选择下载对应的TF安装包了,该安装包我们可以直接用电脑进行下载,我是从如下地址进行下载的:
https://github.com/lhelontra/tensorflow-on-arm/releases/download/v2.3.0/tensorflow-2.3.0-cp35-none-linux_armv7l.whl
注:可根据需要手动修改以上网址的v2.3.0和tensorflow-2.3.0-cp35-none-linux_armv7l部分来下载自己需要的安装包。
安装前的准备工作
对于刚安装的Linux系统一般都会缺少一些库,并且有些库并不是最新的,因此还需要执行如下这一系列指令:
sudo apt-get update
sudo apt-get upgrade
pip3 install --upgrade --force pip
pip3 install --upgrade pip setuptools wheel
sudo apt install gfortran
安装之前一定要通过python -V确认版本号,一定要确定是自己想要的版本。
开始安装
建议通过如下指令进行安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-2.3.0-cp35-none-linux_armv7l.whl
可以看出pip使用了-i形参,通过该形参可以切换镜像源,如果直接使用国外镜像源那么会导致安装过程中出现失败,如下给出了一些常用的国内镜像源地址。
阿里云 http://mirrors.aliyun.com/pypi/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学 http://pypi.hustunique.com/
整个安装过程大概要持续1~2小时左右,结束后如果没有报错,到此完成了所有的安装工作。
完成安装并验证
安装完成之后,按照如下过程执行:
python
import tensorflow as tf
如果以上没有报错那么就说明安装成功。