【问题标题】:How to deploy a Tensorflow trained model for inference for a Windows standalone application如何为 Windows 独立应用程序部署 Tensorflow 训练模型进行推理
【发布时间】:2018-01-18 11:36:15
【问题描述】:

我想在 Windows 独立桌面应用程序中使用使用 Tensorflow 训练的模型。我只需要执行预测,我可以使用 Tensorflow Python API 训练模型。推荐的方法是什么?

我知道有一个 C++ API,但是编译它真的很难,尤其是在 Windows 上。我可以找到任何适用于 Windows 的预构建 C++ Tensorflow 二进制文件吗?

有没有一种简单的方法来分发带有 Tensorflow 的 Python 作为 Windows 安装程序的先决条件?

我可以在其他技术中导入 Tensorflow 模型并将其用于推理吗? OpenCv DNN 模块有一个从 Tensorflow 导入数据的功能,但我知道它有很多限制,我无法通过 OpenCv 导入和使用模型。

感谢您的帮助!

【问题讨论】:

  • 我这样做了,实际上我编译了我自己的 DLL,它包装了 TensorFlow 的所有代码 (see here)。现在代码有dllexport/dllimport声明,所以可以直接从源代码生成一个DLL(取决于idk有多少头文件,但无论如何),不确定是否使用CMake、Bazel或任何一个,但团队不提供构建。另一种方法是在您的应用中嵌入/调用 Python(例如tensorflow-ue4)。

标签: c++ tensorflow deployment desktop


【解决方案1】:

我和你遇到了同样的问题。 您至少应该尝试编译它(尝试 CMake,它可能更容易)

如果您仍然遇到问题:

【讨论】:

  • 我不明白...第三个链接上的项目在 CMakeLists.txt 中执行 find_package(tensorflow REQUIRED),但是如果 cmake 不提供 FindTensorflow 模块并且没有自定义,那么它应该如何工作一个也在回购中。
【解决方案2】:

我问了a similar question 并最终找到了自己的答案。最后,我发现Tensorflow instructions 实际上还不错(是我读的不好!)。我没有尝试在 Windows 上使用 Bazel,但使用 CMake 构建 Tensorflow 最终可以正常工作。

主要问题是编译器堆空间问题。如果您使用的是 MS Visual Studio 32 位编译器(默认),这似乎总是发生在某个随机位置。关键是确保您运行vcvarsall.batvcvars64.bat 或调用64 位编译器所需的任何东西(在任务管理器中,它应该显示为cl.exe,而不是cl.exe *32)我发现它很难(阅读:不可能)让 Visual Studio 使用 64 位编译器,但使用 MSBuild 工具在命令行上编译工作正常。

一旦您可以构建示例程序,您就有了一个链接到静态 tensorflow 库以执行其工作的应用程序示例。您可以根据需要将自己的应用程序链接到此库。

【讨论】:

    猜你喜欢
    • 2020-07-10
    • 2019-11-12
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多