时间序列预测17:CNN-LSTM 实现用电量/发电量预测

Nissa ·
更新时间:2024-11-13
· 904 次阅读

接上文,本文介绍了CNN-LSTM模型实现单、多变量多时间步预测的家庭用电量预测任务。

文章目录1. CNN-LSTM1.1 CNN 模型1.2 完整代码 1. CNN-LSTM 1.1 CNN 模型

卷积神经网络(CNN)可用作编码器-解码器结构中的编码器。 CNN不直接支持序列输入;相反,一维CNN能够读取序列输入并自动学习显着特征。然后可以由LSTM解码器解释这些内容。CNN和LSTM的混合模型称为CNN-LSTM模型,在编码器-解码器结构中一起使用。CNN希望输入的数据具有与LSTM模型相同的3D结构,尽管将多个特征作为不同的通道读取,但效果相同。

为简化示例,重点放在具有单变量输入的CNN-LSTM上,但是可以很容易地对其进行更新以使用多变量输入,这是一项练习。和以前一样,使用14天的每日总功耗输入序列。编码器为一个简单有效的CNN模型,由两个卷积层和一个最大池化层组成,然后将其结果平坦化。

第一层卷积读取输入序列,并将结果投影到特征图上。第二层卷积在第一层创建的特征图上执行相同的操作,尝试放大其显著特征。每个卷积层使用64个特征图(filters=64),并以3个时间步长的内核大小(kernel_size=3)读取输入序列。最大池化层降采样成原来特征图尺寸的1/4来简化特征图。然后将提取的特征图展平为一个长向量,将其用作解码过程的输入。代码实现:

model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(n_timesteps,n_features))) model.add(Conv1D(filters=64, kernel_size=3, activation='relu')) model.add(MaxPooling1D(pool_size=2)) model.add(Flatten()) 1.2 完整代码

完整代码以单变量多步预测演示,要想修改多变量,只需要修改sliding_window()forecast() 函数即可,可以参考上一篇文章:



cnn lstm 时间序列

需要 登录 后方可回复, 如果你还没有账号请 注册新账号