配置VS2015 Tensorflow C++ API

部署运行你感兴趣的模型镜像

Table of Contents

参考

准备

修改CMakeLists.txt

Cmake

编译tensorflow

测试

下一步


事实上,确实得老老实实听取查到的资料的话...在用头铁的不依照各位老哥们的话依旧用VS2010去配置tensorflow C++API的三天里饱受煎熬,转为2015后果然很流畅的就配置好了呢~所以其实前面一直试错、改错其实收获还是挺大的嘛,后续遇到的问题基本瞬间就解决了。


参考

基本上参考了这位大神的步骤:

【Tensorflow】Windows以cmake+visual studio方式编译cpu版tensorflow.dll和tensorflow.lib

【Tensorflow】Windows以cmake+visual studio方式编译gpu版tensorflow.dll和tensorflow.lib

【Tensorflow】Windows下用tensorflow C++接口调用pb模型文件进行预测

 

准备

     visual studio 2015 update 3(必须要,没有的可以去下载补丁更新一下,官网有)

     git(用于从github上down东西下来,推荐架梯子,或者也可以自己下载再放入相应路径下)

     Cmake v3.6.3

     python3.6或python3.5

     tensorflow r1.8https://github.com/tensorflow/tensorflow/tree/r1.8

     swigwin

     CUDA、cudnn

修改CMakeLists.txt


修改tensorflow/contrib/cmake/CMakeList.txt,将

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")
  endif()
endif()


修改为

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()

文章中在gpu版本下还推荐修改了几个地方,分别是:

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_30,code=\"sm_30,compute_30\";-gencode arch=compute_35,code=\"sm_35,compute_35\";-gencode arch=compute_52,code=\"sm_52,compute_52\";-gencode arch=compute_61,code=\"sm_61,compute_61\")
if (WIN32)
    add_definitions(-DGOOGLE_CUDA=1 -DTF_EXTRA_CUDA_CAPABILITIES=3.0,3.5,5.2,6.1)
  else (WIN32)
    # Without these double quotes, cmake in Linux makes it "-DTF_EXTRA_CUDA_CAPABILITIES=3.0, -D3.5, -D5.2" for cc, which incurs build breaks
    add_definitions(-DGOOGLE_CUDA=1 -D"TF_EXTRA_CUDA_CAPABILITIES=3.0,3.5,5.2,6.1")
  endif (WIN32)
FILE(WRITE ${tensorflow_source_dir}/third_party/gpus/cuda/cuda_config.h
    "#ifndef CUDA_CUDA_CONFIG_H_\n"
    "#define CUDA_CUDA_CONFIG_H_\n"
    "#define TF_CUDA_CAPABILITIES CudaVersion(\"3.0\"),CudaVersion(\"3.5\"),CudaVersion(\"5.2\"),CudaVersion(\"6.1\")\n"
    "#define TF_CUDA_VERSION \"64_${short_CUDA_VER}\"\n"
    "#define TF_CUDNN_VERSION \"64_${tensorflow_CUDNN_VERSION}\"\n"
    "#define TF_CUDA_TOOLKIT_PATH \"${CUDA_TOOLKIT_ROOT_DIR}\"\n"
    "#endif  // CUDA_CUDA_CONFIG_H_\n"
  )

 此处,添加了计算力为6.1的选项配置,不过考虑到我显卡和系统的渣属性,不敢把计算力提太高就没有加。

Cmake


在../tensorflow/contrib/cmake下新建一个build文件夹,打开cmake-gui

Where is the source code选择:../tensorflow/contrib/cmake

Where to build the binaries选择:../tensorflow/contrib/cmake/build

点击Configure,

选择Visual Studio的版本,点击Finish。

按照自己的需求:

选择编译版本:

修改INSTALL路径(编译后的相关文件会保存于此);

选择SWIG_EXECUTABLE路径;

勾选tensorflow_ENABLE_GPU(GPU版本tensorflow选);

勾选tensorflow_BUILD_SHARED_LIB,取消勾选tensorflow_ENABLE_GRPC_SUPPORT。

注意:在我这第二次点击configure后SWIG_EXECUTABLE就消失了,没关系,查看cmaketxt发现路径已经上传了。

点击Generate,成功不报错即可。

编译tensorflow


打开tensorflow.sln(路径在build/Release或者Debug)

按照https://blog.youkuaiyun.com/heiheiya/article/details/89242567修改几个工程的配置属性。

注意:我第一次修改完后依旧报错,查询后发现我的该文件不在路径中,文件全局搜索发现在Python某个路径下,拷贝放入路径..\tensorflow\contrib\cmake\build\Release中再生成就没问题了。

还有个小错误,如果是手动下载的tensorflow源代码,记得在根路径上git init一下,否则git会找不到路径

选择项目ALL_BUILD生成。

全部生成成功之后,选择生成INSTALL项目,

会把相应的bin文件,头文件和库文件拷贝到cmake配置时设置的CMAKE_INSTALL_PREFIX路径下。

至此,gpu版本的tensorflow dll和lib编译过程结束。

测试


测试一下是否正确编译了,在bin文件夹下有一个tf_tutorials_example_trainer.exe,在cmd中运行它,如果输出类似如下内容,则证明编译是ok的。

在没有对INSTALL项目单独生成的时候我参考https://www.cnblogs.com/steven_oyj/p/8259205.html进行了tensorflow.dll的测试,

相关过程:

最后测试结果:

下一步

写代码测试模型的效果,单张测试和batch测试都试试。

可能会参考:tensorflow c++ API预测多张图片batch inference

windows下编译 tensorflow1.10.0 源码 用其c++接口调用训练好的模型 

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值