这几天一直在搭建TensorFlow环境,可谓是一波三折啊~记录一下
首先我想用自己的电脑装个双系统,win7+Ubuntu18.04。因为win7系统里面有很多我的文件,然后这个系统也很经典,用了好几年有点不舍;另一方面,我需要Linux系统写代码,搭建TensorFlow框架做实验。基于这样的想法,我尝试在自己的电脑上安装Ubuntu。
在网上搜索教程,官网下载Ubuntu18.04的iso镜像文件,下载ultraISO软碟通制作U盘启动,压缩磁盘分区50G给Ubuntu,重启按F2进入BIOS设置USB HDD置顶启动,按F12进入安装,我寻思还挺顺利,但是,我的电脑总是在安装的过程中卡在一个地方不动。中间也没出什么差错啊,怎么回事,中间搜索了很多说法:设置BIOS中Secure Boot选项为disabled;在安装时把光标放在install那一条点击e进入编辑,然后将 quiet splash --- 改为 quiet splash nomodeset;不用U盘做启动用easyBCD安装Ubuntu18.04;把Ubuntu18.04降到16.04版本,,,
都不行,一直卡在老地方,这中间我都不知道重启了多少次。后来我在想是不是我的安装水平有问题,就上淘宝让大神给我安装一下双系统,我把之前一直出现的卡住的界面发给好几个淘宝卖家,他们都说安装不了,硬件兼容问题。有一个卖家让我进入BIOS界面给他看说需要设置一下选项,我打开界面,都没有那个选项,,好吧,确实我的电脑有点太老了,这条路走不通,我还伤心了好一会儿,,
然后找所里的主机,之前师兄用四个主机搭集群做Hadoop,现在不用了,里面装的是CentOS。我就拿了一个主机重装了系统,用我之前的Ubuntu18.04 U盘做启动,本来想着肯定也会有一大堆问题,但是,没想到一下就安装好了,直接install就好,,哎,我的电脑啊,,我还重装了好几次,因为简单,因为可以选择是正常安装还是minimal安装,所以我就都看了一下哈哈,最后选择了minimal安装。
Ubuntu18.04安装完了,我要开始搭环境了,我选择的是anaconda3+vscode+tensorflow。Ubuntu安装完了自带Python2.7,这不一定是你需要的,所以就安装anaconda3(Python的发行版),在官网下载选择对应的系统(Linux)和Python版本(Python3.7)下载,下载网址:(我是在清华镜像网站下载的)
#官网
https://www.anaconda.com/distribution/
#清华镜像
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
#中科大镜像
https://mirrors.ustc.edu.cn/anaconda/archive/
打开终端输入:
bash ~/Downloads/Anaconda3-5.3.1-Linux-x86_64.sh
然后开始安装,一直enter,yes,这中间的过程有:阅读license,接受license,默认安装路径,将Anaconda的安装路径添加到环境变量。最后看到thank you for installing anaconda3!表示安装成功。安装成功后,现在会提醒你是否安装vscode(IDE或者说editor,轻量级易扩展界面友好),输入yes。
安装好了之后,重启终端才能有效(因为改了环境变量),验证anaconda是否安装成功,输入:
anaconda -V
出现版本信息,则安装成功。
现在开始搭TensorFlow(深度学习框架,功能强大代码量少,与pytorch等的比较见网上博客很详细),分为CPU版和GPU版,GPU版需要降级GCC和G++ 版本到5.5或以下,安装CUDA 9.0 ToolKit,安装cuDNN7.1.3 for CUDA9.0,然后再安装TensorFlow GPU。我在官网找了一下,没有相应的显卡驱动程序(所里的主机显卡是AMD),所以装的是CPU版本。
1. 建立一个tensorflow的虚拟运行环境:(在虚拟环境下可以不影响外部配置)
conda create -n tensorflow python=3.7.0
输入yes,等待安装结束。如果出现安装不成功的情况,需要把相应已存在的tensorflow文件夹删除:
#进入安装tensorflow环境的目录
cd /home/zdfan1007/.conda/envs/
#删除tensorflow文件夹
rm -r tensorflow/
#查看tensorflow文件夹是否删除
ls
如果没有显示tensorflow选项说明已删除成功,再次运行创建tensorflow环境的命令即可。
这里说一下,conda是用Anaconda打包的一个包管理器,而包管理器是自动化软件安装,更新,卸载的一种工具,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。 conda 是为 python 程序创建的,适用于 Linux,OS X 和Windows,也可以打包和分发其他软件。conda的功能与pip相似,区别在于:pip可以允许你在任何环境中安装python包,而conda允许你在conda环境中安装任何语言包(包括c语言或者python)。
2. 激活tensorflow环境
source activate tensorflow
3. 安装tensorflow
安装有三种方式,输入:(我用的第一种)
pip install tensorflow
或
conda install -c conda-forge tensorflow
或
anaconda-navigator
第三种方式会出现anaconda navigator页面,选择左边的Environments菜单,All, 输入tensorflow进行搜索,在出现的列表种,勾选想要安装的tensorflow版本,tensorflow和tensorflow-base是CPU版本,tensorflow-gpu和tensorflow-gpu-base是GPU版本。点击apply,anaconda会自动检索其依赖项,确认安装即可。
4. 验证tensorflow是否安装成功
#启动python
python
#输入测试代码
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow! #恭喜,安装成功
#退出python
quit() #或者按Ctrl+D
5. 收尾
退出tensorflow环境:
source deactivate
查看截至目前你所安装的环境:
conda info --envs
#我的会显示
tensorflow /home/zdfan1007/.conda/envs/tensorflow
base * /home/zdfan1007/anaconda3
*号是显示你当前所在的环境
安装好Ubuntu系统后,系统已经自动安装了python(2.7)和python3(3.6);安装完anaconda后,anaconda里面也有上面步骤安装好的python3.7,为了方便管理不同版本的python,可采用如下方式:
1. 重启终端,查看自己的python都在哪里:
whereis python
2. 打开配置文件进行配置:
gedit ~/.bashrc
3. 会打开一个文件,将下面三行添加到末尾,保存退出(此处的路径就是前面查看的Python路径,zdfan1007是我的用户名):
export PATH="/home/zdfan1007/anaconda3/bin:$PATH"
export PATH="$PATH:$HOME/bin"
alias py27="/usr/bin/python2.7"
alias py36="/usr/bin/python3.6"
alias pyana3="/home/zdfan1007/anaconda3/bin/python3.7"
4. 使上面的配置生效:
source ~/.bashrc
5. 使用方法:
输入:
py27 #对应系统自带的python2.7版本
输入:
pyana3 #对应anaconda中的python3.7版本
1. 关于conda
前面提到,conda是一个包管理器,它将conda、anaconda和python等都视为package包,因此,可以使用conda来管理conda、anaconda和python等版本。
# 查看当前环境下已安装的包
conda list
# 查看指定环境下已安装的包
conda list -n tensorflow
# 在当前环境下查找包
conda search numpy
# 在当前环境下安装anaconda包
conda install anaconda
# 创建tensorflow环境和安装anaconda可以合并为
conda create -n tensorflow python=3.7.0 anaconda
# 在指定环境下安装包
conda install -n tensorflow numpy #也可以通过-c指定通过某个channel安装
# 更新python
conda update python
# 假设当前环境是python3.7, conda会将python升级为3.7.x系列的当前最新版本
# 删除package
conda remove -n tensorflow numpy
2. 关于组合选择
出于想搭建Linux环境下的Python编程,我进行了这次环境安装。这里我选的是Ubuntu + anaconda + vscode + TensorFlow(CPU),当然也有很多其他组合,看大家的个人喜好以及电脑配置了。
除了Ubuntu之外,还有很多Linux系统发行版本,像Debian、Redhat、Fedora、CentOS等也是用的比较多的,其实内核都一样,大家可根据自己的电脑配置和个人偏好来选择。
Anaconda是一个包集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,就是把很多常用的不常用的库都安装好了。
Miniconda只包含最基本的python与conda,以及相关的必须依赖项,对于空间要求严格的用户,可以选择Miniconda,只包含最基本的东西,其他的库自己安装。
关于IDE,有Jupyter notebook(之前被称为IPython notebook),有现在安装时推荐的vscode,有Atom,有Sublime Text,还有大家比较熟悉的pycharm等。
Jupyter主要服务三种语言:Julia,Python和R,它可以将数据分析的代码、图像和文档全部组合到一个web文档中,让数据分析师集中精力向用户解释整个分析过程。
vscode以界面简洁,轻量著称,速度较快,对超大文件读写速度快,内存占用小,可以基于不同项目(文件夹)设置偏好,支持markdown,对.NET C# JS开发者友好。
Atom的界面 ui 非常的现代化、功能强大、丰富的快捷键操作。它是整个社区驱动,把插件化架构摆在第一位,Hackable让任何人都能简单贡献自己的插件,任何Web能实现的功能、效果都可以实现,且可配合本地库。对Web开发者(尤其前端)友好。缺点是启动速度慢,基于Electron(Chrome)的效率问题,资源占用大。
Sublime快速稳定,超快的启动速度和低资源占用,全局搜索和索引速度快,插件功能性好,可配置快捷键,构建参数,适合编辑任何小文本(包括普通文本,配置文件),C/C++/ASM和很多脚本语言以及不需要实时调试类型的语言,缺点是可定制化一般,个人开发并且收费闭源。
pycharm是python专用型的编辑器,跨平台,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。可以进行方便的环境管理、方便的代码调试、可以自动导入包,也支持Git管理。缺点是启动慢,收费,社区版免费,内存占用高。
这里有一些部分IDE的对比,供大家参考:
此外,还有Spyder、Emacs VIM、NINJA IDE、Ulipad、Eric等Python IDE,还有只支持Windows的PyScripter、notepad++、notepad2-mod等,大家慢慢发掘吧,一个好的IDE对提高代码效率还是挺重要的~
正如我前面所述,tensorflow-gpu的安装对电脑配置有一定要求,当然性能也更好一点。
CPU 需要很强的通用性,为了处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。由图可知,CPU被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路。
GPU 面对的是类型高度统一的、互相无依赖的大规模数据和不需要被打断的纯净的计算环境。由图可知,GPU有数量众多的计算单元和超长的流水线,只有简单的控制逻辑并省去了Cache。
关于二者更详细的区别请参考博客https://blog.csdn.net/xuaho0907/article/details/82961032。
写完了Linux环境下的TensorFlow搭建,由于整个过程是从一周前开始的,很多细节都记不太清了,只写了大致的思路和我的一些想法整理给大家,写的有点粗枝大叶哈哈,关于里面更多的细节步骤请去博客搜索,有很多很好的教程,在这里也感谢广大网友让我对这一过程有了基础的了解,现在终于可以开始安心地进行开发了哈哈~