c++ - 包括简单 C++ TensorFlow Lite 测试程序的特征在内的问题
问题描述
${TENSORFLOW_ROOT}/tensorflow/lite/tools/make/build_rpi_lib.sh
我使用脚本按照此官方页面建议的步骤(本机编译,下载必要的库)编译了适用于 TensorFlow Lite(r1.97)的 C++ API库,其中${TENSORFLOW_ROOT}
是我克隆存储库的根文件夹。
我正在尝试编译这个简单的test.cpp
程序:
#include <memory>
#include "tensorflow/lite/interpreter.h"
int main(void)
{
std::unique_ptr<tflite::Interpreter> interpreter(new tflite::Interpreter);
}
使用命令:
gcc-6 test.cpp -I${TENSORFLOW_ROOT} -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/eigen -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/protobuf/src -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads -L${TENSORFLOW_ROOT}/tensorflow/lite/tools/make/gen/rpi_armv7l/lib -lstdc++ -ldl -ltensorflow-lite
包含列表是在集成 TensorFlow 库页面中建议的(特别是来自 iOS 部分)。编译失败并出现以下与包含 Eigen 相关的错误:
${TENSORFLOW_ROOT}/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:42: fatal error: unsupported/Eigen/CXX11/Tensor: No such file or directory
#include "unsupported/Eigen/CXX11/Tensor"
我发现了几个链接,其中讨论了一个明显相似的问题(例如这个),但建议的解决方案涉及使用对 TensorFlow python 包的引用,这在我的情况下是不可能的(而且感觉很不完整 - 我不是考虑在这个项目中使用 python)。
我还尝试使用不同的包含路径到 Eigen(例如${TENSORFLOW_ROOT}/third_party/eigen3
):
gcc-6 test.cpp -I${TENSORFLOW_ROOT} -I${TENSORFLOW_ROOT}/third_party/eigen3 -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/protobuf/src -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads -L${TENSORFLOW_ROOT}/tensorflow/lite/tools/make/gen/rpi_armv7l/lib -lstdc++ -ldl -ltensorflow-lite
这也会导致这种与 Eigen 相关的编译错误:
...
${TENSORFLOW_ROOT}/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:42: error: #include nested too deeply
#include "unsupported/Eigen/CXX11/Tensor"
...
${TENSORFLOW_ROOT}/third_party/eigen3/Eigen/Core:1:22: error: #include nested too deeply
#include "Eigen/Core"
...
有关如何解决此问题的任何建议?什么是正确的包含路径集?
解决方案
原来我包含了错误的文件夹。而不是${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/eigen
or ${TENSORFLOW_ROOT}/third_party/eigen3
,正确的是${TFLITE_ROOT}/tensorflow/lite/tools/make/downloads/eigen
。
我仍然对eigen
存储库中的文件夹数量感到困惑:
find . -name "eigen*" -type d
./third_party/eigen3
./tensorflow/lite/tools/make/downloads/eigen
推荐阅读
- html - 为什么我的图像没有显示在我的 Git Hub 页面中?
- javascript - 如何在 php 和 JS 之间进行通信?
- mysql - MariaDB Connector/J 2.6.x 是否使用 Aurora 创建与主从服务器的连接?
- java - RestTemplate 中的交换方法的目的是什么?
- android - 另一个 Wifi 网络上的 Android 无线/远程调试应用程序
- python - 为什么我的模型在第二个 epoch 过拟合?
- java - 如何按 2 个字段对对象进行排序 Java
- python-3.x - python3.8.4虚拟环境问题找不到镜像怎么处理
- java - 我无法调用子类中定义的方法
- field - 如何在odoo中获取特定领域的学生姓名?