gpt4 book ai didi

machine-learning - Keras : reset with fit, 中的状态 LSTM 评估和预测?

转载 作者:行者123 更新时间:2023-11-30 08:51:23 26 4
gpt4 key购买 nike

我想详细讨论何时重置状态的问题。

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)

我觉得在训练循环结束时重置模型状态会导致评估或预测步骤错误,至少在训练开始时是这样。是这样吗?如果数据继续按顺序进入测试集,我是否应该重置最后一个时期的状态?

此外,在对测试集进行评估后,我是否需要在尝试预测之前将模型的状态恢复到训练集结束时的状态?我应该复制模型吗?保存并重新加载吗?

最佳答案

事实上,如果您在评估测试集之前重置状态,它将假定测试序列是一个全新的序列。它将从头开始。如果整个序列的一般行为不随时间变化,也许误差不会太大。但我不会冒险。

如果测试序列是训练序列的延续,那么它应该从正确的状态开始以获得最佳结果。

但我想说你应该这样做:

  • 重置状态(这些状态受到上一个时期开始时仍未训练的权重的影响)
  • 评估列车序列(以创建新的最新状态)
  • 评估测试序列

然后是这个:

  • 重置状态(更改状态所需的评估)
  • 预测列车序列(再次创建状态)
  • 预测测试序列

未回答:我不知道 evaluate 方法是否会将状态恢复到之前的状态。但我相信不会。您可能需要评估足够长的序列来填充您的内存,然后您必须分批进行评估。

偏离主题:链接问题中的误解:

在 keras 中,样本序列。循环层的批处理尺寸为:

  • (sequences, timeSteps, features),其中序列数、样本数和批量大小完全相同。 (检查文档以确认第二个维度是序列中的“步骤”:https://keras.io/layers/recurrent/)

关于machine-learning - Keras : reset with fit, 中的状态 LSTM 评估和预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46534194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com