将任意训练好的模型导出为独立代码

一个训练好的模型,只有在脱离桌面应用、真正运行在实际环境中时才有价值—— 无论是在单片机上、Simulink 模块中,还是在 Python 分析脚本里。无论是在 虚拟传感器训练中训练出的模型,还是从 模型竞赛排行榜中挑选出的模型,都可以直接导出,无需任何单独的 转换工具。

C、C++、Python 或 MATLAB——选择目标平台,而非搭建转换流水线

导出格式只是一个下拉菜单,而不是一个单独的导出工具或格式转换步骤:选择 C 用于裸机单片机构建, 选择 C++ 以获得基于类的接口,选择 Python 用于快速的分析脚本或服务,或选择 MATLAB 以直接嵌入 Simulink 模块。导出的代码是模型预测函数的一个自包含实现——不依赖 Data Sensors,也无需链接任何 运行时库。

导出虚拟传感器对话框,已选择 C++ 作为导出格式

全精度或 int8 量化,保存前提供实时预览

每一次导出都可以选择全精度或 int8 量化,对话框会在您做出选择之前,针对两种方案分别显示实时的 大小与精度预估——因此"能否装进 4 KB 闪存"与"是否与训练时的精度完全一致"之间的取舍,是在 真实数字摆在眼前时做出的决定,而不是等文件已经保存到磁盘之后才发现。

截图:
大小与精度预览,全精度对比 int8 量化

不只是获胜者——排行榜上任意一项都可导出

当模型来自一次模型竞赛运行时,导出并不局限于排名第一的 那一项——也许精度略低的随机森林在您的目标硬件上运行更快,或者更小的神经网络更符合您的闪存预算。 排行榜上的每一项都可以单独导出,彼此互不影响。

截图:
导出排行榜中非获胜项

将导出的模型重新导入

已经在之前的会话中把某个模型导出为 C、C++ 或 Python 代码了吗?"虚拟传感器 > 导入虚拟 传感器…"可以将其重新导入——选择该文件(对于 C/C++,还需要选择编译器,支持自动检测并提供手动 回退选项),按照模型最初训练时的顺序一次性映射好其输入通道,随后它就会直接针对当前加载的测量 数据运行,并作为一个普通的、可绘制的信号添加进来。无需重新训练,也不需要仍然保留最初训练它的 那个会话。

截图:
导入虚拟传感器对话框