【发布时间】:2019-05-17 11:25:38
【问题描述】:
我想做什么
首先,我的目标是在 Windows 上使用 Tensorflow C++ API 作为库,这是我项目的一部分,而不是在 Tensorflow 中构建我的项目。
背景
我通过使用 CMake 构建 Tensorflow 实现了这一点。但是,从 Tensorflow 1.10 开始,不推荐使用 CMake 构建,而是建议使用 Bazel。但是the official way to use C++ API 正在使用 Bazel 在 Tensorflow 中构建项目。因此,这种方式对我不利。
我做了什么
为了使用更新版本的 Tensorflow,我一直在尝试使用 Bazel 作为独立库来构建 Tensorflow。
一些维护者表示可以通过在the official tutorial 中将//tensorflow/tools/pip_package:build_pip_package 替换为//tensorflow:libtensorflow_cc.so。但其实我遇到了一些问题,通过阅读this tutorial解决了。现在我已经成功构建了libtensorflow_cc.so。
问题是什么
但是,我不知道接下来应该做什么来使用构建的结果。 这正是我的问题。当然没有文档。我只发现了一些不完整的想法,我将展示所有这些想法,试图为您提供更多信息:
- 已经有人成功链接建
*.so和having solved the problems he has encountered。 - 有一个repo 在 Ubuntu 和 Arch Linux 上做我想做的事情。我已经联系了维护者,他告诉我他们现在没有支持 Windows 的计划。
- 相关问题:Building a .dll on Windows。
- 相关问题:Packaged TensorFlow C++ library for bazel-independent use。
- 相关问题:Feature request: provide a means to configure, build, and install that includes cc。
- 相关问题:How to build and use Google TensorFlow C++ api。这个问题的范围有点大,没有'using bazel'和'on Windows'限制。
- 相关的拉取请求:C++ API
一定有人像我一样为类似的问题苦苦挣扎。我希望这个问题可以建立一个解决问题的方法库。
【问题讨论】:
-
@jdehesa 感谢您的评论。但我已经指出,这个 repo 的维护者不打算支持 Windows。
-
哦,你是对的,我没有意识到。原则上,您应该能够在构建的对象中找到 dll 和 lib 文件,但可能很难收集所有必要的标头。我的解决方法是用几个头文件为库制作一个简化的包装器,所以我只有这些头文件和我自己的 dll(不幸的是无法开源)。
-
现在我知道如何修补 C++ API,所以我创建了a script to build Tensorflow C++ API using Bazel on Windows。它使在 Windows 上构建 Tensorflow 变得更加容易(它还支持构建 pip 包或 C API)。但我相信会有更好的解决方案,我希望有同样问题的每个人都可以加入我的行列!
标签: c++ tensorflow dll bazel