【发布时间】:2016-06-22 14:55:20
【问题描述】:
我使用Elman recurrent network from neurolab 来预测连续值的时间序列。网络是从一个序列中训练出来的,输入是索引i处的值,目标是索引i+1处的值。
为了在下一个时间步之外进行预测,网络的输出作为输入反馈。例如,如果我打算预测 i+5 处的值,我将按照以下步骤进行。
- 输入来自
i的值 - 获取输出并将其作为下一个输入值馈送到网络(例如
i+1) - 再重复 1. 到 3. 四次
- 输出是
i+5的值的预测值
因此,对于下一时间步之后的预测,必须使用先前激活的输出来激活循环网络。
然而,在大多数示例中,网络已经输入了一个完整的序列。例如,请参见上面链接后面示例中的函数 train 和 sim。第一个函数使用已经完整的示例列表训练网络,第二个函数使用完整的输入值列表激活网络。
在neurolab 中进行了一些挖掘之后,我发现函数step 可以为单个输入返回单个输出。然而,使用step 的结果表明,该函数不保留循环层的激活,这对循环网络至关重要。
如何在神经实验室中使用单个输入激活循环 Elman 网络,以便在下一次单个输入激活时保持其内部状态?
【问题讨论】:
-
pybrain 也会出现同样的问题。恐怕我不理解多步预测,或者它不是很好......
标签: python neural-network recurrent-neural-network neurolab