如何在 Keras 中使用不同长度的示例训练 RNN?

How to train an RNN with examples of different lengths in Keras?

我正在学习 RNN,并且正在使用 TensorFlow/Keras。我了解 vanilla RNN 和 LSTM 层的基础知识,但我无法理解如何使我的模型适应数据。

我的数据集由几个不同大小的时间序列示例组成,例如:

x1 = [1, 2, 3, 4]
x2 = [3, 7]
x3 = [5, 6, 8, 9, 10, 11]

在 keras 文档中,它说 RNN 层的输入必须具有 (batch_size, timesteps, input_dim) 形状,因此我认为,根据以上列表,我需要创建一个形状为 (3, None, 1).

如何安排我的数据以便我的模型适合它?

处理这个问题的最好方法是使用掩码:https://www.tensorflow.org/guide/keras/masking_and_padding基本的想法是填充你的时间序列,正如 Marco Cerliani 在他的评论中所建议的那样,但是在处理序列。这样你就只在实际数据值上训练你的网络。