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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/451044.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu24 修改ip地址 ubuntu虚拟机修改静态ip

1. ubuntu 修改地址在/etc/netplan # 进入路径 cd /etc/netplan # 修改文件夹下的配置文件,我的是50-cloud-init.yaml. ye可能你得是20-cloud-init.yaml 2. 修改为: dhcp4: 改为false 192.168.164.50 是我自己分配的ip地址, /24 为固定写法&#xff…

数据结构与算法:堆与优先队列的深入剖析

数据结构与算法:堆与优先队列的深入剖析 堆是一种特殊的树形数据结构,广泛应用于优先队列的实现以及各种高效的算法中,如排序和图算法。通过深入了解堆的结构、不同堆的实现方式,以及堆在实际系统中的应用,我们可以掌…

初级网络工程师之从入门到入狱(四)

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 网络工程师从入门到入狱 前言一、Wlan应用实战1.1、拓扑图详解1.2、LSW11.3、AC11.4、抓包1.5、Tunnel隧道模式解析1.6、AP、…

服务器软件之Tomcat

服务器软件之Tomcat 服务器软件之Tomcat 服务器软件之Tomcat一、什么是Tomcat二、安装Tomcat1、前提:2、下载3、解压下载的tomcat4、tomcat启动常见错误4.1、tomcat8.0 startup报错java.util.logging.ErrorManager: 44.2、java.lang.UnsatisfiedLinkError 三、Tomca…

LVGL模拟器使用以及安装

LVGL模拟器介绍 LVGL模拟器:使用PC端软件模拟LVGL运行,而不需要任何嵌入式硬件。 优点:便于学习、跨平台协同开发。 我这里使用的是CodeBlocks。 环境搭建及工程获取 环境搭建 安装包获取:https://www.codeblocks.org/downlo…

vue后台管理系统从0到1搭建(4)各组件的搭建

文章目录 vue后台管理系统从0到1搭建(4)各组件的搭建Main.vue 组件的初构 vue后台管理系统从0到1搭建(4)各组件的搭建 Main.vue 组件的初构 根据我们的效果来看,分析一下,我们把左边的区域分为一个组件&am…

云计算作业一:问题解决备忘

教程地址:https://blog.csdn.net/qq_53877854/article/details/142412784 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33在root用户下编辑 静态ip地址配置后查看ip与配置不符 注意:确保在这之前已经在VMware的编辑>虚拟网络编…

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

一、单选题 1、下列选项中关于 turtle.color(red) 语句的作用描述正确的是?( ) A. 只设置画笔的颜色为红色 B. 只设置填充的颜色为红色 C. 设置画笔和填充的颜色为红色 D. 设置画笔的颜色为红色,设置画布背景的颜色为红色 正…

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。 java后端举例: PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…

【从零开始的LeetCode-算法】3099. 哈沙德数

如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number)。给你一个整数 x 。如果 x 是 哈沙德数 ,则返回 x 各个数位上的数字之和,否则,返回 -1 。 示例 1: 输入&am…

你真的了解appium吗?

背景:对于QA同学来说,appium应该都不陌生,作为市面上最流行的app自动化测试框架之一,凭借强大的扩展性、跨平台能力和活跃的社区,使得它成为了移动端自动化测试的首选。今天让我们一起重新了解下这个工具! …

关于jmeter设置为中文问题之后无法保存设置的若干问题

1、jemeter如何设置中文模式 Options--->Choose Language--->Chinese(Simplifies), 如此设置后就可显示中文模式(缺点:下次打开还是英文);如下图所示: 操作完成之后: 但是下次重启之后依旧是英文; 2、在jmeter.…

k8s jenkins 2.421动态创建slave

k8s jenkins 动态创建slave 简述使用jenkins动态slave的优势:制作jenkins-slave从节点jenkins-slave-latest:v1配置jenkins动态slave配置 Pod Template配置容器模板挂载卷 测试 简述 持续构建与发布是我们日常工作中必不可少的一个步骤,目前大多公司都采…

机器视觉基础系列四—简单了解背景建模算法

机器视觉基础系列四—简单了解背景建模算法 首先我们应该了解的是背景建模的定义是什么?又有哪些应用场景呢? 背景建模是指通过分析视频序列中的像素值变化情况,从中提取出静态背景部分,并将其用于目标检测、运动跟踪等计算机视觉…

从0开始部署优化虚拟机

一,vm workstation 安装 CentOS-7 忽略 二、查看虚拟机IP ip address 得到 192.168.196.128/24 宿主机进行Ping测试 C:\Users\Administrator>ping 192.168.196.128正在 Ping 192.168.196.128 具有 32 字节的数据: 来自 192.168.196.128 的回复: 字节32 时间…

怎么向新闻媒体发稿?携手谛道文化,轻松实现新闻媒体发稿

在纷繁复杂的信息时代,企业与个人若欲崭露头角,一套行之有效的发稿策略无疑是突破重围的利剑。企业或个人该怎么向新闻媒体发稿呢?谛道文化新闻媒体发稿机构,在软文发布、新闻发布及媒体投放等方面具有卓越策略,无疑为…

I\O进程线程(Day30)

一、学习内容 多线程基础 1> 线程是任务器调度的基本单位,是进程的一个执行单元 2> 一个进程中可以包含多个线程,但是至少要包含一个线程称为主线程 3> 一个进程中的多个线程共享进程的资源,不会为线程再 单独分配内存空间 4> 线…

如何启动hive

检查mysql是否启动 通过Navicat测试mysql是否可以连接 找打hive配置文件所在目录 检查连接mysql的账号密码是否正确,如果不正确就要修改为正确的 初始化hive元数据存储的库:schematool -dbType <database_type> -initSchema 检查mysql中是否创建hive数据库,这里看到hive数…

WebGl 使用缓冲区对象绘制多个点

缓冲区对象是WebGL系统中为一块内存区域&#xff0c;可以一次性地向缓冲区对象中填充大量的顶点数据&#xff0c;然后将这些数据保存在其中&#xff0c;供顶点着色器使用。 1.类型化数组类型 在 webgl 中&#xff0c;需要处理大量的相同类型数据&#xff0c;所以引入类型化数组…

机器学习学习笔记-20241018

继续跟着小土堆去学习机器学习 文章目录 Flatten1. Flatten 的作用2. 何时使用 Flatten3. PyTorch 中的 Flatten Sequentia优化器模型的保存与加载模型的完整训练 Flatten 在神经网络中&#xff0c;Flatten 操作是将高维的输入&#xff08;如二维图像或三维特征图&#xff09…