目录

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

I. 前言

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

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

系列文章:

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

II. 数据处理

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

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

任意输出一条数据:

(<tf.Tensor: shape=(24, 7), dtype=float32, numpy=
array([[0.36147627, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.3429366 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.34939995, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.35257494, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.39485145, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.38066387, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.44114256, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.4603167 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.45330796, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.47912365, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.46706894, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.5081953 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.4452976 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.4360156 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.4917237 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.4723147 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.47849187, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.524864  , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.52128404, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.47682068, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.4345901 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.39052632, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.33869517, 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244],[0.3025095 , 0.        , 0.90909094, 0.        , 0.8333333 ,0.3255814 , 0.24390244]], dtype=float32)>, <tf.Tensor: shape=(1,), dtype=float32, numpy=array([0.37805316], dtype=float32)>)

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

III. LSTM模型

这里采用了TensorFlow搭建LSTM实现时间序列预测(负荷预测)中的模型:

class LSTM(keras.Model):def __init__(self, args):super(LSTM, self).__init__()self.lstm = Sequential()for i in range(args.num_layers):self.lstm.add(layers.LSTM(units=args.hidden_size, input_shape=(args.seq_len, args.input_size),activation='tanh', return_sequences=True))self.fc1 = layers.Dense(64, activation='relu')self.fc2 = layers.Dense(args.output_size)def call(self, data, training=None, mask=None):x = self.lstm(data)x = self.fc1(x)x = self.fc2(x)return x[:, -1:, :]

IV. 训练/测试

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

V. 源码及数据

后面将陆续公开~

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

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

    目录 I. 前言 II. 数据处理 III. 模型 IV. 训练/测试 V. 源码及数据 I. 前言 前面已经写过不少时间序列预测的文章: 深入理解PyTorch中LSTM的输入和输出(从input输 ...

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

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

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

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

  4. matlab负荷预测,负荷预测matlab

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

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

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

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

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

  7. Tensorflow搭建LSTM对文本进行分类

    rnn_model.py: #!/usr/bin/python # -*- coding: utf-8 -*-import tensorflow as tfclass TRNNConfig(objec ...

  8. TensorFlow搭建双向LSTM实现时间序列预测(负荷预测)

    目录 I. 前言 II. 原理 III. 模型定义 IV. 训练和预测 V. 源码及数据 I. 前言 前面几篇文章中介绍的都是单向LSTM,这篇文章讲一下双向LSTM. 系列文章: 深入理解PyTor ...

  9. TensorFlow搭建CNN实现时间序列预测(风速预测)

    目录 I. 数据集 II. 特征构造 III. 一维卷积 IV. 数据处理 1. 数据预处理 2. 数据集构造 V. CNN模型 1. 模型搭建 2. 模型训练及表现 VI. 源码及数据 时间序列预测 ...

最新文章

  1. 项目部署不到tomcat中的原因和解决方法
  2. 数据分析软件python 对电脑的要求-数据分析5大软件PK,你最爱哪个?
  3. Linux操作系统笔记——Shell变量
  4. win10电脑安装android,5步教你如何在Win10 PC上安装Android 10
  5. thinkphp 3.2 unionall
  6. 计算机辐射对人体影响吗,电脑屏幕辐射对人体的危害怎么解决?
  7. maven+SSM框架工程搭建
  8. 【ClickHouse 技术系列】- ClickHouse 聚合函数和聚合状态
  9. mysql中常见错误代码汇总
  10. Linux系统日常管理1
  11. Java Web(1)高并发业务
  12. 使用嵌套类/临时类保存数据
  13. calloc与malloc的区别
  14. 计算机无线网络设备有哪些,电脑无线上网设备有哪几种
  15. vue3使用datav
  16. Node.js 使用 zlib 内置模块进行 gzip 压缩
  17. iOS - Xcode提高编译速度,增量编译,ccache
  18. Java——编辑、编译和运行
  19. 一段话描述相控阵论文要点(持续学习更新中...)
  20. 江浙沪的java春招实习综合面经

热门文章

  1. java8时间间隔计算_Java8中Instant和LocalDate来计算时间或者日期间隔
  2. 5、英飞凌-AURIX-TC3X7: PWM实验之使用 GTM -TOM 实现
  3. 灰色关联分析过程及代码实现
  4. 遥感图像彩色合成|以Landsat8数据为例
  5. 穿越晋商百年-体验非遗文化
  6. 爬虫入门task2:bf4、xpath、正则表达式
  7. Homekit智能家居之智能吸顶灯
  8. 文件上传漏洞揭密剖析(一)-文件上传漏洞原理
  9. 复制知乎专栏文章的方法
  10. 计算byte类型127+1