Machine learning 列车Keras有状态LSTM返回\u seq=正确,不学习 考虑这个最小可运行的例子:

Machine learning 列车Keras有状态LSTM返回\u seq=正确,不学习 考虑这个最小可运行的例子:,machine-learning,tensorflow,neural-network,deep-learning,keras,Machine Learning,Tensorflow,Neural Network,Deep Learning,Keras,如keras API中所述 批次中索引i处每个样本的最后状态将用作 下一批中索引i样本的初始状态 所以我使用的是batch_size=1,我试图预测每个时间步的衰减cos函数中的下一个值。预测,或者下图中的红点应该进入绿色圆圈,以便脚本正确预测,但是它不会收敛。。。你有什么办法让它学习吗 问题在于调用模型。分别为每个历元拟合。在这种情况下,优化器参数被重置为对培训过程有害的参数。另一件事是在预测之前也调用reset\u states,就好像它没有被调用一样,来自fit的状态是预测的开始状态,也可

如keras API中所述

批次中索引i处每个样本的最后状态将用作 下一批中索引i样本的初始状态

所以我使用的是
batch_size=1
,我试图预测每个时间步的衰减cos函数中的下一个值。预测,或者下图中的红点应该进入绿色圆圈,以便脚本正确预测,但是它不会收敛。。。你有什么办法让它学习吗


问题在于调用
模型。分别为每个历元拟合
。在这种情况下,
优化器
参数被重置为对培训过程有害的参数。另一件事是在预测之前也调用
reset\u states
,就好像它没有被调用一样,来自
fit
状态是预测的开始状态,也可能是有害的。最终代码如下:

for epoch in range(1000):
    model.reset_states()
    tot_loss = 0
    for batch in range(n_steps):
        batch_loss = model.train_on_batch(x[batch:batch+1], y[batch:batch+1])
        tot_loss+=batch_loss

    print "Loss: " + str(tot_loss/float(n_steps))
    model.reset_states()
    p = model.predict(x, batch_size=1)

在预测之前也尝试
reset_states
。仍然没有收敛:(因此尝试
mae
而不是
mse
没有差异..你确定这可以通过简单地更改超参数来解决吗?因为现在它根本没有学到任何东西。这很奇怪-但我也会尝试
model.批量(x,y)训练
而不是您的
型号。fit
。这是因为
rmsprop
的参数在每个历元后都会重置。
for epoch in range(1000):
    model.reset_states()
    tot_loss = 0
    for batch in range(n_steps):
        batch_loss = model.train_on_batch(x[batch:batch+1], y[batch:batch+1])
        tot_loss+=batch_loss

    print "Loss: " + str(tot_loss/float(n_steps))
    model.reset_states()
    p = model.predict(x, batch_size=1)