一、项目简介

本项目是基于PyTorch深度学习框架实现一个二维卷积网络来进行风速预测的项目,网络的输入是风速的八个特征,用前50天的8个特征数据进行预测后5天的风速,适用于多特征输入多步长输出(多输出)的预测问题。【输入是(batch_size, 1, 50, 8),输出是(batch_size, 5)】【本项目的代码文件分模块整理,包含模型构建、数据划分、训练过程等模块都清晰分明】

二、实验数据集及实验说明

实验使用了风速预测数据集wind_dataset.csv中中"WIND","IND","RAIN","IND.1","T.MAX","IND.2","T.MIN","T.MIN.G"的这八个特征进行风速预测。图中的数据划分:以滑窗的方式进行数据划分,滑窗大小为20(实验用的是50),输入特征为8,输入序列大小为20(实验中为50),输出为5,每次滑窗的第后5天的风速值为预测的标签值。数据展示如下:

三、实验环境

平台:Window 11;语言:python3.9;编译器:Pycharm;框架:Pytorch:1.13.1

四、实验内容及部分代码展示

1、2DCNN模型构建

model.py定义了项目用到的网络模型,本项目用到的模型是三层的二维卷积网络、relu激活函数、两层全连接层进行输出5天的风速预测结果,为防止过拟合还增加了dropout层。

2、train.py 训练通用模板

训练过程集成到fit函数里面,包含测试集训练过程和验证集计算过程,是项目训练过程的通用代码,其他项目也可以在它的基础上修改后使用。

3、Config.py 参数定义

config中定义了项目的基本参数,可以在里面修改训练参数。

4、train_wind_CNN.py 训练文件

该py文件实现整体训练流程并做绘图操作。依次实现加载数据、样本和标签制作、划分训练集测试集、数据转化为Tensor、形成数据更迭器、载入模型、定义损失、定义优化器、开始训练、损失可视化、显示预测结果。

5、test_pth.py 模型训练后的测试文件

采用模型训练完成后产生的的pth参数文件对测试数据进行预测,可以展示模型预测效果,本项目还是用训练的数据作为该文件的测试数据,前面的处理过程类似train_wind_CNN.py所示。

6、loss_draw.py 模型训练后的loss绘图

将训练后产生并收集的loss.csv展示出来,也就是损失图,红框可调展示范围

7、predict_plot_pth.py 预测后5天的数值并可视化 

用某前50天风速数据预测后5天风速并绘图和可视化具体的数值

五、实验结果及分析

1、训练过程

这是训练过程中的可视化,会输出train_loss和test_loss

2、loss损失图

该损失是训练了200个epoch的损失图:(由于测试集过拟合严重我就加了Dropout层,过拟合现象好多了。

3、预测效果展示(预测图)

train-训练epoch=200后的风速预测效果train如下,展示前两百天的预测效果::

test-训练epoch=200后的风速预测效果如下(使用pth参数文件进行测试预测),展示前两百天的预测效果):(过拟合还是有点严重,建议加上归一化试试看)

4、预测效果展示(预测具体的某50天)

使用如下图所示的前50天风速,预测后5天的风速值

下图中黑色为历史50天风速,垂直红色是预测开始的地方,绿色是真实值,蓝色是预测值

六、总结及资源

若有朋友需要可运行的源码和数据集,可以guan注【科研小条】gong众号,回复【2DCNN多特征多步风速预测】,即可获得。


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐