使用libtensorflow_cc.so

时间:2017-03-20 08:09:48

标签: tensorflow

我想知道为了使用Tensorflow的C ++ API需要什么头文件。就像C API一样,只有一个标题c_api.h具有声明的所有函数等,C ++ API是否有这样的单个标题?我试着搜索这个,但无法理解什么是必需的,什么不是。

在tensorflow / cc,tensorflow / core和tensorflow / c中有一个庞大的标题列表,用于构建libtensorflow_cc.so,我们还在tensorflow的分布中发布了大部分标题(By TF的分布我的意思是TF,这是使用bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package)构建。为了使用C ++ API,标题列表是否足够?或者我们是否需要在tensorflow / BUILD中构建任何其他目标?

我也经历了https://www.tensorflow.org/api_docs/cc/,但无法确切地列出所需标题的确切列表。

在其中一篇相关文章中,我发现tensorflow / bazel-genfiles包含所需的标题。请确认一下。

提前致谢, Nishidha

3 个答案:

答案 0 :(得分:2)

对于使用bazel为Windows构建tensorflow 2.0及更高版本的人,请使用

bazel build --config=opt tensorflow:install_headers

这将生成一个带有cc标头的包含文件夹。

答案 1 :(得分:1)

据我所知,没有正式的可分发C ++ API包。但是,tensorflow_cc项目可以为您构建和安装TF C ++ API,以及可以链接的方便的CMake目标。

尽管可能安装的文件多于必要的文件,但您可以在CMakeLists.txt:130中找到已安装标头的列表:

# install *all* files with .h extension
/tensorflow/**/*.h
# install all dependencies downloaded by contrib/makefile
/tensorflow/tensorflow/contrib/makefile/downloads/
# install all files from third_party folder (e.g., Eigen/Tensor)
/tensorflow/third_party/

您可以在CMakeLists.txt:58中找到编译器应包含的目录列表:

/tensorflow
/tensorflow/bazel-genfiles
/tensorflow/tensorflow/contrib/makefile/downloads
/tensorflow/tensorflow/contrib/makefile/downloads/eigen
/tensorflow/tensorflow/contrib/makefile/downloads/gemmlowp
/tensorflow/tensorflow/contrib/makefile/gen/protobuf-host/include

请注意,C ++ API还需要eigen和protobuf头文件和库,如果是tensorflow_cc,则使用来自TF repo的contrib/makefile构建。

您可能更喜欢直接使用tensorflow_cc,这样您就不必为此手动打扰。

答案 2 :(得分:0)

构建 libtensorflow_cc.so 的另一种方法是使用 tensorflow/tensorflow:devel-gpu docker 镜像,然后使用命令构建它:

bazel build --config=opt //tensorflow:libtensorflow_cc.so
相关问题