我有一组不同长度的非零序列,我正在使用 Keras LSTM 对这些序列进行建模。我使用 Keras Tokenizer 进行标记(标记从 1 开始)。为了使序列具有相同的长度,我使用padding。
填充示例:
# [0,0,0,0,0,10,3]
# [0,0,0,0,10,3,4]
# [0,0,0,10,3,4,5]
# [10,3,4,5,6,9,8]
为了评估模型是否能够泛化,我使用了一个 70/30 比率的验证集。在每个 epoch 结束时,Keras 显示了训练和验证的准确性。
我最大的疑问是使用填充时Keras 验证准确度是否可靠(当您在多个 epoch 上运行 Keras 时,在每个 epoch 结束时它会打印训练准确度和验证准确度)。因为验证集可以简单地是0 的序列 --> [0,0,0]。由于有很多 0 的序列(因为 padding),模型可以很容易地正确地学习和预测 0 的序列,从而创建一个假的高验证精度。换句话说,模型可能学习零序列而不是学习真实序列。
那么,填充是否会影响 Keras 中的验证准确性?