基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)

 一、项目简介

本项目实现了基于二维卷积网络多特征输入的的风速预测(使用了数据集中的8个特征作为输入),其效果明显比本人之前文章所做的一维多特征效果好。

二、二维卷积网络的优势

我们都知道二维卷积用于图片数据的处理具有非常大的优势,相比于一维卷积,二维卷积可以提取更复杂的特征,比如在风速预测项目中,一维卷积只能提取其时序特征,但是二维卷积可以同时考虑时间和空间维度上的特征,所提取的特征具有良好的时空相关性,其中空间维度特征指的是不同特征之间的相对位置关系。对于多通道数据,比如风速预测中的多特征数据,二维卷积可以同时处理不同通道的特征信息,每个通道可以被看作是输入数据的一个特征维度,二维卷积网络可以同时对多个通道进行卷积操作,从而更好地捕捉不同通道之间特征的关系

三、实验数据

1、实验使用了风速预测数据集wind_dataset.csv中"WIND","IND","RAIN","IND.1","T.MAX","IND.2","T.MIN","T.MIN.G"的这八个特征进行风速预测。滑窗的步长为20,即前20天的8个特征(每份共8×20个数据)来预测第21天的风速。【数据集中的【NA】空值被置为0。】

2、图中红色框核箭头是卷积的示意图,红色框是本项目使用的卷积核大小为3×3,箭头是卷积的方向,步长默认为1,padding为1。

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第1张图片

四、实验环境

平台:window11

语言:python3.9

编译器:Pycharm

Pytorch:1.13.1

网络运行过程

模型代码如下,该模型加入了Dropout层用于防止过拟合,但是最后的结果还是有些过拟合,但是不影响模型效果。【本人尝试了去掉dropout层似乎效果更好,有兴趣的同学可以去掉跑一下看看】。模型使用了三层卷积和两个全连接层,模型流程如图所示:

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第2张图片

该模型的计算过程和参数如下所示: 

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第3张图片

 其他数据集划分等代码可以参考之前写的一篇文章(1DCNN单特征风速预测),基础代码都大同小异,在输入特征维度上有所改变。

五、项目运行环境

window11+python3.9+pytorch1.31.1

 六、项目文件及运行说明

train.py 里面是训练过程的通用代码,其他项目也可以在它的基础上修改
Config.py 里面是项目所需要用到的参数
DataSplit.py 实现数据划分的函数
model_2DCNN.py 训练的模型配置
wind_dataset.csv 风速预测的数据集
test_wind_2DCNN.py 运行文件,配置好训练的参数,进行训练并在里面绘图
loss.csv训练过程产生的损失
loss_draw.py 根据训练输出的loss.csv文件绘制loss损失
cnn.pth 是训练过程中生成的模型参数,可用于做测试数据的预测
test_pth.py 根据生成的cnn.pth模型参数对测试数据进行预测

*.png文件是预测结果可视化

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第4张图片

七、部分模型代码展示

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第5张图片

、预测效果展示

代码实现功能,实现风速预测、独立保存loss参数、独立绘制loss曲线、风速测试集独立预测等功能,详细操作见上述文件说明。以下是模型的训练过程和效果展示。

以下是加入了dropout层的效果:

1、训练epoch=100产生的loss参数储存到loss_csv文件中

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第6张图片

2、训练epoch=100的loss曲线:

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第7张图片

 3、训练epoch=100的训练集风速预测曲线(前两百个数据点):

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第8张图片

4、  训练epoch=100的测试集风速预测曲线(前两百个数据点):

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第9张图片

以下是没有加入dropout层的效果:

1、训练epoch=100的loss曲线:

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第10张图片

  2、训练epoch=100的训练集风速预测曲线(前两百个数据点):

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第11张图片

 3、训练epoch=100的测试集风速预测曲线(前两百个数据点):

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第12张图片

九、总结与资源

若有朋友需要源码,可以关zhu【科研小条】gong众号,回复【多特征二维卷积风速预测】,即可获得。

基于二维卷积网络(2DCNN)多特征输入的风速预测项目实战(pytorch)(多特征)_第13张图片

你可能感兴趣的:(pytorch,深度学习,神经网络)