使用 C 代码构建 Tensorflow lite micro
Building Tensorflow lite micro with C code
我想在我的tensorflow lite项目中使用一些C代码,但是tensorflow lite存储库中提供的所有示例项目都是C++示例。
特别是,我正在使用 AmbiqSDK 存储库,它提供了 apollo3 平台的示例,所有示例都是 C 语言,我现在想将其与其中一个 tensorflow lite 示例合并。
相关的生成文件部分在这里:
MICRO_SPEECH_SRCS :=
tensorflow/lite/experimental/micro/examples/micro_speech/main.cc
...
tensorflow/lite/experimental/micro/examples/micro_speech/command_responder.cc
new_c_file_here.c ---->> HERE I LINK MY ADDITIONAL C CODE
$(MICRO_FEATURES_GENERATOR_SRCS)
...
# Builds a standalone speech command recognizer binary.
$(eval $(call microlite_test,micro_speech,
$(MICRO_SPEECH_SRCS),$(MICRO_SPEECH_HDRS)))
...
# For normal manually-created TensorFlow C++ source files.
$(OBJDIR)%.o: %.cc third_party_downloads
@mkdir -p $(dir $@)
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
...
# For normal manually-created TensorFlow C source files.
$(OBJDIR)%.o: %.c third_party_downloads
@mkdir -p $(dir $@)
$(CC) $(CCFLAGS) $(INCLUDES) -c $< -o $@
在我的 new_c_file_here.c 文件中,我将所有内容都包装在 extern "C"{} 中。
但是我仍然收到链接器错误,在编译 C++ 张量流精简版示例项目或 C apollo3 示例项目时,我没有得到这些错误与它们各自的编译器:
....
tensorflow/lite/experimental/micro/tools/make/gen/sparkfun_edge_cortex-m4/obj//Users/macuser/Desktop/tf115/tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/third_party/exactle/sw/hci/ambiq/apollo3/hci_drv_apollo3.o: 在函数
HciDrvHandler': /Users/macuser/Desktop/tf115/tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/third_party/exactle/sw/hci/ambiq/apollo3/hci_drv_apollo3.c:1099: undefined reference to
DmDevReset' tensorflow/lite/experimental/micro/tools/make/gen/sparkfun_edge_cortex-m4/obj//Users/macuser/Desktop/tf115/tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/third_party/exactle/sw/profiles/hrps/hrps_main.o: 在函数hrpsFindNextToSend': /Users/macuser/Desktop/tf115/tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/third_party/exactle/sw/profiles/hrps/hrps_main.c:125: undefined reference to
AttsCccEnabled' tensorflow/lite/experimental/micro/tools/make/gen/sparkfun_edge_cortex-m4/obj//Users/macuser/Desktop/tf115/tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/third_party/exactle/sw/profiles/hrps/hrps_main.o: In functionhrpsSendHrmNtf': /Users/macuser/Desktop/tf115/tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/third_party/exactle/sw/profiles/hrps/hrps_main.c:204: undefined reference to
AttsHandleValueNtf'....
如何正确编译 tensorflow lite C++ 项目中的 C 代码?
我正在使用Tensorflow 1.15.0。
我也在使用TFlite使用AmbiqSDK制作项目,我将向您解释我是如何制作界面的: 但首先你要知道TF是用C++写的,最好这样编译。
例如在 PDM .h/.c 中
PDM_mein.c -> write your code exactly in C
void pdm_data_get(void)
{
am_hal_pdm_transfer_t sTransfer;
sTransfer.ui32TargetAddr = (uint32_t ) g_ui32PDMDataBuffer;
sTransfer.ui32TotalCount = PDM_FFT_BYTES;
am_hal_pdm_enable(PDMHandle);
am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP);
am_hal_pdm_fifo_flush(PDMHandle);
am_hal_pdm_dma_start(PDMHandle, &sTransfer);
}
////////////////////////////////////
PDM_mein.h
#ifdef __cplusplus
extern "C"
{
#endif
void pdm_data_get(void);
#ifdef __cplusplus
}
#endif
这样写的时候,可以在C++程序中使用C函数 并且不要忘记在Makefile.inc中添加.c和.h文件
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- cmsis_compiler.h:在为 Arduino Due 编译 Arduino Tensorflow lite 库
- 将 tensorflow lite 与 Qt 一起使用
- 使用 适用于 Android 和 iOS 的 tf-lite C++ API
- 使用 C 代码构建 Tensorflow lite micro
- C++ Qt SQL lite 数据库连接问题
- 不理解将 .pb 转换为 ff-lite 时的平均值和标准开发值
- C++是否有相当于tf.lite.Interpreter.get_input_details的等价物
- 我如何只构建 TensorFlow lite,而不是从源代码构建所有 TensorFlow
- 在Android Studio项目中使用tensorflow lite C++API的问题
- 为什么GSL-Lite试图包括<array>?
- 在Raspbian lite上运行Qt Quick(EGLFS)
- Tensorflow Lite ARM64错误:无法转换‘const int8x8_t
- 从C 调用Tensorflow Lite .tflite CNN模型时,非法指令
- 如何在Tensorflow Lite中添加自定义运算符
- 使用config.json文件与BBC Micro:BIT MED在线编译器
- C Chrono Micro-/nanseconds无法正常工作
- 如何在代码lite中将dll位置更改为子目录
- 使用tv_usec或tv_nsec的[milli|micro|nano]秒粒度