首页 > 解决方案 > 如何使用 Bazel 在 Windows 上使用 C++ API 库进行编程?

问题描述

我想做的事

首先,我的目标是使用 Tensorflow C++ API 作为 Windows 上的库,这是我项目的一部分,而不是在 Tensorflow 中构建我的项目。

背景

我通过使用 CMake 构建 Tensorflow 实现了这一点。但是,从 Tensorflow 1.10 开始,不推荐使用 CMake 构建,而是建议使用 Bazel。但是使用 C++ API 的官方方法是使用Bazel 在 Tensorflow 中构建项目。因此,这种方式对我不利。

我做了什么

为了使用更新版本的 Tensorflow,我一直在尝试使用 Bazel 作为独立库来构建 Tensorflow。

一些维护者表示可以在官方教程//tensorflow/tools/pip_package:build_pip_package中替换为。但实际上我遇到了一些问题并通过阅读本教程解决了它们。现在我已经成功构建了.//tensorflow:libtensorflow_cc.solibtensorflow_cc.so

问题是什么

但是,我不知道接下来应该做什么来使用构建的结果。这正是我的问题所在。当然没有文档。我只发现了一些不完整的想法,我将展示所有这些想法,试图为您提供更多信息:

一定有人像我一样为类似的问题而苦苦挣扎。我希望这个问题可以建立一个解决问题的方法库。

标签: c++tensorflowdllbazel

解决方案


问这个问题已经 2 年多了,而且消息并不好:似乎没有足够的 Windows 技能人员能够提供支持,使用熟悉的标头 + 库模型将 Tensorflow 集成到 Windows 应用程序中。并且 TensorFlow 每周都在进步,这意味着 Windows 支持进一步落后。

在我的评估中,由于文档不足,目前在 Windows 上进行构建的道路受到阻碍。正如 OP 所断言的那样,“当然没有文档”并不是那么多,而是稀疏的文档分布在几十个单独的帖子中,每个帖子都随着 Tensorflow 沿着 Windows C++ 以外的路径的持续发展而迅速发展。

我最初对类似问题给出了这个答案,但昨天用以下建议更新了它:

  • Windows 是 Microsoft 产品,因此请关注 Microsoft 在做什么
  • 您可以通过至少 3 种方式在 C++ 中的 Windows 上实现您的 (ONNX) 模型:

我们没有最新或最好的硬件(例如,我们有 Intel 显卡),但已经能够获得基于 Onnx 运行时的解决方案,该解决方案为我们在大约 20 毫秒内对 224 x 224 RGB 图像进行分类。我们发现 Windows ML 路径更难以处理遗留代码,而且运行速度也更慢。


推荐阅读