如果我需要一个模型,使其根据当前输入和之前的输入来计算输出,我该怎么办:
我已经做了一些编码,但无法添加这个功能,有什么想法可以进行这样的更改吗?
net = buildNetwork(numberofinputs, number_of_nodes, numberofoutputs, bias=True)trainer = BackpropTrainer(net, ds, learningrate=0.01,momentum=0.99)print("Start training")a = trainer.trainUntilConvergence(verbose=True,` dataset=ds,maxEpochs=10,continueEpochs=1000, validationProportion=0.99)print("Finished training")print(trainer.train())
这段代码仅根据当前输入计算输出,我希望它能记住前三个输入值,并与当前输入一起预测下一个输出。
回答:
如果你只需要前一个输入,那么只需将其作为另一个特征添加即可。所以如果你的当前特征向量是
x_t = (x1_t, x2_t, x3_t)
而你的下一个特征向量是
x_{t+1} = (x1_{t+1}, x2_{t+1}, x3_{t+1})
那么你可以简单地使用
x_new = (x1_t, x2_t, x3_t, x1_{t+1}, x2_{t+1}, x3_{t+1})
作为输入特征向量。
循环神经网络
然而,如果你需要一个可变长度的时间序列作为输入向量,你可以使用循环神经网络。我认为PyBrain做不到这一点。我建议你看看Google Tensor Flow。关于RNN的教程,可以看看这两篇优秀的博客文章:
- 循环神经网络的非凡效能 作者:Andrej Karpathy
- 理解LSTM网络 作者:Christopher Olah