SMARTWATCH 学习手册有 C 基础 · 嵌入式从零开始
五 A / 原型学习与个性化 / 06

把个人化的数学与三端操作接起来

沿一次新特征的产生、筛选、更新和显示,串起主控与手机,再明确基础模型变化后的重新核对工作。

接续上一篇:重启后原型去哪了:备份与完整恢复

1 · 从真实调用顺序开始

HAR_Init 初始化网络,注册中间层回调,并从分类器权重按当前近似方法构造通用原型。运行时 HAR_AddSamples 先复位本轮特征就绪状态,再执行网络;只有回调成功产生新特征,才允许原型分类和会话筛选。

当前通用原型由权重矩阵组合并归一化得到,源代码近似忽略其中非线性。这与用带标签真实特征求均值不同,不能把它称为已经验证过的个人类别中心。

2 · 为什么特征要在回调中立即复制

网络的激活工作区被不同层复用。指定节点执行到某时刻时,缓冲里才是所需的 128 维特征,所以 har_embedding.c 在回调中复制出来。推理结束后再凭固定地址读取,内容可能已经被后续计算覆盖。

当前代码识别特定节点编号并归一化。重新生成网络后,即使输入输出相同,节点编号、位置和中间类型也可能改变,需要重新对照生成文件和固定参考输入。

3 · 手机和主控各负责什么

位置当前职责
App Session选择类并发出开始、结束、取消;展示设备反馈。
har_inference.c基础推理、取得新特征、执行原型分类并送入会话。
ble_uart.c处理命令、筛选累加、提交更新与备份恢复。
proto_model.c保存原型并计算相似度和输出。

这些代码通过当前传感器任务顺序推进,新增跨任务访问时还需要重新确定数据保护。不要先把每个数学函数拆成任务,增加不必要的栈与交接。

4 · 原型能否跨模型继续使用

维度相同只说明存储长度相同,不保证特征空间同义。基础网络重新训练、预处理修改、量化和特征提取位置变化后,都应重新生成或采集原型,并用独立查询记录核对。

基础模型、个人原型和固件版本各自标识清楚,备份恢复才有可信的兼容依据。这也引出下一部分:更新原型数据和更新整个可执行程序,需要不同的启动与恢复设计。

5 · 完成这部分应能独立解释什么

能够用二维例子手算原型,说明 128 维如何扩展;从 App 操作追踪到实际更新;指出 50 次计数的含义;在错误传输时证明旧原型保留;用独立记录比较新旧结果。

动手观察

画完整路径:一次个人化会话开始,到一份新特征被接纳,再到新原型提交和备份。为每条箭头标注数据、触发条件与失败时的行为。

资料与代码