一、准备工作
1、安装以下软件:
cmake
git
swig
其中, cmake和git需要配置环境变量;swig不需要安装,下载下来直接可以使用。
2、编译环境
介绍一下编译时使用的环境:python3.5,tensorflow-r1.9,vs2015,cuda9.0,cudnn7.1.4(因为编译的是cpu版本,所以实际上cuda和cudnn这里不需要)
3、编译目录
tensorflow-r1.9的存放位置需要注意,文件夹的位置不要放的太深,因为编译要求文件名的长度不能超过1024,要不然编译过程中会报错。(fatal error C1014: 包含文件太多 : 深度=1024)
二、编译
1、找到下载的tensorflow-r1.9文件夹,打开tensorflow-r1.9\tensorflow\contrib\cmake文件夹,在这个文件夹下面新建一个build文件夹作为编译结果的存放目录。
2、在cmd环境下打开build文件夹,然后输入以下指令
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DSWIG_EXECUTABLE=D:\lib\swigwin-3.0.12\swig.exe -DPYTHON_EXECUTABLE=D:\Programs\Python\Python35\python.exe -DPYTHON_LIBRARIES=D:\Programs\Python\Python35\libs\python35.lib -Dtensorflow_BUILD_SHARED_LIB=ON
因为我这里安装了vs15和vs17,-G "Visual Studio 14 2015 Win64"
是为了选择vs15来生成编译文件。
3、运行上述指令之后会在build文件夹下出现vs的工程,找到tensorflow.sln,用vs15打开
4、编译之前有一个问题需要注意,先挂一个vpn,然后设置vs的代理环境。因为,在编译的过程中,需要下载一些文件,不挂vpn可能会出现无法连接到下载服务器的情况,特别是grpc模块,经常会下载不下来。如果出现下载失败的情况,在编译的时候,有可能会出现100多个文件编译失败的情况。
5、在vs里面,设置编译的版本为Release和x64,然后找到ALL_BUILD进行编译,等待编译完成即可。
6、如果编译的时候出现错误信息: fatal error C1060: 编译器的堆空间不足,可以修改vs的选项:
菜单栏中的工具(T)→选项(O)→项目和解决方案→生成并运行
7、如果在编译的时候出现LINK : fatal error LNK1181: 无法打开输入文件“\pywrap_tensorflow_internal.lib”错误,是因为3个项目的配置有问题,修改如下:
# 修改这三个项目的配置项
_beam_search_ops
_gru_ops
_lstm_ops
配置属性==>连接器==>常规==>附加库目录==>添加:$(SolutionDir)$(Configuration);
修改完成之后,单独编译这三个项目,然后重新编译ALL_BUILD即可。整个项目编译完成,会在tensorflow-r1.9\tensorflow\contrib\cmake\build\Release目录下出现以下文件:
参考:
https://joe-antognini.github.io/machine-learning/build-windows-tf
https://blog.csdn.net/longji/article/details/72760409