“unsupported/Eigen/CXX11/Tensor: No such file or directory” while working with TensorFlow

后端 未结 2 1847
慢半拍i
慢半拍i 2021-02-10 00:41

I\'m trying to use tensorflow as a external library in my C++ application (mainly following this tutorial). What I done so far:

  1. I have cloned the tensorflow repori
2条回答
  •  半阙折子戏
    2021-02-10 01:23

    I (and many others) agonized over the same problem. It probably can be solved using bazel but I don't know that tool well enough and now I solve this using make. The source of confusion is that a file named Tensor is included and it itself includes a file named Tensor, which has caused some people to wrongly conclude Tensor is including itself.

    If you built and installed the python .whl file there will be a tensorflow directory in dist-packages and an include directory below that, e.g. on my system:

    /usr/local/lib/python2.7/dist-packages/tensorflow/include
    

    From the include directory

    find . -type f -name 'Tensor' -print
    ./third_party/eigen3/unsupported/Eigen/CXX11/Tensor
    ./external/eigen_archive/unsupported/Eigen/CXX11/Tensor
    

    The first one has

    #include "unsupported/Eigen/CXX11/Tensor"
    

    and the file that should satisfy this is the second one.

    So to compile session.cc that includes session.h, the following will work

    INC_TENS1=/usr/local/lib/python2.7/dist-packages/tensorflow/include/
    INC_TENS2=${INC_TENS1}external/eigen_archive/
    gcc -c -std=c++11 -I $INC_TENS1 -I $INC_TENS2 session.cc
    

    I've seen claims that you must build apps from the tensorflow tree and you must use bazel. However, I believe all the header files you need are in dist-packages/tensorflow/include and at least for starters you can construct makefile or cmake projects.

提交回复
热议问题