最近发现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版本, 升级过程非常简单,只需运行如下命令:
运行命令:python3.6 -V,查看显示的版本是否为3.6.x版本,如果是就证明升级成功。我们还可以查看pip版本:
安装开发需要的软件包:
在准备编译tensorflow的目录下,创建虚拟环境:
这条命令会在当前目录下创建tfe目录,该目录下复制了python3.6的所有信息,在这个虚拟环境下缺省的Python就是3.6版本了。
我们可以假设我们TensorFlow编译目录为/home/dev/tf_dev,下面我们均基于此目录来操作。
我们首先需要下载编译TensorFlow所需的bazel,先到这个网址下载安装文件:
bazel发行版列表页面选择bazel-*-installer-linux-x86_64.sh文件下载,其中*为最新的版本号。
上面的bazel-1.14.0-installer-linux-x86_64.sh中的1.14.0需要替换成大家下载时的版本。然后运行此安装程序:
安装完成后,修改~/.bashrc文件,在最后加入如下内容:
使其生效:
接下来我们安装几个依赖库:
其中python3-tk是安装绘制库matplotlib所需要的库,运行pip命令行,需要激活前面我们安装的虚拟环境:source /home/dev/tf_dev/tfe/bin/activate,这里读者需要将目录替换为自己虚拟环境所在目录。
在此目录下首先检出最新TensorFlow源码:
其会将TensorFlow最新源码下载到/home/dev/tf_dev/tensorflow目录下,进入该目录。运行configure命令:
这里会我们一系列问题,我们只需要注意将python指向我们创建的虚拟环境就可以了,其余均选择默认选项即可。当前可以忽略某些云服务文件系统的支持。
下面开始正式编译TensorFlow:
编译过程耗时非常长,在我的笔记本上,大约用了一晚上的时间,但是基本可以保证编译成功。
由于我们要生成pip的安装文件*.whl,所以需要安装wheel模块,在我们虚拟环境下运行:
然后我们就可以运行生成whl文件命令了,确保在TensorFlow源码目录下,运行:
其会在/tmp/tensorflow_pkg目录下生成相应的whl文件,以我的为例就是:tensorflow-1.9.0rc0-cp36-cp36m-linux_x86_64.whl文件。
下面我们来安装TensorFlow,首先确保我们虚拟环境处于激活状态,运行:
确保虚拟环境处于激活状态,在命令行运行python,在python提示符下,输入:
如果程序不报错,就证明TensorFlow CPU版源码方式安装成功了。