【发布时间】:2022-08-18 17:08:46
【问题描述】:
我创建了一个 TensorFlow Lite .tflite 模型,我计划在微控制器上使用它。但是,此文件必须转换为 C 源文件,即 TensorFlow Lite for Microcontrollers 模型。 TensorFlow 文档提供了一种简单的方法来convert to a C array with the unix command xxd。我使用的是 Windows 10,无法访问 unix 命令,也没有记录其他 Windows 方法。搜索超级用户后,我看到了xxd for Windows now exists。我下载了命令并在我的 .tflite 模型上运行它。结果与hello world example 不同。
首先,hello world 示例 model.h file 有一条评论说它是“使用命令从 TensorFlow Lite 平面缓冲区自动创建的:xxd -i model.tflite > model.cc\”当我运行命令时,model.h 不是“自动创建的” ”。
其次,比较 hello world 示例中的 model.cc file 与我生成的 model.cc 文件,它们完全不同,我不确定如何解释(我不是指实际数组)。同样,在示例 model.cc 文件中,它声明它是使用xxd 命令“自动创建的”。示例中的Line 28 是alignas(8) const unsigned char g_model[] = {,line 237 是const int g_model_len = 2488;。相比之下,我生成的文件中的等效行是unsigned char _________g_model[] = { 和unsigned int _________g_model_len = 4009981;
虽然我不是 C 专家,但我不确定如何解释文件中的差异以及是否错误地生成了 model.cc 文件。对于如何从原始 model.tflite 文件正确生成 model.h 和 model.cc 文件,我将不胜感激。
-
这种方法显然只是用模型的初始化变量替换了从文件系统加载模型。你确定你的微控制器可以执行TensorFlow 软件?您是否为您的目标成功编译了它? -- 不管怎样,当然你的模型应该给你另一个输出而不是\"hello world\"。如果您转换“hello world”,您是否比较了结果? -- 关于不同的标识符,示例的 xxd 版本和您的版本显然不同或使用不同的选项调用。
-
你好@thebusybee - 是的,我的微控制器可以执行 TensorFlow。我确实尝试过转换hello_world.tflite。我生成的 model.cc 文件与示例(包括数组)不匹配。但是他们在 github 中没有当前版本的 model.cc(我上面的链接来自历史快照)。因此,考虑到时间的差异,示例中的模型可能会有所不同,但我无法确认。仍然不确定如何正确生成 model.h 和 model.cc。
标签: windows-10 c file-conversion xxd