首页 > 技术文章 > win10上tensorflow编译

strugt 2020-06-29 11:09 原文

1. 预备工具

1.1 说明

  编译过程有点坑,而且耗时,如果不是必须要编译的话,可以去 https://github.com/fo40225/tensorflow-windows-wheel 下载,有现成的轮子。测试代码可以参考 https://github.com/ksachdeva/tensorflow-cc-exampleshttps://github.com/aljabr0/from-keras-to-c (对开源的作者表示感谢)。

  这里我使用的cmake来编译的tensorflow。版本是tensorflow 1.8.0 x64 CPU版本的(tensorflow不支持32位系统,在stackoverflow上看的要支持32位系统需要更改一些源码),本来想编译1.14.0,但是编译过程始终报错,遂降低了版本。tensorFlow 1.11开始,仅支持bazel编译。

1.2 所需工具

工具名
版本
必要
描述
操作系统 Win10 64位
CMake 3.16.3 https://cmake.org/download/
Swigwin 4.0.1 http://www.swig.org/download.html
Anaconda或者Python3.6 Anaconda3-2019.07-Windows-x86_64.exe https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
tensorflow源码 1.8.0 https://github.com/tensorflow/tensorflow
Git 2.23.0 https://git-scm.com/downloads
Visual Studio 2017或者2015 我这里使用的是VS2017专业版本
CUDA和cuDNN 显卡决定,注意配套
FQ工具 N/A 最好能FQ,编译过程中会到墙外下载一些包

2. 编译步骤

2.1 生成sln项目

  1. 打开cmake-gui,进行如下图配置,选择VS版本,点击Generate,生成相关配置。avatar

  2. 配置参数,如图所示,由于我编译的是CPU版本,所以没有勾选tensorflow_ENABLE_GPU,点击Generateavatar

2.2 编译sln项目

  1. 打开tensorflow.sln,如图所示。然后修改配置属性,改为x64下的Release。

avatar

  2. 之后需要修改前面5个以下划线命名的项目的配置属性。在 配置属性 > 链接器 > 输入 > 附加依赖项 添加$(SolutionDir)$(Configuration)\pywrap_tensorflow_internal.libavatar

  3. 配置好后修改源代码中文件tensorflow\contrib\boosted_trees\lib\utils\sparse_column_iterable.cc,将第99~101行注释掉,改为:

bool operator<( const IndicesRowIterator& other ) const {
    QCHECK_LT( iter_, other.iter_ );
    return ( row_idx_ < other.row_idx_ ); 
}

  4. 然后右击ALL_BUILD项目,点击生成就会开始编译了(注意打开FQ软件,因为编译过程中会下载一些文件)。然后就是漫长的等待了。

  5. 在所有项目都成功生成后就可以右击INSTALL项目,直接生成,就会将编译好的tensorflow发布到最开始我们在2.1节第2步配置的文件夹中。

3. 问题解决

3.1 下载文件404

  这是比较容易遇到的问题,下载文件404。我在编译png项目过程中就遇到过下载文件404(下载链接失效了)。

  一个解决办法是在如图所示的配置文件中将无效的下载链接更改为有效的。avatar

  另一个推荐的解决办法是直接下载对应的文件,然后放在如图所示的文件中。这样由于已经下载成功,那么编译过程中就不会再次下载,而是直接使用下载好的(会验证文件的hash值)。avatar

  如果编译过程中遇到其它问题,欢迎发邮箱交流。

推荐阅读