前言
在本篇文章中,我们将介绍TensorFlow的安装,TensorFlow是Google公司在2015年11月9日开源的一个深度学习框架。
官网文档地址为:https://www.tensorflow.org/
官方GitHub仓库:https://github.com/tensorflow/tensorflow
TensorFlow目前支持4种开发语言,分别是Python(包括Python2和Python3)、Java、Go、C。笔者使用的环境如下:
开发语言:Python 3.6
使用操作系统:Ubuntu 16.04
硬件环境:CPU
基于这些环境,我们来安装TensorFlow吧。
Ubuntu下安装TensorFlow
在Ubuntu上我们分别在原生pip、Virtualenv 环境 、 Docker容器、Bazel环境以及Anaconda环境下安装。
一、原生pip安装TensorFlow
使用原生的pip安装时最简单的,直接安装使用一条命令就可以安装完成了。
首先确认Python环境,Ubuntu会自带Python环境的,不用我们自己安装,使用python3 -V可以查询安装的Python环境,输出如下:
Python 3.5.2
安装TensorFlow需要使用pip
命令,默认是没有安装的,所以我们需要安装pip
命令:
sudo apt-get install python3-pip python3-dev
这里笔者要说一下,默认的镜像源太慢了,笔者修改成阿里镜像源了,修改方式如下:
- 备份源列表文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 编辑源列表文件:
sudo vi /etc/apt/sources.list
- 清空里面的内容,添加以下的的信息:
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
- 最后执行更新列表命令:
sudo apt update
安装完成pip
命令之后,可以使用pip3 -V
查看是否已经安装成功及安装的版本,输出如下,官方要求pip的版本要不小于8.1:
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
- 如果觉得版本太低,也可以升级,先要下载一个升级文件,命令如下:
wget https://bootstrap.pypa.io/get-pip.py
- 下载完成之后,可以使用这个文件安装最新的pip了:
sudo python3 get-pip.py
一切多准备完成,那就可以开始安装TensorFlow了,只要使用以下一条命令就可以:
sudo pip3 install tensorflow
- 如果使用上面安装比较慢的话,我们还可指定使用的镜像源,比如这里笔者使用的是阿里的镜像源,之后使用到
pip
安装的同样的操作:
sudo pip3 install -i https://mirrors.aliyun.com/pypi/simple/ tensorflow
安装完成之后,可以使用以下命令查看是否完成及安装的版本:
pip3 list
注意:如果在运行报以下错误,多数是电脑的CPU不支持AVX指令集:
非法指令 (核心已转储)
如何知道自己的电脑是不是支持AVX指令集呢,可以通用以下的命令查看,输出Yes
就是支持,No
就是不支持:
if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi
TensorFlow在1.6版本之后都会使用AVX指令集,如果读者的电脑不支持AVX指令集,就要安装低版本的,如下是安装1.5版本的:
pip3 install tensorflow==1.5
安装完成之后,可以进行测试,测试情阅读最后的测试部分。
二、Virtualenv安装TensorFlow
首先通过以下的命令来安装 pip 和 Virtualenv:
sudo apt-get install python3-pip python3-dev python-virtualenv
然后通过下面的命令来创建 Virtualenv 环境:
virtualenv --system-site-packages -p python3 ~/tensorflow
最后通过下面的命令激活 Virtualenv 环境:
source ~/tensorflow/bin/activate
这时会发现控制台已经发生了变化,变成如下状态,这表明已经进入了 Virtualenv 环境:
(tensorflow) yeyupiaoling@tensorflow:~$
接下来的操作都是在这个Virtualenv 环境下操作,比我们的pip命令也是在这里的,可以使用pip3 -V
查看:
pip 10.0.1 from /home/yeyupiaoling/tensorflow/lib/python3.5/site-packages/pip (python 3.5)
我们在Virtualenv 环境里通过以下的命令即可完成安装TensorFlow:
pip3 install tensorflow
不支持AVX的请安装1.5版本:
pip3 install tensorflow==1.5
使用完成之后,可以通过以下命令退出Virtualenv 环境:
deactivate
三、Docker下安装TensorFlow
要使用Docker,就要先安装Docker,以下命令就是安装Docker的命令:
sudo apt-get install docker.io
安装完成之后,可以使用docker --version
查看Docker的版本,如果有显示,就证明安装成功了。
然后我们可以通过以下的命令拉取TensorFlow的镜像,我们也可以通过dockerhub获取更多Docker镜像:
docker pull tensorflow/tensorflow:1.8.0-py3
如果电脑不支持AVX指令集的,请安装低版本的TensorFlow镜像:
docker pull tensorflow/tensorflow:1.5.1-py3
拉取完成镜像,就可以使用docker images
查看已经安装的镜像:
REPOSITORY TAG IMAGE ID CREATED SIZE
tensorflow/tensorflow 1.8.0-py3 a83a3dd79ff9 2 months ago 1.33 GB
使用TensorFlow的Docker镜像有个好处就是自带了jupyter notebook,启动镜像之后可以直接使用jupyter。
sudo docker run -it -p 80:8888 tensorflow/tensorflow:1.8.0-py3
然后终端会输出以下信息,要注意输出的token:
[I 07:08:38.160 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[W 07:08:38.177 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 07:08:38.186 NotebookApp] Serving notebooks from local directory: /notebooks
[I 07:08:38.186 NotebookApp] 0 active kernels
[I 07:08:38.187 NotebookApp] The Jupyter Notebook is running at:
[I 07:08:38.187 NotebookApp] http://[all ip addresses on your system]:8888/?token=ab489f0445846cb7f9d5c9613edcf7b9537cd245dbecf2a6
[I 07:08:38.187 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 07:08:38.187 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=ab489f0445846cb7f9d5c9613edcf7b9537cd245dbecf2a6
然后我们在浏览器上输入IP地址,如何是在本地,那就就输入localhost,得到的页面如下,输入终端输出的token和新密码就可以登录使用jupyter了:
得到的jupyter网页如下:
如果停止运行镜像了,可以使用以下的命令找到之前使用这个进行run生成的一个容器:
sudo docker ps -a
会得到以下信息,其中最重要的是CONTAINER ID:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44aa680ac51f tensorflow/tensorflow:1.8.0-py3 "/run_jupyter.sh -..." 14 minutes ago Exited (0) 21 seconds ago cranky_elion 通过这个CONTAINER ID可以再次启动这个容器,这样就不用每次都run一个容器出来,占用磁盘容量,同时也可以保存原来的环境,可以使用以下的命令启动容器:
sudo docker start 44aa680ac51f
启动之后是在后台运行的,那么如何让容器有信息输入的同时会输出到控制台呢,可以用使用以下的命令实现:
sudo docker attach 44aa680ac51f
如果要以终端的方式进入到容器中,可以使用以下的命令:
sudo docker exec -it 44aa680ac51f /bin/bash
安装完成之后,可以进行测试,测试情阅读最后的测试部分。
四、Bazel下安装TensorFlow
五、Anaconda下安装TensorFlow
测试
安装完成之后,我们要测试一下环境是不是已经成功安装并且可以正常使用了。
首先编译一个测试test1.py
文件:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
然后我们执行这个文件python3 test1.py
就可以运行它了,正常情况下会输出以下内容:
2018-07-08 15:11:05.240607: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
b'Hello, TensorFlow!'
以上是在终端上操作的,那么使用Docker应该如何执行这些文件呢。有两种方法,一种就是以命令终端的方式进入到TensorFlow镜像中,之后的操作就跟在Ubuntu操作差不多了:
docker run -it -v $PWD:/work tensorflow/tensorflow:1.8.0-py3 /bin/bash
另一种就是挂载目录到镜像上,然后直接通过命令执行代码文件:
docker run -it -v $PWD:/work -w /work tensorflow/tensorflow:1.8.0-py3 python3 /work/test1.py
参考资料
https://opsx.alibaba.com/mirror
https://www.tensorflow.org/install/install_linux
https://www.tensorflow.org/install/install_windows
https://www.tensorflow.org/install/install_sources
https://blog.csdn.net/u014132659/article/details/51544754
http://www.tensorfly.cn/tfdoc/get_started/introduction.html
https://blog.csdn.net/u010099080/article/details/53418159
https://blog.csdn.net/u010397369/article/details/41045251
https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models