Go to list of users who liked
Share on X(Twitter)
Share on Facebook
More than 5 years have passed since last update.
Tensorflowをc++のcmakeしてるプロジェクトで使いたい
tensorflowといえばpythonといったイメージを勝手に持ち続けていたが、c++も対応していることを知ったので使ってみることにした。
さっそく環境づくり
とりあえず、tensorflowのビルドに必要なあたりを揃えていこう。
tensorflowはbazelを使用してのビルドを推奨している。
よって、bazelのインストールから。
bazelインストール
Arch linuxの人は、
$yaourt-S bazel他の方は、公式を参考に。
GPU使いたい人は
$sudopacman-S cuda$sudopacman-S cudnntensorflow
ソースをgitから取ってくる
$hub clone tensorflow/tensorflow$cdtensorflowGPUを使うかなどの設定を行う
$./configure指示に従って、自分の使いたいように指定しましょう。
自分はGPUのサポートだけyで、他はnでしたね。
path等はご自分の環境に合わせましょう。
この後は、exampleを実行したいだけならbazelで指定してbuildするだけで良い。
今回は、他のプロジェクトで使用したいため共有ライブラリとヘッダたちを取ってくる。
共有ライブラリの生成
BUILDを読むと、それらしきものが用意されてるので生成する。
GPUなし
$bazel build-c opt--copt=-march=native tensorflow:libtensorflow.soGPUあり
$bazel build-c opt--config=cuda--copt=-march=native tensorflow:libtensorflow.so成功すれば、libtensorflow_cc.soがbazel-bin/tensorflow/にできているはず。
これを/usr/lib/等にコピー
$sudo cpbazel-bin/tensorflow/libtensorflow_cc.so /usr/lib/tensorflow.soヘッダファイルの抽出
Gistにスクリプトをあげてる方がいたのでそれを使用した。HEADER_DIRを/usr/include/tensorflowに変えて実行。
$sudosh copy_tensorflow_headers.shこれで、ライブラリへのリンクと、ヘッダファイルのところへインクルードパスを設定すれば動作するが、cmakeを書きやすくする。
FindTensorflow.cmakeの作成(任意)
このままだとcmakeでfind_packageしても見つからない。
そこで、FindTensorflow.cmakeを作っておこうというだけ。
これを他のFindFoo.cmakeがある場所におく。
例:cp FindTensorflow.cmake /usr/share/cmake-3.7/Modules/
あとは、CMakeLists.txtのほうで
find_package(Tensorflow REQUIRED)include_directories(${Tensorflow_INCLUDE_DIRS})target_link_libraries(${PROJECT_NAME}${Tensorflow_LIBRARIES})のような感じで書いて終わり!
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme