2017-03-20 84 views
2

我想知道爲了使用Tensorflow的C++ API所需的所有頭文件。就像C API的情況一樣,只有一個頭c_api.h具有所有的函數等聲明,C++ API中是否有這種單頭?我試着搜索這個,但不明白什麼是必需的,什麼不是。使用頭文件列表使用Tensorflow C++ API使用libtensorflow_cc.so

在tensorflow/cc,tensorflow/core和tensorflow/c中有大量的頭文件用於構建libtensorflow_cc.so,我們也將這些大部分運送到tensorflow的分佈中(通過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

你能選擇你需要的還是包含所有標題? –

+0

問題是如何找出需要使用C++ API的所有頭文件。我的方法是我正在瀏覽API文檔,找出哪個頭文件定義了特定的API /類/類型,然後是否包含該頭文件。在做這件事情時,我發現像math_ops.h,array_ops.h等一些頭文件是作爲某個目標的一部分生成的,並且被放入bazel-genfiles目錄。任何人都可以讓我知道如何通過修改任何BUILD文件或其他方式將bazel-genfiles目錄的內容包含到分發中? –

+0

我發現,甚至一些外部依賴的內容像jemalloc標題即。在bazel-genfiles中生成的jemalloc * .h被放入分配中。這些也是通過cc_library和genrule組合創建的。類似的事情甚至可以用於cc_ops庫,它使用像array_ops.h,maths_op.h等頭文件。但不幸的是,這些頭文件並沒有納入tensorflow的pip包中。任何人都可以請幫助我得到這個特定的案例工作?提前致謝。 –

回答

0

據我所知,目前還沒有正式分發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也需要本徵和protobuf的頭文件和庫,其是,在tensorflow_cc的情況下,使用從contrib/makefile TF回購建造。

您可能更願意直接使用tensorflow_cc,以便您不必手動操作所有這些。