是否可以在Windows上使用TensorFlow C ++ API?

时间:2016-12-09 23:15:31

标签: machine-learning build tensorflow

我有兴趣将TensorFlow整合到Windows 10上的Visual Studio中构建的C ++服务器应用程序中,我需要知道这是否可行。 谷歌最近宣布Windows对TensorFlow的支持:https://developers.googleblog.com/2016/11/tensorflow-0-12-adds-support-for-windows.html 但据我所知,这只是一个更常用的Python包的pip安装,要使用C ++ API,你需要自己从源代码构建repo:How to build and use Google TensorFlow C++ api 我尝试使用bazel自己构建项目,但遇到了试图配置构建的问题。

有没有办法让TensorFlow C ++在本机Windows中运行(不使用Docker或新的Windows 10 Linux子系统,因为我已经看过其他人发布的内容)?

谢谢,

伊恩

5 个答案:

答案 0 :(得分:12)

在Windows上使用TensorFlow的C ++ API肯定是可能的,但它目前还不是 easy 。现在,在Windows上构建C ++ API的最简单方法是使用CMake进行构建,并调整CMake rules for the tf_tutorials_example_trainer project(请参阅源代码here)。使用CMake构建将为您提供一个Visual Studio项目,您可以在其中实现C ++ TensorFlow程序。

请注意,tf_tutorials_example_trainer项目构建一个控制台应用程序,将所有TensorFlow运行时静态链接到您的程序中。目前我们还没有编写创建可重用TensorFlow DLL的必要规则,尽管这在技术上是可行的:例如,Python扩展是包含运行时的DLL,但不导出必要的符号以使用TensorFlow的C或C ++ API直接。

答案 1 :(得分:6)

Joe Antognini和类似TensorFlow ReadMe at GitHub 的详细指南解释了通过CMake构建TensorFlow源代码。您还需要在您的计算机上安装SWIG,这允许使用Python脚本语言连接C / C ++源代码。我确实使用Visual CMAKE(cm​​ake-gui)和下面显示的屏幕截图。

cmake-gui setup (with SWIG) for building TensorFlow C++ source with Visual Studio

在CMake配置中,我使用了Visual Studio 15 2017编译器。成功完成此阶段后,您可以单击“生成”按钮继续实际构建过程。

但是,在Visual Studio 2015上,当我尝试通过" ALL_BUILD"项目,设置给了我"无法找到v141的构建工具"错误。即使我试图重新定位我的解决方案,这也不会消失。最后,使用Visual Studio 2017成功构建了解决方案。您还需要在成功配置之前在CMake中手动设置SWIG_EXECUTABLE路径。

如Antognini链接所示,对于我来说,在16GB RAM,Core i7机器上构建大约需要半个小时。完成后,您可能希望通过尝试运行tf_tutorials_example_trainer.exe文件来验证您的构建。

希望这有帮助!

答案 2 :(得分:1)

我必须通过安装程序(“单个组件”选项卡)添加“ VC ++ 2017版本15.4 v14.11工具集”来使用Visual Studio 2017的降级版本(从15.7.5到15.4)。

对我有用的cmake命令是:

cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release ^
-T "v141,version=14.11" ^
-DSWIG_EXECUTABLE="C:/Program Files/swigwin-3.0.12/swig.exe" ^
-DPYTHON_EXECUTABLE="C:/Program Files/Python/python.exe" ^
-DPYTHON_LIBRARIES="C:/Program Files/Python/libs/python27.lib" ^
-Dtensorflow_ENABLE_GPU=ON ^
-DCUDNN_HOME="C:/Program Files/cudnn-9.2-windows10-x64-v7.1/cuda"  ^
-DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0"

构建后,在Visual Studio中打开tensorflow.sln并构建ALL_BUILD。

如果要启用GPU计算,请检查图形卡here(计算能力> 3.5)。请记住安装所有软件包(Cuda Toolkit 9.0,cuDNN,Python 3.7,SWIG,Git,CMake ...),并在开始时将路径添加到环境变量。

答案 3 :(得分:1)

有关我们在Windows上构建TensorFlow C ++ API的最新工作,请查看this github page。该功能适用​​于Windows 10,目前不支持CUDA(仅CPU)。

PS: 仅bazel构建方法有效,因为不再支持CMake且不再对其进行维护,从而导致CMake配置错误。

答案 4 :(得分:0)

我制作了一个自述文件,详细介绍了如何在Windows上为C ++ API构建Tensorflow dll和.lib文件,并使用Bazel从源代码中构建了GPU支持。 Tensorflow版本1.14

本教程是循序渐进的,并且从头开始,因此您可能需要向下滚动过去的步骤,例如检查硬件,安装Bazel等。 这是网址:https://github.com/sitting-duck/stuff/tree/master/ai/tensorflow/build_tensorflow_1.14_source_for_Windows

可能您想一直向下滚动到这一部分: https://github.com/sitting-duck/stuff/tree/master/ai/tensorflow/build_tensorflow_1.14_source_for_Windows#step-7-build-the-dll

它显示了如何传递命令以创建.lib和.dll。

然后要测试.lib,应将其链接到c ++项目中,

然后它将向您展示如何使用TF_EXPORT宏识别和修复丢失的符号

我正在积极改进本教程,因此,如果遇到问题,请随时在此答案上留下评论。