Machine learning 列车Keras有状态LSTM返回\u seq=正确,不学习 考虑这个最小可运行的例子:
如keras API中所述 批次中索引i处每个样本的最后状态将用作 下一批中索引i样本的初始状态 所以我使用的是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的状态是预测的开始状态,也可
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)