要能够运行支持本机TensorFlow
操作的TensorFlow
精简模型,必须重新编译libtensorflow-lite
静态库。可以在HERE中找到在C++
中执行此操作的说明。
声明
使用bazel管道构建TensorFlow Lite库时, 可以包含其他TensorFlow ops库并将其启用为 如下:
启用必要的整体构建,方法是添加 --config =单片构建标志。
将TensorFlow ops委托库依赖项添加到构建依赖项中: tensorflow / lite / delegates / flex:delegate。
请注意必要 TfLiteDelegate创建时会自动安装 只要将委托链接到 客户端库。不必显式安装委托 其他委托类型通常需要的实例。
问题在于,构建静态库的标准方法是通过shell脚本/ make(请参阅文档HERE;这是针对arm64
的,但是有些脚本可用于x86_64
)。我没有明显的方法可以通过tensorflow-lite
来构建bazel
并在那里修改构建命令。
在尝试为arm64/x86_64
体系结构建立模型时,有人成功建立了这个模型并且可以共享吗?我是bazel
的新手,找不到详细的演练。
编辑
在对@jdehesa建议的步骤进行故障排除之后,我能够构建libtensorflowlite.so
,但遇到另一个问题。我的应用程序构建成功,但是执行该应用程序后,找不到.so
文件:
./myapp: error while loading shared libraries: libtensorflowlite.so: cannot open shared object file: No such file or directory
由于其他.so
文件位于同一目录中,因此路径正确。此外,如果使用静态库,则该应用程序也可以运行。
为重现该问题,我使用了tensorflow/tensorflow:devel-gpu-py3
docker构建映像(找到了here的指令)。
我使用默认设置执行了配置脚本,并使用了命令
bazel build --config=monolithic --define=with_select_tf_ops=true -c opt //tensorflow/lite:libtensorflowlite.so
创建库。我已按构建库上传到我的个人存储库(https://github.com/DocDriven/debug-lite)。
答案 0 :(得分:1)
看来libtensorflow-lite.a
是用Makefiles构建的,位于Bazel之外,所以我不确定您是否可以对该库真正使用该选项。但是,我认为您可能需要一个实验性的共享库目标libtensorflowlite.so
。您可以给实验性选项with_select_tf_ops
包括TensorFlow内核。因此,我认为构建命令将类似于:
bazel build --config=monolithic --define=with_select_tf_ops=true -c opt //tensorflow/lite:libtensorflowlite.so