win7 x64 vs2015 c++ 使用 tensorflow

     (这里不想使用"深度学习",因为这个名字就是炒作,而且这两年的神经网络带来的性能,并不是因为深.)

     最近的需求需要预研下人脸识别/人工智能. 虽然目前各种人脸识别/图像识别/人工智能,都只是处于人工智障阶段,但是不可否认还是有一些实际价值.所以需要选择一个方案,在项目中使用起来,带来价值,方可推动继续研究.

    前面文章说了.caffe2 是个巨大的坑,现在还不适合跳入. 在短暂调研后抛弃.,随后选择tensorflow. tensorflow相对编译容易了一些.但是仍然有一些坑.

1/编译过程:

    按照网上的各种文章,基本都无法直接顺利完成.

2/编程使用

   网上清一色的 python, 很少有c++资料. 就连google的自带demo都只是一个最简单的调用形成session. 各种基础使用方法都没有.,非常坑.(但是呢换个角度:免费使用就用吧,有用就不错了).而在项目中,不可能使用python.1)大部分这种智能算法需要和项目紧密结合,或者嵌入式设备.这种基本都是需要c/c++/java等.2)效率上,这个不多说,python就是渣.3)依赖环境上:python需要巨大的库,几百兆. +各种依赖库配置.4)其语法就是变态. 5)后期需要对底层算法进行修改,或者添加需要的优化功能,还得是c++方便扩展对接.

   经过摸索基本能实现手写字的从训练到预测的过程所有c++实现.

这一篇主要说下编译的过程:

   

主要参考网页: http://www.cnblogs.com/jliangqiu2016/p/7642471.html,还有一些自己的改动.

 一、环境准备

1.1安装VS2015

1.2安装Swigwin,解压swigwin-3.0.12.zip,放到任意目录。CMake会用到这个目录。(搜索下下载地址)

1.4安装python3.5,安装时注意选择将路径添加到环境变量。(搜索下下载地址)

1.5安装CMake-3.8.0 ,安装时注意选择将路径添加到环境变量。

1.6源码: tensorflow.rar,代码版本是v1.5.0, 不要使用1.3 其中有接口变化.

1.7编辑文件tensorflow/tensorflow/contrib/cmake/CMakeLists.txt,将第87行至93行修改如下:

if (tensorflow_OPTIMIZE_FOR_NATIVE_ARCH)

  include(CheckCXXCompilerFlag)

  CHECK_CXX_COMPILER_FLAG("-march=native"COMPILER_OPT_ARCH_NATIVE_SUPPORTED)

  if (COMPILER_OPT_ARCH_NATIVE_SUPPORTED)

    set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -march=native")

  else()

    CHECK_CXX_COMPILER_FLAG("/arch:AVX"COMPILER_OPT_ARCH_AVX_SUPPORTED)

    if(COMPILER_OPT_ARCH_AVX_SUPPORTED)

      set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} /arch:AVX")

    endif()

  endif()

endif()

二、编译

cmake-gui界面进行cmake编译出release和debug版本

此处修改为本机swig.exe的地址。

2.1 点击Configure按钮

    tensorflow1.3 用修改这两点,  tensorflow 1.5 不用修改这两点,

2.1.1修改tensorflow\contrib\cmake\build\gemmlowp\src\gemmlowp-stamp下的download-gemmlowp.cmake和gemmlowp-urlinfo.txt两个文件里的75d40ea8e68b0d1644f052fffe8f14a410b2a73d40ccb859a95c0578d194ec26替换为1e40863d9f15dd6b15f8f18f49c500944be6118d9fe17e9dc58a1c709cadbb8a。

2.1.2 修改tensorflow\contrib\cmake\build\re2\src\re2\CMakeLists.txt,将第16行修改为:option(RE2_BUILD_TESTING“enable testing for RE2” OFF)注释掉99行re2_test,注释掉103行search_test。

2.2 点击Generate按钮

2.3 点击Open Project。

三、生成工程

      默认win7 vs2015都识别为 x86环境编译x64的目标,所以调用的编译器为D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\ x86_amd64文件夹的编译器. 会导致32位编译器最后内存不足.修改之后就是使用的x64环境编译器编译x64目标.

      使用64位的cl.exe来编译,可以在D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin下,将amd64文件夹重命名为x86_amd64。

         鼠标点击tensorflow工程编译,不要默认项目编译,或者AllBuild.

   编译的过程中,会去下载代码,所以需要的时间久,耐心等待。有个别工程编译失败的,单独编译这些工程,不用再编译所有工程.

下一篇文章补充windows vs2015 纯c++使用 tensorflow


猜你喜欢

转载自blog.csdn.net/zsyddl2/article/details/80968179