我想扩展何时重置状态的问题。
Stateful LSTM: When to reset states?
假设我训练一个有状态的模型:
for i in range(epochs):
model.fit(X_train, y_train, epochs=1, batch_size=1, shuffle=False)
model.reset_states()
我的训练和测试集来自一个时间序列数据集,测试集紧跟训练集之后。
接下来,我想评估测试集并获得一系列预测。
score = model.evaluate(X_test, y_test, batch_size=1, verbose=True)
prediction = model.predict(X_test, batch_size=1)
我觉得好像在训练循环结束时重置模型状态会导致评估或预测步骤错误,至少在集合开始时。是这样吗?如果数据继续按顺序进入测试集,我是否应该重置上一个纪元的状态?
另外,在我评估测试集之后,在尝试预测之前,是否需要将模型的状态恢复到训练集结束时的状态?我应该复制模型吗?保存并重新加载?
答案 0 :(得分:5)
实际上,如果在评估测试集之前重置状态,它将假定测试序列是一个全新的序列。它将从头开始。如果整个序列的一般行为不随时间变化,则错误可能不会太大。但我不会冒险。
如果测试序列继续训练序列,那么它应该以适当的状态开始以获得最佳结果。
但我会说你应该这样做:
然后这个:
没有回答:我不知道declare @i date='10/3/2017'
declare @Friday int=6
SELECT convert(varchar,dateadd(day,(@Friday-DATEPART(dw,@i)),@i) ,110)
方法是否会将州恢复到以前的状态。但我相信它不会。您可能需要评估足够长的序列以填满您的记忆,然后您必须批量评估。
偏离主题:关联问题中的误解:
在keras中,样本是序列。批处理循环图层的尺寸为:
evaluate
,其中序列数,样本数和批量大小完全相同。 (查看文档以确认第二个维度是序列中的“步骤”:https://keras.io/layers/recurrent/)