我正在为 Android 设备构建一个应用程序,该应用程序需要它通过加速度计数据识别步行噪声和双击它之间的区别。我正在尝试使用神经网络解决这个问题。
一开始它进行得非常好,教它识别噪音中的水龙头,例如站立/坐下和以较慢的速度四处走动。但是当它正常行走时,即使我给它输入了大量的噪音数据,它似乎也从来没有学习过。
我的问题:我的方法有什么严重的缺陷吗?问题是基于缺乏数据吗?
网络
我选择了一个 25 输入 1 输出的多层感知器,我正在使用反向传播对其进行训练。输入是每 20ms 的加速度变化,输出范围从 -1(无抽头)到 1(抽头)。我已经尝试了几乎所有隐藏输入的星座,但最幸运的是 3 - 10。
我正在使用 Neuroph 的 easyNeurons 进行培训并导出到 Java。
数据
我的总训练数据大约是 50 次双击和大约 3k 噪声。但我也尝试用与双击成比例的噪音来训练它。
数据如下所示(范围从 +10 到 -10):
坐着双击:
快步走:
所以重申我的问题:我的方法是否存在严重缺陷?我是否需要更多数据才能识别步行和双击之间的区别?还有其他提示吗?
更新
好的,经过多次调整,我们将基本问题归结为在快走时能够识别双击。坐着和经常(内部)步行我们可以很好地解决。
快步走
所以这是一些我先走然后停下,站着不动,然后走,在我走的时候做5次双击的测试数据。
如果有人对原始数据感兴趣,我将其链接为最新(快走)数据here