目录

  • I. 前言
  • II. 数据处理
  • III. LSTM模型
  • IV. 训练/测试
  • V. 源码及数据

I. 前言

在前面的一篇文章PyTorch搭建LSTM实现时间序列预测(负荷预测)中,我们利用LSTM实现了负荷预测,但我们只是简单利用负荷预测负荷,并没有利用到其他一些环境变量,比如温度、湿度等。

本篇文章主要考虑用PyTorch搭建LSTM实现多变量时间序列预测。

系列文章:

  1. 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)
  2. PyTorch搭建LSTM实现时间序列预测(负荷预测)
  3. PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)
  4. PyTorch搭建双向LSTM实现时间序列预测(负荷预测)
  5. PyTorch搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
  6. PyTorch搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
  7. PyTorch搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
  8. PyTorch搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
  9. PyTorch搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
  10. PyTorch中实现LSTM多步长时间序列预测的几种方法总结(负荷预测)
  11. PyTorch-LSTM时间序列预测中如何预测真正的未来值
  12. PyTorch搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
  13. PyTorch搭建ANN实现时间序列预测(风速预测)
  14. PyTorch搭建CNN实现时间序列预测(风速预测)
  15. PyTorch搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)
  16. PyTorch搭建Transformer实现多变量多步长时间序列预测(负荷预测)
  17. PyTorch时间序列预测系列文章总结(代码使用方法)
  18. TensorFlow搭建LSTM实现时间序列预测(负荷预测)
  19. TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)
  20. TensorFlow搭建双向LSTM实现时间序列预测(负荷预测)
  21. TensorFlow搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
  22. TensorFlow搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
  23. TensorFlow搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
  24. TensorFlow搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
  25. TensorFlow搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
  26. TensorFlow搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
  27. TensorFlow搭建ANN实现时间序列预测(风速预测)
  28. TensorFlow搭建CNN实现时间序列预测(风速预测)
  29. TensorFlow搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)

II. 数据处理

数据集为某个地区某段时间内的电力负荷数据,除了负荷以外,还包括温度、湿度等信息。

本文中,我们根据前24个时刻的负荷以及该时刻的环境变量来预测下一时刻的负荷。最终得到了batch_size=B的数据集Dtr、Val以及Dte,Dtr为训练集,Val为验证集,Dte为测试集。

任意输出Dte中的一条数据:

[(tensor([[0.3513, 0.0000, 0.9091, 0.0000, 0.6667, 0.3023, 0.2439],[0.3333, 0.0000, 0.9091, 0.0435, 0.6667, 0.3023, 0.2439],[0.3396, 0.0000, 0.9091, 0.0870, 0.6667, 0.3023, 0.2439],[0.3427, 0.0000, 0.9091, 0.1304, 0.6667, 0.3023, 0.2439],[0.3838, 0.0000, 0.9091, 0.1739, 0.6667, 0.3023, 0.2439],[0.3700, 0.0000, 0.9091, 0.2174, 0.6667, 0.3023, 0.2439],[0.4288, 0.0000, 0.9091, 0.2609, 0.6667, 0.3023, 0.2439],[0.4474, 0.0000, 0.9091, 0.3043, 0.6667, 0.3023, 0.2439],[0.4406, 0.0000, 0.9091, 0.3478, 0.6667, 0.3023, 0.2439],[0.4657, 0.0000, 0.9091, 0.3913, 0.6667, 0.3023, 0.2439],[0.4540, 0.0000, 0.9091, 0.4348, 0.6667, 0.3023, 0.2439],[0.4939, 0.0000, 0.9091, 0.4783, 0.6667, 0.3023, 0.2439],[0.4328, 0.0000, 0.9091, 0.5217, 0.6667, 0.3023, 0.2439],[0.4238, 0.0000, 0.9091, 0.5652, 0.6667, 0.3023, 0.2439],[0.4779, 0.0000, 0.9091, 0.6087, 0.6667, 0.3023, 0.2439],[0.4591, 0.0000, 0.9091, 0.6522, 0.6667, 0.3023, 0.2439],[0.4651, 0.0000, 0.9091, 0.6957, 0.6667, 0.3023, 0.2439],[0.5102, 0.0000, 0.9091, 0.7391, 0.6667, 0.3023, 0.2439],[0.5067, 0.0000, 0.9091, 0.7826, 0.6667, 0.3023, 0.2439],[0.4635, 0.0000, 0.9091, 0.8261, 0.6667, 0.3023, 0.2439],[0.4224, 0.0000, 0.9091, 0.8696, 0.6667, 0.3023, 0.2439],[0.3796, 0.0000, 0.9091, 0.9130, 0.6667, 0.3023, 0.2439],[0.3292, 0.0000, 0.9091, 0.9565, 0.6667, 0.3023, 0.2439],[0.2940, 0.0000, 0.9091, 1.0000, 0.6667, 0.3023, 0.2439]]), tensor([0.3675]))]

每一行对应一个时刻点的负荷以及环境变量,此时input_size=7。

III. LSTM模型

这里采用了深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中的模型:

class LSTM(nn.Module):def __init__(self, input_size, hidden_size, num_layers, output_size, batch_size):super().__init__()self.input_size = input_sizeself.hidden_size = hidden_sizeself.num_layers = num_layersself.output_size = output_sizeself.num_directions = 1 # 单向LSTMself.batch_size = batch_sizeself.lstm = nn.LSTM(self.input_size, self.hidden_size, self.num_layers, batch_first=True)self.linear = nn.Linear(self.hidden_size, self.output_size)def forward(self, input_seq):batch_size, seq_len = input_seq.shape[0], input_seq.shape[1]h_0 = torch.randn(self.num_directions * self.num_layers, self.batch_size, self.hidden_size).to(device)c_0 = torch.randn(self.num_directions * self.num_layers, self.batch_size, self.hidden_size).to(device)# output(batch_size, seq_len, num_directions * hidden_size)output, _ = self.lstm(input_seq, (h_0, c_0)) # output(5, 30, 64)pred = self.linear(output)  # (5, 30, 1)pred = pred[:, -1, :]  # (5, 1)return pred

IV. 训练/测试

简单训练了30轮,MAPE为6.01%:

V. 源码及数据

后面将陆续公开~

PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)相关推荐

  1. TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)

    目录 I. 前言 II. 数据处理 III. LSTM模型 IV. 训练/测试 V. 源码及数据 I. 前言 在前面的一篇文章TensorFlow搭建LSTM实现时间序列预测(负荷预测)中,我们利用L ...

  2. 基于pytorch搭建多特征CNN-LSTM时间序列预测代码详细解读(附完整代码)

    系列文章目录 lstm系列文章目录 1.基于pytorch搭建多特征LSTM时间序列预测代码详细解读(附完整代码) 2.基于pytorch搭建多特征CNN-LSTM时间序列预测代码详细解读(附完整代码 ...

  3. 【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(双向LSTM,附完整代码和数据集)

    写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 在https://blog.csdn.net/A ...

  4. 使用 LSTM 进行多变量时间序列预测的保姆级教程

    来源:DeepHub IMBA 本文约3800字,建议阅读10分钟本文中我们将使用深度学习方法 (LSTM) 执行多元时间序列预测. 使用 LSTM 进行端到端时间序列预测的完整代码和详细解释. 我们 ...

  5. 使用 LSTM 进行多变量时间序列预测

    使用 LSTM 进行端到端时间序列预测的完整代码和详细解释. 在本文中我们将使用深度学习方法 (LSTM) 执行多元时间序列预测. 我们先来了解两个主题-- 什么是时间序列分析? 什么是 LSTM? ...

  6. matlab负荷预测,负荷预测matlab

    本文主要针对BP 神经网络 应用于电力系统短期负荷预测做了进一步的研究,并通过MATLAB设计BP神经 网络,仿真结果表明BP神经网络在短期负荷预测中的应用是可行的,能较好...... MATLAB ...

  7. 【数值预测案例】(6) LSTM、GRU 时间序列股票数据预测,附TensorFlow完整代码

    大家好,今天和各位分享一下如何使用循环神经网络 LSTM 和 GRU 完成对股票数据的预测.GRU 是在 LSTM 基础上的简化,将 LSTM 内部的三个闸门简化成两个,往往 GRU 的计算效果会优于 ...

  8. Python——LSTM、GRU 时间序列股票数据预测(文末完整代码)

    GRU 是在 LSTM 基础上的简化,将 LSTM 内部的三个闸门简化成两个,往往 GRU 的计算效果会优于 LSTM 目录 1. 导入工具包 2. 获取数据集 3. 数据预处理 4. 时间序列滑窗 ...

  9. Pytorch实现LSTM对股票进行多步预测

    数据 输入特征可以根据实际情况进行选择,这里选择的输入为["收盘价","最高价","最低价"],对未来的收盘价进行预测. 数据处理 def ...

  10. 【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(单向LSTM,附完整代码和数据集)

    写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 提起LSTM大家第一反应是在NLP的数据集上比较 ...

最新文章

  1. 一个检查分区内存并且发送邮件的shell脚本
  2. Caused by java.lang.UnsatisfiedLinkError Cannot load library
  3. 网络编程中的缓冲区溢出
  4. 暑假周总结七8.26
  5. 修改注册表 为右键添加快捷命令
  6. mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
  7. 如何处理错误消息Unable to install breakpoint due to missing line number attributes
  8. Jquery跨域请求php数据(jsonp)
  9. 博士论文答辩||基于深度强化学习的复杂作业车间调度问题研究
  10. Windows下MongoDB下载,安装和初级使用
  11. nvidia jetson xavier打开风扇,并设置开机启动
  12. inflate的使用
  13. Word编号设置和跳到尾页快捷键
  14. 删除电脑中删不掉的文件或文件夹
  15. Python基础入门教学
  16. html实现跳跳棋游戏,原生JS实现的跳一跳小游戏完整实例
  17. 数组 reduce 简介及使用场景
  18. linux winscp 乱码,WinSCP无法登陆、乱码及关联Putty的设置
  19. 解决 TypeError: expected string or bytes-like object
  20. 如何自己动手给笔记本电脑增加内存

热门文章

  1. 基于成本效益的深度信任网络的智能LEACH的多级动态优化附Matlab代码
  2. HUNNU 11786 Sir Charles Antony Richard Hoare
  3. python_面向对象,以及类的相关知识
  4. 程序设计基础大作业:学生信息管理系统plus(彩色界面,登录功能,文件操作,多文件)
  5. 极小化极大;292Nim 游戏;bitset容器;464我能赢吗;486预测赢家
  6. 牛客IOI周赛20-普及组
  7. 网页播放全景视频和全景图片
  8. IT项目量化管理结构图
  9. Java程序员“金三银四“就一定要出去面试吗?
  10. Java实现 LeetCode 215. 数组中的第K个最大元素