多尺度、多特征输入的风速预测项目实战(pytorch),基于一维卷积网络(1DCNN,多特征)

该项目基于一维卷积网络进行风速预测,利用8个特征作为输入,包括WIND,IND等,通过20天的数据预测第21天的风速。网络结构包含多个卷积层和线性层,使用Python和PyTorch框架实现。训练结果显示在200个epoch后,模型在训练集和验证集上均有良好表现。
摘要由CSDN通过智能技术生成

 一、项目简介

在原风速预测的项目基础上,本项目进行了多特征输入的的风速预测(使用了数据集中的8个特征作为输入),使用的网络仍是一维卷积网络。

 二、实验数据

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

 三、网络运行过程

网络的input_shape=[64, 8, 20](其中64是batch_size, 8是输入的特征,20是滑窗步长即取20天的数据),网络的结构和输出如下图所示。第一个卷积输出的通道数为10,第二个卷积输出通道数为20,第三个是30,最后用linear层输出一个预测风速的结果。(卷积核的大小均为3)

 四、多特征的一维卷积网络运行的原理和过程

我们很容易理解,一维数据进行一维卷积,就是用一个一个如1×3的卷积核对一维数据进行滑动卷积。那么本项目中输入的是8维的数据特征,输入假设为[8, 20],假设卷积通道为1,步长为1就会有8个同一类的卷积核对8个维度特征数据分别进行卷积,然后对8个维度卷积后的特征进行叠加,输出为[1,18]。如果通道数为10,就有10个不同类的卷积核进行上述的操作,则输出[10, 18]。下面是我自己对这个计算的理解(如有不对敬请指出,互相学习)

 每次卷积的计算过程,以通道1的计算为例子,假设步长是1,如图:

 以上理解是本人对一维卷积的理解,不一定准确,欢迎互相交流。

 五、项目运行环境

window11+python3.9+pytorch1.31.1

 六、项目文件及运行说明

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

七、部分模型代码展示

八、预测效果展示

训练epoch=200的loss曲线:

训练epoch=200的训练集预测效果:

训练epoch=200的验证集预测效果:

八、总结与资源

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值