前言
这篇文章是对前面所写的LSTM时序预测文章的代码使用方法的总结。强烈建议使用代码前先阅读本文,而不是直接询问! 此外,代码数据中除了负荷列其他列都已经归一化了,所以代码中只对负荷列进行了归一化,如果使用自己的数据,需要对其他列数据进行归一化。
更新:由于询问如何使用的人太多了,因此这里做一些更加详细的注解,TensorFlow代码的整体结构与使用方法与PyTorch几乎一模一样,因此就不再详细介绍。
前面已经写过不少时间序列预测的文章:
- 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)
- PyTorch搭建LSTM实现时间序列预测(负荷预测)
- PyTorch中利用LSTMCell搭建多层LSTM实现时间序列预测
- PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)
- PyTorch搭建双向LSTM实现时间序列预测(负荷预测)
- PyTorch搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
- PyTorch搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
- PyTorch搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
- PyTorch搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
- PyTorch搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
- PyTorch中实现LSTM多步长时间序列预测的几种方法总结(负荷预测)
- PyTorch-LSTM时间序列预测中如何预测真正的未来值
- PyTorch搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
- PyTorch搭建ANN实现时间序列预测(风速预测)
- PyTorch搭建CNN实现时间序列预测(风速预测)
- PyTorch搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)
- PyTorch搭建Transformer实现多变量多步长时间序列预测(负荷预测)
- PyTorch时间序列预测系列文章总结(代码使用方法)
- TensorFlow搭建LSTM实现时间序列预测(负荷预测)
- TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)
- TensorFlow搭建双向LSTM实现时间序列预测(负荷预测)
- TensorFlow搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
- TensorFlow搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
- TensorFlow搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
- TensorFlow搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
- TensorFlow搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
- TensorFlow搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
- TensorFlow搭建ANN实现时间序列预测(风速预测)
- TensorFlow搭建CNN实现时间序列预测(风速预测)
- TensorFlow搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)
- PyG搭建图神经网络实现多变量输入多变量输出时间序列预测
- PyTorch搭建GNN-LSTM和LSTM-GNN模型实现多变量输入多变量输出时间序列预测
- PyG Temporal搭建STGCN实现多变量输入多变量输出时间序列预测
- 时序预测中Attention机制是否真的有效?盘点LSTM/RNN中24种Attention机制+效果对比
这篇文章是对所有文章的总结,顺便也谈一谈代码如何使用。
1. 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)
这篇文章主要讲PyTorch中LSTM的输入和输出,具体讲了数据流动过程中的维度变化,是所有文章的基础,必须要理解。这篇文章不涉及代码使用。
2. PyTorch搭建LSTM实现时间序列预测(负荷预测)
这篇文章是单变量单步预测的示例,即利用前24小时的负荷预测下一时刻的负荷值。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-Load-Forecasting项目,如下所示:
这里对args.py中的一些参数做一些解释,需要注意的是,不同的预测方法有不同的args配置,例如mm_args_parser表示多变量多步长(Multivariate-MultiStep)预测的配置文件。这里以多变量多步长预测的参数配置为例:
epochs
:模型训练的轮数,意义不言而喻。input_size
:模型的输入维度,这里为7,表示用负荷+其余6个环境因素(对应csv文件中的7列数据)进行预测。如果需要更换为自己的数据,例如用降雨量+其余3个环境因素进行预测,那么这里应该有input_size=4
。seq_len
:序列长度,这里为24,表示我们利用前24小时的负荷+环境因素去预测未来的负荷,请根据需求自行更改。output_size
:模型的输出大小,这里为4,表示我们利用前24小时的负荷+环境因素去预测未来4小时的负荷值。一般来讲,output_size
越大,预测的效果也就越差,请根据需求自行更改。hidden_size
:LSTM的hidden_size
大小,具体请参考LSTM的原理。一般这里不需要更改,如果预测效果不好,可以自行调整。num_layers
:LSTM的层数,调整原则同hidden_size
。lr
:学习率,意义不言而喻。batch_size
:批大小,一般可作为一个超参数进行调整,一般不需要更改。optimizer
:优化器,一般使用Adam,不需要更改。device
:参数,如果有GPU则自动使用,否则使用CPU,不需要更改。weight_decay
:正则化参数,一般可作为一个超参数进行调整,一般不需要更改。bidirectional
:双向控制参数,如果为True,则使用双向LSTM,否则使用单向LSTM,请根据需要自行调整。step_size
:训练过程中每step_size
个epoch调整一次学习率。gamma
:训练过程中每step_size
个epoch后让学习率变为之前的gamma
倍。
然后打开并运行LSTMs文件夹下的univariate_single_step.py文件,表示单变量单步长预测。如果需要更换预测长度,比如前12小时预测下一小时,只需将args.py中us_args_parser()函数中的参数seq_len改为12,其他参数的更改请参考前面对args中参数的讲解。即:
如果需要使用自己的数据,只需要将data文件夹下的data.csv替换为自己的csv文件,然后再对data_process.py中的nn_seq_us进行更改:
如果需要预测的变量为第s列,那么只需将图中的1改为s即可。
3. PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)
这篇文章是多变量单步预测的示例,即利用前24小时的负荷+环境因素预测下一时刻的负荷值。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-Load-Forecasting项目,然后打开并运行LSTMs文件夹下的multivariate_single_step.py文件。如果需要使用自己的数据,首先需要将data.csv进行替换,其次,对data_process.py中的nn_seq_ms进行更改:
具体来讲,首先需要将1替换为想要预测的变量的列索引,然后将2, 8替换为环境变量的列索引。其他参数的更改请参考前面对args中参数的讲解。
4. PyTorch搭建双向LSTM实现时间序列预测(负荷预测)
这篇文章是双向LSTM预测的示例,即将23节中的单向LSTM替换为双向LSTM。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-Load-Forecasting项目,然后将args.py中三个args_parser()函数中的bidirectional参数改为True即可:
5. PyTorch搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
这篇文章是多变量多步长预测的第一篇:直接多输出。我们利用前24小时的负荷+环境因素预测接下来多个小时的负荷值。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,如下所示:
然后打开并运行algorithms文件夹下的multiple_outputs.py文件即可。
如果需要调整预测长度,比如利用前24小时预测接下来12个小时,只需将args.py中mo_args_parser()函数中的output_size参数改为12即可,其他参数的更改请参考前面对args中参数的讲解。
如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mo()函数,更改方式和前面一样。
6. PyTorch搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
这篇文章是多变量多步长预测的第二篇:单步滚动预测。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的single_step_scrolling.py文件即可。
如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_sss()函数,更改方式和前面一样。
单步滚动预测的参数配置文件中出现了一个新的参数pred_step_size
,其意思为预测的长度,与一开始的output_size
表达的意思一致,但这里二者有所区分,区分如下:由于在单步滚动预测中,比如前10个预测后3个:我们首先利用[1…10]预测[11’],然后利用[2…10 11’]预测[12’],最后再利用[3…10 11’ 12’]预测[13’],也就是为了得到多个预测输出,我们直接预测多次,并且在每次预测时将之前的预测值带入。这意味着虽然我们一共预测了未来3个时刻的负荷,但每个模型实际上只预测了未来一个时刻,只是3个时刻分别由3个不同的模型进行预测。因此在这里,output_size=1
,意为模型只预测未来一个时刻的负荷,而pred_step_size=3
,表示一共预测3个时刻。
其他参数的更改请参考前面对args中参数的讲解。
7. PyTorch搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
这篇文章是多变量多步长预测的第三篇:多模型单步预测。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的multi_model_single_step.py文件即可。
如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mmss()函数,更改方式和前面一样。
其他参数的更改请参考前面对args中参数的讲解。
8. PyTorch搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
这篇文章是多变量多步长预测的第四篇:多模型滚动预测。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的multi_model_scrolling.py文件即可。
如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mmss()函数,更改方式和前面一样。
其他参数的更改请参考前面对args中参数的讲解。
9. PyTorch搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
这篇文章是多变量多步长预测的第五篇:seq2seq预测。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的seq2seq.py文件即可。
如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mos()函数,更改方式和前面一样。
其他参数的更改请参考前面对args中参数的讲解。
10. PyTorch中实现LSTM多步长时间序列预测的几种方法总结(负荷预测)
总结文章,不涉及代码使用,没啥可说的。
11. PyTorch-LSTM时间序列预测中如何预测真正的未来值
这部分讲怎么利用现有的模型预测未来不存在的值,这篇文章中给出了一个大致的模型框架,如果需要针对自己的情况进行预测,可以加我微信进行询问。
12. PyTorch搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
这篇文章是时间序列预测多任务学习的示例,即一次性输出多个变量,例如利用前24小时的负荷+温度预测接下来12个小时的负荷+温度。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的multi_task_learning.py文件即可。
如果需要使用自己的数据,首先需要将data文件夹下的mtl_data_1.csv或者mtl_data_2.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mtl()函数。同时,args.py中的multi_task_args_parser()函数也需要进行更改:
其中output_size
表示预测长度,即预测接下来12个小时的多个变量值;n_outputs
表示需要预测的变量个数,比如本篇文章中需要预测3个变量。
其他参数的更改请参考前面对args中参数的讲解。
13. PyTorch搭建ANN实现时间序列预测(风速预测)
这篇文章是ANN时间序列预测示例。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的ANN-Speed-Forecasting项目,如下所示:
然后打开并运行ann.py文件即可。
如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py的相关方法。由于这里使用的数据集与之前文章的数据集不一致,因此数据处理部分的代码更改不具有普遍性,具体情况具体分析。
14. PyTorch搭建CNN实现时间序列预测(风速预测)
这篇文章是ANN时间序列预测的示例。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的CNN-Speed-Forecasting项目,如下所示:
然后打开并运行cnn.py文件即可。
如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py的相关方法。由于这里使用的数据集与之前文章的数据集不一致,因此数据处理部分的代码更改不具有普遍性,具体情况具体分析。
15. PyTorch搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)
这篇文章是CNN-LSTM混合模型时间序列预测的示例。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的CNN-Speed-Forecasting项目,如下所示:
然后打开并运行main.py文件即可。
如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改get_data.py的相关方法,更改方法同前面多变量多步长预测。
这里对部分参数做下解释(其他参数的解释见前面):
in_channels
:CNN的输入通道数,与前面讲的input_size
是一回事。out_channels
:CNN的输出通道数。
其他参数的更改请参考前面对args中参数的讲解。
16. PyTorch搭建Transformer实现多变量多步长时间序列预测(负荷预测)
这篇文章是Transformer时间序列预测的示例。
具体使用方法:利用pycharm或者其他IDE打开压缩包中的Transformer-Timeseries-Forecasting项目,如下所示:
然后打开并运行main.py文件即可。
如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改get_data.py的相关方法。
d_model
的意思请参考transformer时序预测那篇文章。
其他参数的更改请参考前面对args中参数的讲解。
TensorFlow代码的整体结构与使用方法与PyTorch几乎一模一样,因此就不再详细介绍。
源码获取
后面将陆续公开~