LSTM(long short term memory,长短期记忆网络)是预测时间序列最常用的神经网络模型之一。但是这种神经网络模型相当复杂,需要特定的结构、数据前期处理等操作。
当在网上搜寻要学习的代码时,很难将另一个程序员的代码合并到当前开展的项目中。对于LSTM尤其如此,导致这些问题的关键在于:
- 数据准备的顺序
- 数据存储的结构
简单地说,由于两个关键步骤有多种方法可以获得相同的结果,因此每个程序员选择的路径可能有所不同。
在这篇文章中,将分析为什么我们必须下定决心使用一组特定的范例,特别是在为冗长的LSTM编程时,以便更好地调试和共享。
LSTM 数据准备阶段
本质上,当我们为模型准备时间序列数据时,需要执行以下关键步骤:
- 按时间分割数据集
- 将数据集转换为有监督学习问题
这两个步骤的执行顺序没有明确规定。因此一部分程序员先分割数据集,然后将其转化为监督学习问题。而其他程序员则颠倒两者顺序。
先分割数据集,然后转换为有监督学习问题
先转换为有监督学习问题,然后分割数据集
处理结果
对比而言,虽然处理的结果相同,但是先分割数据集的方式所需代码更少。而部分程序员在编程过程中,会使用第二种方式,这就导致了社区中交流问题和代码时产生一定的差异和混乱。所以本文推荐优先分割数据集的方式。