Matlab终于能够实现Transformer预测了

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

目录

原理简介

数据介绍

结果展示

完整代码


今天给小伙伴带来一期利用Matlab实现Transformer预测的代码。以往Transformer等模型只能在Python中实现,但是Python需要配置环境,且不同版本差异较大,难以直接在电脑上运行,非常不适合新手小白。同时,部分Python代码非常混乱,使用的库也不统一,真假难辨。

相比于传统LSTM、GRU等模型,Transformer模型也更加新颖,容易受到审稿人的喜爱。因此,本期推出Matlab版本的Transformer预测模型,代码非常清晰易懂,也跟以前的形式一样,直接Excel替换数据即可!无需更改代码!

原理简介

Transformer是2017年由Google团队针对机器翻译任务所提出来的模型,它没有采用卷积神经网络或者循环神经网络的结构,而是一个完全基于自注意力机制的模型,主要结构为位置编码、编码器、解码器和前馈网络。其优势就是高度并行化提高计算效率,可以捕获长时间依赖关系,更好地解决长时依赖问题。

Transformer主要由3个部分组成:位置嵌入模块、多头注意力模块和前馈网络模块。为增强长序列中的位置信息,需引入位置嵌入机制,位置编码方程定义为:

式中d为节点负荷的嵌入大小,i为第i个时间步长。自注意力网络的输入需加入位置编码变量:

式中:Et∈R^T×d表示单个节点负荷信息。随后使用线性变换矩阵Wq,Wk,Wv计算Q,K,V,即:

式中:Q和K为查询向量和键向量,用于计算数据间的相关度,V是表征历史数据的值向量。

Transformer的多头注意力机制可突出特征向量间的重点特征,注意力计算公式为:

式中:d为模型维度;h为注意力头数。

数据介绍

本期推文采用的案例数据是2022年1月份的某地光伏功率数据,是一个典型的多变量时间序列数据集。

特征包括气温, 方位角, 云层不透明度, 露点温度, DHI, DNI, GHI, GTI, GTI, 大气可降水量, 相对湿度, 降雪深度, 地面气压, 高度10m风向, 高度10m风速, 天顶角,输出即为实际功率一列。

这边已经帮小伙伴们完成了所有的数据预处理工作,包括缺失值处理、重复值处理等等。同时,由于光伏白天不发电,因此作者已经把功率为0的行都删除了!

更换自己的数据时,只需最后一列放想要预测的列,其余列放特征即可,无需更改代码,非常方便!

结果展示

设置最大训练次数为200次,初始学习率为0.001,最大位置编码长度为256,自注意力机制中的头数为4,每个头的键的通道数为4*32,利用上文2022年1月的光伏功率数据集进行光伏功率预测,得到的结果如下所示:

测试集预测效果图:

训练集预测效果图:

网络结构图:

回归拟合图:

差直方图:

预测结果显示:

可以看到,Transformer在该光伏功率数据集上的预测精度还是不错的,R2达到了0.999,如果再做几个对比模型,那么文章不就蹭蹭发了吗~

以上结果展示中所有图片,作者都已精心整理过代码,都可以一键运行main直接出图!不信的话可以看下面文件夹截图,非常清晰明了!

适用平台:Matlab2023b及以上,没有的文件夹里已经免费提供安装包,直接下载即可!

完整代码

         点击下方小卡片,再后台回复关键字,不区分大小写:

Transformer

         其他更多需求或想要的代码,均可点击下方小卡片后,再后台私信,看到后会秒回~

         更多代码链接:更多代码链接

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值