在 Keras 中,时间序列数据通常被重塑为三维数组,其中维度[样本、时间步长、特征]。此格式对于 LSTM 层是必需的,LSTM 层会随着时间的推移按顺序处理数据。
例如,如果您有 5 个训练序列,每个训练序列有 10 个时间步和 1 个时间步功能,您的数据将被重塑为 (5, 10, 1)。
有状态 LSTM 允许模型在批次之间维护其内部状态。这意味着模型在处理一个批次后会记住隐藏状态,并将它们用作下一个批次的输入。这在处理顺序数据时特别有用,其中当前输出取决于先前的输入。
在您提供的 Keras 代码中,stateful=True 设置为 True,表示 LSTM 是有状态的。 batch_size 设置为 1,这意味着模型将一次处理一个序列。该模型将保留训练运行之间的细胞内存值,使其能够学习数据中的长期依赖性。
如果您正在处理多元时间序列,其中每个时间步长都有多个输入特征(例如股票价格) ),特征数量将大于 1。
您提供的 Keras LSTM 实现有一个 LSTM 层,有 4 个单元,返回序列为 True。这意味着 LSTM 将为每个输入时间步输出长度为 4 的序列。
然后使用均方误差损失函数和 Adam 优化器编译模型。训练循环迭代 100 个 epoch,批量大小为 1。
需要注意的是,该 LSTM 模型旨在根据之前的时间步预测下一个时间步。但是,可以通过更改输出层和损失函数来修改模型以用于其他任务,例如序列分类或语言建模。
以上是如何重塑时间序列数据以与 Keras LSTM 一起使用,有状态 LSTM 以及参数'时间步长”和'特征”的意义是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!