TensorFlow CPU版源码安装

最近发现Windows10有一个非常好的特性,就是自带一个完整的Linux Subsystem,可以完全模拟一个Ubuntu系统,甚至可以模拟图形界面,而且不用离开Windows环境,以一个Windows标准程序的方式运行,这为我们在Windows平台上开发Linux应用提供了极大的方便,目前发现其唯一的不足之处在于其不支持对硬件GPU的访问,对于深度学习应用来说,是一个比较大的遗憾。配置Windows10下Linux Subsystem并配置XServer图形界面,网上有很多资源,读者可以自己搜索相关资源完成配置工作。本文将在Windows Linux Subsystem下面,以源码方式,编译安装TensorFlow CPU版本。因为TensorFlow从1.6版开始,默认支持CPU的AVE指令,对于不支持AVE指令的CPU,只能运行1.5及以下版本,如果我们要运行1.6及以上版本,就需要从源码来安装,截止本文发稿时为止,TensorFlow已经到了1.9rc0版了,因此学习源码安装TensorFlow还是很有现实意义的。

我们首先需要更新系统的Python版本。Ubuntu系统中缺省的python3为python3.5版,我们可以将其升级为python3.6版本, 升级过程非常简单,只需运行如下命令:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

运行命令:python3.6 -V,查看显示的版本是否为3.6.x版本,如果是就证明升级成功。我们还可以查看pip版本:

python3.6 -m pip -V

安装开发需要的软件包:

sudo apt-get install build-essential libssl-dev libffi-dev python3.6-dev
sudo apt-get install python3.6-venv

在准备编译tensorflow的目录下,创建虚拟环境:

python3.6 -m venv tfe

这条命令会在当前目录下创建tfe目录,该目录下复制了python3.6的所有信息,在这个虚拟环境下缺省的Python就是3.6版本了。

我们可以假设我们TensorFlow编译目录为/home/dev/tf_dev,下面我们均基于此目录来操作。

我们首先需要下载编译TensorFlow所需的bazel,先到这个网址下载安装文件:

bazel发行版列表页面选择bazel-*-installer-linux-x86_64.sh文件下载,其中*为最新的版本号。

chmod 777 bazel-1.14.0-installer-linux-x86_64.sh

上面的bazel-1.14.0-installer-linux-x86_64.sh中的1.14.0需要替换成大家下载时的版本。然后运行此安装程序:

./bazel-1.14.0-installer-linux-x86_64.sh --user

安装完成后,修改~/.bashrc文件,在最后加入如下内容:

export PATH="\$PATH:\$HOME/bin"

使其生效:

source ~/.bashrc

接下来我们安装几个依赖库:

sudo apt-get install python3-tk
sudo apt-get install python3-numpy
pip install numpy # 在虚拟环境中安装
pip install matplotlib
pip install scikit-learn

其中python3-tk是安装绘制库matplotlib所需要的库,运行pip命令行,需要激活前面我们安装的虚拟环境:source /home/dev/tf_dev/tfe/bin/activate,这里读者需要将目录替换为自己虚拟环境所在目录。

在此目录下首先检出最新TensorFlow源码:

git clone https://github.com/tensorflow/tensorflow

其会将TensorFlow最新源码下载到/home/dev/tf_dev/tensorflow目录下,进入该目录。运行configure命令:

./configure

这里会我们一系列问题,我们只需要注意将python指向我们创建的虚拟环境就可以了,其余均选择默认选项即可。当前可以忽略某些云服务文件系统的支持。

下面开始正式编译TensorFlow:

无GPU:bazel build --config=opt --cxxopt="-D\_GLIBCXX\_USE\_CXX11\_ABI=0" //tensorflow/tools/pip\_package:build\_pip\_package
有GPU:bazel build --config=opt --cxxopt="-D\_GLIBCXX\_USE\_CXX11\_ABI=0" --config=cuda //tensorflow/tools/pip\_package:build\_pip\_package

编译过程耗时非常长,在我的笔记本上,大约用了一晚上的时间,但是基本可以保证编译成功。

由于我们要生成pip的安装文件*.whl,所以需要安装wheel模块,在我们虚拟环境下运行:

pip install wheel

然后我们就可以运行生成whl文件命令了,确保在TensorFlow源码目录下,运行:

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

其会在/tmp/tensorflow_pkg目录下生成相应的whl文件,以我的为例就是:tensorflow-1.9.0rc0-cp36-cp36m-linux_x86_64.whl文件。

下面我们来安装TensorFlow,首先确保我们虚拟环境处于激活状态,运行:

pip install /tmp/tensorflow_pkg/tensorflow-1.9.0rc0-cp36-cp36m-linux_x86_64.whl

确保虚拟环境处于激活状态,在命令行运行python,在python提示符下,输入:

import tensorflow as tf
如果程序不报错,就证明TensorFlow CPU版源码方式安装成功了。

猜你喜欢

转载自blog.csdn.net/yt7589/article/details/80723217
今日推荐