我正在建立一个keras用于时间序列预测的模型。问题的结构如下:
- 输入是 5 个数字特征的时间序列
- 输出是一个二进制类(0 或 1)
- 该模型需要预测可变长度的输入数据。例如,在某些情况下,我可能只有前 2 天可用于样品,而在其他情况下,我可能有 7 天。
这是我在模型中设置图层的方式:
import tensorflow as tf
model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(64, input_shape=(None, 5))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
在对恒定大小的序列进行训练并在相同大小上进行预测时,我看到了良好的性能。但是,我不确定如何最好地配置和训练模型以处理可变长度输入。
我想知道当序列的长度不同时,引擎盖下是否会出现零填充。0 的值对于我正在使用的功能是常见且有意义的,因此在这种情况下用 0 填充缺失的数据是没有意义的。
我也想知道在这种情况下人们通常如何构建他们的训练集。我可以执行以下任何操作:
- 每个样本只包含一次随机输入长度
- 每个可能的输入长度包含每个样本一次,每次输入长度不同
- 每个样本只包含一次,最大输入长度
第三个似乎不正确,因为模型可能需要查看长度较短的训练示例才能对其进行预测。