lstm和informer和gru模型对比

news2025/1/13 3:13:46

1 介绍

本文使用数据集,对三个模型进行了对比,代码使用python完成,通过对比,发现lstm>gru>informer.

2 数据读取

使用降水量数据集,第一列表示降水,第二列表示出水量。
在这里插入图片描述

  • 输入是两个特征
  • 输出是一个特征
  • 输入是多时间步,例如,用1-12做输入。
  • 输出也是多时间步,例如,预测13-18时间段。
    lstm和gru的数据读取代码是一样的,如下所示:
class MyDatasetLstm(Dataset):
    def __init__(self, df, seq_len=96, pred_len=24):
        self.seq_len = seq_len
        self.pred_len = pred_len
        self.__read_data__(df=df)

    def __read_data__(self, df):
        self.data_x = df
        self.data_y = df[:,-1]

    def __getitem__(self, index):
        s_begin = index
        s_end = s_begin + self.seq_len
        r_begin = s_end
        r_end = r_begin + self.pred_len

        seq_x = self.data_x[s_begin:s_end]
        seq_y = self.data_y[r_begin:r_end]

        return seq_x, seq_y

    def __len__(self):
        return len(self.data_x) - self.seq_len - self.pred_len + 1

但是informer的数据读取不一样,因为加入了label维度,所以代码如下所示:

class MyDatasetInformer(Dataset):
    def __init__(self, df, seq_len=96, label_len=48, pred_len=24):
        self.seq_len = seq_len
        self.label_len = label_len
        self.pred_len = pred_len
        self.__read_data__(df=df)

    def __read_data__(self, df):
        self.data_x = df
        self.data_y = df

    def __getitem__(self, index):
        s_begin = index
        s_end = s_begin + self.seq_len
        r_begin = s_end - self.label_len
        r_end = r_begin + self.label_len + self.pred_len
        seq_x = self.data_x[s_begin:s_end]
        seq_y = self.data_y[r_begin:r_end]

        return seq_x, seq_y

    def __len__(self):
        return len(self.data_x) - self.seq_len - self.pred_len + 1

3 搭建模型

这一块主要参考了github上的代码,做了些修改,因为原来的informer有timebedding这个维度,但是我们的数据没有这个维度,所以把这个去掉就行,剩下的就是encoder和decoder,然后再拼接。
lstm和gru就用很简单的搭建方式就行,torch自带的,很容易。

4 训练和预测

训练和预测时,informer就是因为多了个label,所以读取方式有点不一样,代码如下所示,并且再测试时,要取label之后的,才是真正的预测值。

  if model_name == "informer":
        # Informer训练方式
        batch_x = batch_x.float().to(device)
        batch_y = batch_y.float()
        dec_inp = torch.zeros([batch_y.shape[0], pred_len, batch_y.shape[-1]]).float()
        dec_inp = torch.cat([batch_y[:, :label_len, :], dec_inp], dim=1).float().to(device)

        pred = model(batch_x, dec_inp)
        pred = pred[:, -pred_len:, :].to(device)
        true = batch_y[:, -pred_len:, :].to(device)
        loss = criterion(pred, true)
    else:
        # lstm \ gru 训练方式
        batch_x = batch_x.float().to(device)
        batch_y = batch_y.float().to(device)
        pred = model(batch_x)
        loss = criterion(pred, batch_y)
        # 如有需要,添加qq 964083210

5 结果对比

在这里插入图片描述
还有mse、rmse、r2等指标,还有多种预测方式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度视觉搜索架构演进实践

本文深入探讨百度视觉搜索在快速发展的业务及技术背景下,如何通过持续的技术创新和架构升级强化自身的竞争力和适应性,支撑业务健康高效迭代。本文介绍了我们如何通过技术栈升级、架构能力提升以及稳定性建设,来实现全链路架构的演进。借助Go…

MySQL 9从入门到性能优化-二进制日志

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

matlab输入汉字时,输入法在左上角显示解决办法

解决方法: 输入汉字时输入法在左上角显示(如图1),将鼠标放在竖着的小点处拖动到工作区合适位置(如图2),下次输入汉字时输入法便在图2处显示。 图1 图2

前端小技巧-网页点击动画效果

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>点击触发动画效果</title><link rel"stylesheet" href"styles.css" /></head><style>/* styles.css */…

【C++ 贪心 滑动窗口 前后缀分解】948. 令牌放置|1762

本文涉及的基础知识点 贪心 决策包容性 C算法&#xff1a;滑动窗口及双指针总结 反向双指针 C前后缀分解 LeetCode948. 令牌放置 你的初始 能量 为 power&#xff0c;初始 分数 为 0&#xff0c;只有一包令牌以整数数组 tokens 给出。其中 tokens[i] 是第 i 个令牌的值&…

C语言 | Leetcode C语言题解之第473题火柴拼正方形

题目&#xff1a; 题解&#xff1a; bool makesquare(int* matchsticks, int matchsticksSize) {int totalLen 0;for (int i 0; i < matchsticksSize; i) {totalLen matchsticks[i];}if (totalLen % 4 ! 0) {return false;}int len totalLen / 4, n matchsticksSize;i…

【实战经验】互联网信息服务域名注册和备案-指导指南 v2

一、业务场景 个人/企业/组织&#xff08;ICP&#xff09;在提供互联网信息服务&#xff08;例&#xff1a;开通网站、小程序&#xff09;之前&#xff0c;应当向为其接入互联网服务的互联网服务提供商&#xff08;ISP&#xff09;&#xff08;腾讯、阿里云&#xff09;提交相关…

【JavaEE初阶】深入透析文件-IO关于文件内容的操作(四种文件流)

前言 &#x1f31f;&#x1f31f;本期讲解关于CAS的补充和JUC中有用的类&#xff0c;这里涉及到高频面试题哦~~~ &#x1f308;上期博客在这里&#xff1a;【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&…

初识算法 · 滑动窗口(3)

目录 前言&#xff1a; 水果成篮 题目解析 算法原理 算法编写 找到字符串中所有字符异位词 题目解析 算法原理 算法编写 前言&#xff1a; ​本文的主题是滑动窗口&#xff0c;通过两道题目讲解&#xff0c;一道是水果成篮&#xff0c;一道是找到字符串中的所有字母异…

(Linux驱动学习 - 11).Input 子系统

一.Input 子系统的定义 input 就是输入的意思&#xff0c;因此 input 子系统就是管理输入的子系统&#xff0c;和 pinctrl、 gpio 子系统 一样&#xff0c;都是 Linux 内核针对某一类设备而创建的框架。比如按键输入、键盘、鼠标、触摸屏等 等这些都属于输入设备&#xff0c;不…

聊聊 Facebook Audience Network 绑定收款账号的问题

大家好&#xff0c;我是牢鹅&#xff01;本篇是Facebook开发者系列的第五篇&#xff0c;最近看见好多群友在群里问这个&#xff0c;说Facebook的变现账户在绑定国内的银行账户时&#xff08;有些用户反馈就算不是国内的卡也会出现该问题&#xff09;&#xff0c;显示“无法绑定…

05 django管理系统 - 部门管理 - 修改部门

04我们已经实现了新增部门的功能&#xff0c;下面开始修改部门模块的实现。 按道理来说&#xff0c;应该是做成弹框样式的&#xff0c;通过ajax悄咪咪的发数据&#xff0c;然后更新前端数据&#xff0c;但是考虑到实际情况&#xff0c;先用页面跳转的方式实现&#xff0c;后面…

【含文档】基于Springboot+Vue的旅游信息管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

QSettings 使用详解

QSettings 类是 Qt 框架中的一个重要类&#xff0c;用于存储和访问应用程序的设置和配置。它提供了一种简单的方法来读取和写入应用程序的配置数据&#xff0c;支持多种存储格式&#xff0c;包括 Windows 注册表、INI 文件和 XML 文件等。 主要功能 1. 存储设置&#xff1a;可…

PDF在线编辑器推荐!一站式解决PDF编辑难题!

当你要对PDF文件进行编辑时&#xff0c;一款PDF编辑器就十分重要。今天小编就为大家推荐几款PDF编辑器&#xff0c;有在线的&#xff0c;也有本地的&#xff0c;大家可以根据自己的需求体验选择&#xff01; Foxit PDF Edit 直达链接&#xff1a;editor.foxitsoftware.cn Fo…

大舍传媒-海外媒体发稿:为您打造全球品牌影响力

大舍传媒-海外媒体发稿&#xff1a;为您打造全球品牌影响力 在当今全球化的商业环境中&#xff0c;企业若想在激烈的市场竞争中脱颖而出&#xff0c;拓展全球市场&#xff0c;提升品牌影响力至关重要。大舍传媒的海外媒体发稿服务&#xff0c;正是您实现这一目标的得力助手。 …

某宝228滑块 请求头 bx_pp、bx_et、以及slide接口中参数n值。90%左右的成功率,轨迹不会爆,需要的联系

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关。 本文章未经许可禁止转载&#xff0c;禁止任何修改后二次传播&#xff0c;擅自使用本文讲解的技术而导致的任何意外&#xff…

PostgreSQL学习笔记:学习总结

一、架构 1. 常驻进程&#xff08;Postmaster&#xff09; 管理后端的常驻进程&#xff0c;默认监测UNIX Domain Socket和TCP/IP&#xff08;Windows等一部分平台只监测TCP/IP&#xff09;的5432端口&#xff0c;等待前端连接处理&#xff0c;监测的端口号可在设置文件postgre…

基于腾讯云的AI视频课程制作工具

1. 需求信息 1.1 需求背景 讲师们在制作视频的过程中&#xff0c;发现录制课程比较麻烦&#xff0c;要保证环境安静&#xff0c;保证录制过程不出错&#xff0c;很容易反复重复录制&#xff0c;为了解决重复录制的工作量&#xff0c;想通过 ai 课程制作工具&#xff0c;来解决…

注册安全分析报告:北外网校

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…