使用Pybrain进行序列模式识别

1 投票
1 回答
1239 浏览
提问于 2025-04-18 04:18

我正在尝试使用递归神经网络(RNN)来对一系列连续的数据进行分类。更具体地说,我有一组来自传感器的时间连续的读数,我需要学习一个算法,通过观察这些读数的变化,来检测与这种模式相关的状态。

举个例子:

时间步骤1:1.4

时间步骤2:1

时间步骤3:0.8

状态 = 行走。

新序列:

时间步骤1:0.4

时间步骤2:0.3

时间步骤3:0.1

状态 = 坐着。

实际上,我有12个传感器,这里只是为了方便展示一个数字序列。(这些数字不是真实的,我只是想传达这个概念!)

我正在尝试用Pybrain的RNN来构建我的网络,但我找不到可以检测这种信息的数据集容器。我试过使用SequentialData,但经过一些测试,我觉得它学到的只是数字序列中的下一个元素。以下是我构建数据集的方式:

self.alldata = SequentialDataSet(ds.num_features, 1)
# Now add the samples to the data set.
idx = 1 
self.alldata.newSequence()
for sample in ds.all_moves:
  self.alldata.addSample(sample.get_features(), [ds.get_classes().index(sample.class_)])
  idx += 1
  if (idx%6 == 0): #I want every 6 consecutive readings at a time
    pdb.set_trace()
    self.alldata.newSequence()


self.tstdata, self.trndata = self.alldata.splitWithProportion(0.25)

有没有什么想法可以让我以不同的方式做到这一点?Pybrain能处理这种分类问题吗?

1 个回答

1

一个解决方案

你可以这样来实现这个策略:

在这里输入图片描述

你可能需要12个传感器输入,再加上一个额外的输入,用来表示上一个时间点(t-1)的分类。我把图简化了,只显示了4个输入。

撰写回答