Tensorflow C++ r1.13 build error: 'TopK' is not a member of 'tensorflow::ops'

Tensorflow C++ r1.13 build error: 'TopK' is not a member of 'tensorflow::ops'

这是我第一次尝试构建 C++ Tensorflow 项目,弄清楚如何构建 TF 库已经是太多工作了,所以我使用了 github tensorflow_cc 项目,它提供了一个docker 带有 TF C++ 的图像 api 已经为 Ubuntu 18.04.

构建

这似乎是一个不错的开始,但编译失败:

error: 'TopK' is not a member of 'tensorflow::ops'

一行代码:

tensorflow::ops::TopK(root.WithOpName(output_name), outputs[0], how_many_labels);

但是,根据 TF api doc TopK 显然是在 tensorflow::ops 命名空间中。现在,在你说之前,将此作为问题报告给 tensorflow_cc 项目,请注意文档说到

#include <nn_ops.h>

除了 nn_ops.h 根本不存在于 tensorflow 存储库中! (根据 github search 和 "find . -name nn_ops.h" in clones。)确实存在的是 "tensorflow/core/ops/nn_ops.cc".

我知道这是一个入门问题,一定有一些简单的事情我遗漏了,但是很难理解 API 文档和 repo 之间的这种冲突。我尝试构建的示例代码之前已构建 & 运行,但我无法获得任何支持。有人最近用 TopK 构建了 TF C++ 项目吗?对开始执行 TF C++ 的最佳方式有何建议?

tensorflow_cc 项目提供静态绑定构建环境和共享库或动态绑定环境(静态或共享使用已构建的 Tensorflow 库)。我试图用静态版本 floopcz/tensorflow_cc:ubuntu-static docker 图像构建项目。使用共享库镜像构建没有问题 floopcz/tensorflow_cc:ubuntu-shared.

@jdehesa 我相信所需的 headers 是按照您的建议生成的。参见解释 here. However the Tensorflow API doc 似乎仍然存在矛盾,因为没有必要包含 nn_ops.h。