假设我已经训练了用于字母预测的 LSTM 模型。
我使用无状态 LSTM 进行训练,因为它是 keras 中的默认设置。
在训练期间,输入输出对将如下所示,其中输入
window_size=3
返回一个时间步长:
A, B, C -> D
B, C, D -> E
C, D, E, -> F
然后我保存了训练模型的权重
.save_weights()
,并重新实例化了一个具有相同架构但不同window_size=2
的新模型,最后将训练好的权重重新加载到该新模型中,它已成功加载,尽管skip_mismatch=False
。
我使用此输入输出对为模型提供预测:
A, B -> C
B, C -> D
C, D -> E
权重已成功加载,但我担心使用
window_size=3
和 window_size=2
重新加载模型之间是否确实提供了不同的性能。具体来说,我在 axis=1
讨论 keras 中的 LSTM。换句话说,训练和推理时的时间步数是不同的。
那么,我应该关心它的性能吗?如果不是(这意味着具有相同权重、不同窗口大小的两个模型具有相同的性能),为什么仍然需要填充?
是的,您应该关心性能差异。原因如下:
LSTM 模型对序列长度(窗口大小)敏感,因为它们学习这些序列的时间依赖性。更改窗口大小会影响模型解释数据和学习模式的方式。
此外,如果您使用窗口大小 3 训练模型,然后在推理过程中使用窗口大小 2,则模型可能无法获得最佳性能。这是因为它在训练期间学习的模式和依赖关系基于长度为 3 的序列,并且在推理期间使用较短的序列可能会破坏这些学习的模式。
此外,Padding 用于确保所有序列具有相同的长度,这对于 LSTM 模型中的批量处理至关重要。如果更改窗口大小,填充有助于保持输入形状的一致性,但不能完全减轻更改序列长度对模型性能的影响。
总体而言,模型的性能可能会随着窗口大小的不同而变化。为了获得最佳性能,最好在训练和推理中使用相同的窗口大小。