You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于玄铁C906哪吒Linux单板的TensorFlow Lite使用及自定义算子问题

玄铁C906平台TensorFlow Lite部署问题解决方案

一、正确使用编译好的TensorFlow Lite库

你遇到的tensorflow/lite/model.h: No such file or directory错误,原因是编译测试代码时指定的头文件路径有误。代码中#include <tensorflow/lite/model.h>要求编译器能找到tensorflow目录的父级路径,而非tensorflow/lite/。

修正后的编译命令

/home/fcqiao/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin/riscv64-unknown-linux-gnu-g++ -o out test.cpp -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -I ../../tensorflow/ ../libtensorflow-lite.a -lm -static

将-I参数的路径改为../../tensorflow/,确保编译器能定位到tensorflow/lite/model.h的完整路径。

额外注意事项

  • 确认../../tensorflow/是包含tensorflow子目录的上级目录,根据实际目录结构调整路径
  • 保持编译参数顺序:源文件在前,库文件在后,避免出现未定义符号错误
  • 若存在其他依赖缺失,可添加-pthread -ldl等参数补充链接依赖

二、在TensorFlow Lite中使用自定义算子

步骤1:实现并注册自定义算子

  1. 编写算子计算逻辑:创建.cc文件,继承tflite::OpKernel类,重写Eval方法实现算子的运算逻辑
  2. 注册算子:调用tflite::RegisterOp接口,将算子名称、版本、对应的Kernel实现注册到TFLite算子库

步骤2:适配模型文件

确保DNN模型中的自定义算子节点配置与注册的算子一致,包括算子名称、输入输出维度等。可通过tflite_convert工具结合自定义转换逻辑,生成包含自定义算子的.tflite模型文件

步骤3:编译时集成自定义算子

  • 若自定义算子为单独源码文件,直接加入编译命令:
/home/fcqiao/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin/riscv64-unknown-linux-gnu-g++ -o out test.cpp your_custom_op.cpp -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -I ../../tensorflow/ ../libtensorflow-lite.a -lm -static
  • 若自定义算子已编译为静态库,将库文件添加到链接参数中(放在libtensorflow-lite.a之后)

额外注意

  • 自定义算子编译时需使用与TFLite相同的架构参数(-march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d)
  • 若需在模型转换阶段支持自定义算子,需编写对应的TensorFlow到TFLite的转换注册代码

内容的提问来源于stack exchange,提问作者fcqiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:20:25