Tensorflow Lite arm64错误:无法转换'const int8x8_t?

时间:2019-05-09 08:34:36

标签: c++ c tensorflow artificial-intelligence tensorflow-lite

我尝试在Ubuntu 16.04上构建AARCH64。我遵循了本指南(本机编译)https://tensorflow.google.cn/lite/guide/build_arm64

但是我得到了这个错误。 有什么问题? 我也想在Orange Pi 3上尝试一下示例。 在为arm64构建后如何使用libtensorflow-lite.a文件。我知道Qt ide和c&c ++。 谢谢。

db.collection.update({_id:1},
    {
        $set: {
            'someArray.$[elem].c': 3 
        }        
    },
    { arrayFilters: [{ "elem.a": 1 }], multi: true, "upsert": true }
)

3 个答案:

答案 0 :(得分:2)

尝试解决了几个小时的问题后,我想我找到了解决方案:

只需在tensorflow / lite / tools / make / Makefile文件的CXXFLAGS变量中添加“ -flax-vector-conversions”参数即可。

对我来说,它位于第58行:

CXXFLAGS := -O3 -DNDEBUG -fPIC -flax-vector-conversions

以前的错误消失了,但是现在我又遇到了另一个错误:

undefined reference to `shm_open'

之后,我在tensorflow / lite / tools / make / targets / aarch64_makefile.inc中添加了“ -lrt”

LIBS := \
-lstdc++ \
-lpthread \
-lm \
-ldl \
-lrt

并将Makefile中的 BUILD_WITH_NNAPI 更改为 false

编译过程成功了。 我将尽快测试TF库。

答案 1 :(得分:1)

在aarch64上构建Tensorflow-1.14时,我也遇到了类似的问题。我使用了此PR中建议的更改,它已解决了此问题。

解决linux_aarch64系统上的以下两个问题:

  • 向量之间的禁止转换
  • 禁止在asm中显式使用帧指针寄存器x29

def tflite_copts()的{​​{1}}中添加以下大小写

tensorflow/lite/build_def.bzl

答案 2 :(得分:0)

要为arm64构建Tensorflow Lite,我进行了修改:

  

tensorflow / lite / tools / make / targets / aarch64_makefile.inc

同时添加到CXXFLAGS和CFLAGS:

-flax-vector-conversions \
-fomit-frame-pointer \

给出:

  CXXFLAGS += \
    -march=armv8-a \
    -funsafe-math-optimizations \
    -ftree-vectorize \
    -flax-vector-conversions \
    -fomit-frame-pointer \
    -fPIC

  CFLAGS += \
    -march=armv8-a \
    -funsafe-math-optimizations \
    -ftree-vectorize \
    -flax-vector-conversions \
    -fomit-frame-pointer \
    -fPIC

对我来说,它摆脱了error: cannot converterror: x29 cannot be used in asm here的困扰。

然后我就可以构建libtensorflow-lite.a

构建示例应用程序时,教程中的命令仍然给我一个错误:undefined reference to flatbuffers::ClassicLocale::instance_,有关此问题的解决方案,请参见

https://github.com/tensorflow/tensorflow/issues/28863


作为旁注,如果您尝试使用指南中的docker容器:

https://tensorflow.google.cn/lite/guide/build_arm64

建议使用tensorflow/tensorflow:nightly-devel,根据docker hub,该图像当前是6个月大的映像(肯定不是每晚):

https://hub.docker.com/r/tensorflow/tensorflow/tags/?page=1

在同一链接中,您可以找到一个更新的devel容器,在我的情况下,我使用的是devel-py3