在 Keras LSTM 实现中,正如 Jason Brownlee 所演示的,了解时间步长和特征的重要性至关重要将数据重塑为 [样本、时间步长、特征] 格式。
时间步长: 顾名思义,时间步长是指沿时间维度的数据点数量。在顺序数据的背景下,例如金融时间序列,序列中的每个数据窗口都被视为一个时间步。
特征:特征是指考虑的变量数量每个时间步。例如,如果您同时分析股票的价格和交易量,则每个时间步都会有两个特征(价格和交易量)。
重塑涉及将原始数据转换为三维数组,其中第一个维度表示样本数量,第二个维度表示每个样本内的时间步数,第三个维度表示每个时间步的特征数。
解释重构数据
考虑可视化 N 个油罐 5 小时内的压力和温度的示例:
Tank A: [[P1, T1], [P2, T2], [P3, T3], [P4, T4], [P5, T5]] Tank B: [[PB1, TB1], [PB2, TB2], [PB3, TB3], [PB4, TB4], [PB5, TB5]] … Tank N: [[PN1, TN1], [PN2, TN2], [PN3, TN3], [PN4, TN4], [PN5, TN5]]
当重新整形为 [样本、时间步长、特征] 时,该数组将如下所示:
Sample 1 (Tank A): [[P1, P2, P3, P4, P5], [T1, T2, T3, T4, T5]] Sample 2 (Tank B): [[PB1, PB2, PB3, PB4, PB5], [TB1, TB2, TB3, TB4, TB5]] … Sample N (Tank N): [[PN1, PN2, PN3, PN4, PN5], [TN1, TN2, TN3, TN4, TN5]]
了解有状态 LSTM
有状态 LSTM 在批次之间维护内部内存状态。当使用batch_size=1时,如所提供的代码中所示,网络利用前一时间步的输出作为当前时间步的输入。这使得模型能够捕获数据中的顺序依赖关系。
当使用 shuffle=False 训练有状态 LSTM 时(如代码中所指定),模型会按顺序处理序列,从而能够从上下文中学习每个序列中之前的时间步。
结论
理解时间步、特征和有状态 LSTM 行为的概念对于有效使用 LSTM 网络至关重要。通过适当地重塑数据并使用有状态 LSTM,您可以利用 LSTM 的强大功能进行时间序列建模。
以上是时间步长和特征如何影响 Keras 中的 LSTM 数据重塑?的详细内容。更多信息请关注PHP中文网其他相关文章!