我想知道为了使用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
答案 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