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

后端 未结 2 1807
慢半拍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.

    0 讨论(0)
  • 2021-02-10 01:35

    the problem was actually in the relative path of the header file taken in the Tensor file.

    installed path for Tensor is /usr/include/eigen3/unsupported/Eigen/CXX11/Tensor

    but mentioned in the Tensor file is "unsupported/Eigen/CXX11/Tensor"

    So there should be an entry upto /usr/include/eigen3/ in the project path to run this correctly so that it can be used.

    0 讨论(0)
提交回复
热议问题