如何将TensorFlow Micro模型数据直接存入Arduino MBED SDRAM
最简实现方案
方案1:Flash存储模型+批量拷贝(最常用场景)
首先明确:用const修饰的全局数组会被编译器分配到Flash存储空间,不会占用你说的1MB SRAM配额,所以完全可以直接用标准库memcpy批量拷贝到SDRAM,一行代码搞定,完全不需要逐字节赋值。
你只需要在代码中引入string.h头文件,把逐字节赋值部分替换即可:
// 加在代码开头引入memcpy依赖 #include <string.h> // 拷贝整个模型数组到SDRAM对齐后的地址,仅需一行 memcpy(sdram_tflite, model_tflite, model_tflite_len);
拷贝完成后直接把sdram_tflite传给TensorFlow Micro的接口即可正常调用:
model = tflite::GetModel(sdram_tflite);
方案2:无需Flash存储模型的场景(动态加载场景)
如果你不需要把模型提前固化到Flash,比如要从SD卡、网络动态加载模型到SDRAM,直接把sdram_tflite指针传给外部存储的读数据接口即可,不需要额外开辟中间缓存。
常见误区说明
你之前写的sdram_tflite = model_tflite;只是把sdram_tflite指针指向了Flash里的模型数组地址,根本没有把数据写入SDRAM,后续操作实际还是在访问Flash,不属于你需要的SDRAM存储逻辑。
内容的提问来源于stack exchange,提问作者Rocksetta
相关产品推荐
相关产品推荐

