首页 > 解决方案 > 如何训练具有多个时间序列的神经网络?

问题描述

我正在尝试训练一个feedforwardnet接受timeseries输入的预测timeseries输出。

我有一个 20 X 961 的输入单元格,其中每个单元格都是一个包含两个元素(两个变量 u1 和 u2)的向量。

还有一个同样为 20 X 961 的输出单元,其中每个单元是一个包含两个元素(两个变量 x1 和 x2)的向量。

每列对应于一次“运行”实验,因此我有 961 个不同的实验结果来训练网络。每当我尝试代码时:

[net,tr] = train(net, Input', Output');

它给我带来了一些错误,例如错误的 numInputs 或错误的 numOutputs。老实说,我对 matlab 神经网络知之甚少,不知道哪里出了问题,或者即使前馈网络是我正在寻找的那种网络。你能给我指导吗?非常感谢!

从两次实验中获取的数据的较小版本如下:

Input = {
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
}

Output = {
[0,0],  [0,0]
[0,9.93150000000000],   [0,11.9180000000000]
[0,9.99990000000000],   [0,12]
[0,9.99900000000000],   [0,11.9980000000000]
[0,9.98920000000000],   [0,11.9950000000000]
[0,9.99920000000000],   [0,11.9990000000000]
[0,10.0060000000000],   [0,12.0070000000000]
[0,9.99930000000000],   [0,11.9980000000000]
[0,10.0010000000000],   [0,12.0020000000000]
[0,10.0010000000000],   [0,11.9970000000000]
[0,9.99970000000000],   [0,12]
[0,9.99900000000000],   [0,11.9980000000000]
[0,9.99680000000000],   [0,11.9990000000000]
[0,9.99910000000000],   [0,11.9990000000000]
[0,10.0040000000000],   [0,12.0060000000000]
[0,10.0050000000000],   [0,11.9990000000000]
[0,9.99840000000000],   [0,11.9990000000000]
[0,9.99900000000000],   [0,11.9990000000000]
[0,10.0060000000000],   [0,12.0090000000000]
[0,10.0030000000000],   [0,11.9980000000000]
}

标签: matlabneural-network

解决方案


您可以使用 MATLAB 中的这个 layerrecnet。对于您的用例。 layerrecnet:层循环神经网络类似于前馈网络,除了每一层都有一个循环连接和一个与之相关的抽头延迟。这允许网络对时间序列输入数据具有无限的动态响应。 preparets:为网络模拟或训练准备输入和目标时间序列数据,请参阅此示例以更好地理解:

[X,T] = simpleseries_dataset;
net = layrecnet(1:2,10);
[Xs,Xi,Ai,Ts] = preparets(net,X,T);
net = train(net,Xs,Ts,Xi,Ai);
view(net)
Y = net(Xs,Xi,Ai);
perf = perform(net,Y,Ts)

推荐阅读