影响6个时序Baselines模型的代码Bug

news2024/9/28 4:42:00

前言

我是从去年年底开始入门时间序列研究,但直到最近我读FITS这篇文章的代码时,才发现从去年12月25号就有人发现了数个时间序列Baseline的代码Bug。如果你已经知道这个Bug了,那可以忽略本文~

这个错误最初在Informer(AAAI 2021 最佳论文)中被发现,是爱丁堡大学的Luke Nicholas Darlow发现。这个问题对时间序列预测领域的一系列广泛研究都有影响,这个Bug影响了包括Patch TST、DLinear、Informer、Autoformer、Fedformer、FiLM在内的经典baseline。

  • PatchTST (ICLR 2023) - Link to affected code

  • DLinear (AAAI 2022 reported version) - Link to affected code

  • Informer (AAAI 2021 Best Paper) - Link to affected code

  • Autoformer (NIPS 2021 reported version) - Link to affected code

  • Fedformer (ICML 2022) - Link to affected code

  • FiLM (ICLR 2023) - Link to affected code

FITS这篇文章发布一个修复方法,以帮助社区在他们的工作中解决这个问题。参考链接:https://anonymous.4open.science/r/FITS/README.md

错误描述

这个错误源于数据加载器中的错误实现。测试数据加载器(test dataloader)使用了drop_last=True那么模型的评估可能会基于不完整的测试数据集,从而导致对模型性能的不准确评估,甚至可能导致不同模型之间比较的不公平。这个问题在使用较大批量大小时尤为明显,因为更大的批量大小更容易导致数据集大小不能被整除的情况。

注:在PyTorch等数据加载框架中,drop_last参数通常用于控制当数据集大小不能被批量大小整除时,是否丢弃最后一个不完整的批量。在训练过程中,为了保持每个epoch迭代次数的稳定性,通常会设置drop_last=True。然而,在测试或验证过程中,为了获得对模型性能的准确评估,应该确保所有测试数据都被使用,因此应该设置drop_last=False

解决方法

在data_factory.py 中,修改代码:

if flag == 'test':    shuffle_flag = False    drop_last = True    batch_size = args.batch_size    freq = args.freq

如下:

if flag == 'test':    shuffle_flag = False    drop_last = False #True    batch_size = args.batch_size    freq = args.freq

在代码 script 文件夹(e.g., ./exp/exp_main.py), 做出如下修改 (约在 290行),from​​​​​​​

preds = np.array(preds)trues = np.array(trues)inputx = np.array(inputx) # some times there is not this line, it does not matter

to:​​​​​​​

preds = np.concatenate(preds, axis=0)trues = np.concatenate(trues, axis=0)inputx = np.concatenate(inputx, axis=0) # if there is not that line, ignore this

作者说可以通过在维度0(即batch大小)上拼接(concatenate)剩余的数据解决问题,而不必丢弃最后一个不完整的batch。

结果更新

图片

已发现的错误主要影响像ETTh1和ETTh2这样的小型数据集的结果。有趣的是,对于其他数据集,如ETTm1上的PatchTST等某些模型,却表现出了增强的性能。FITS(假设是指某个时间序列预测模型)仍然保持了足够好且与其他最先进模型相媲美的性能。

从更新后的结果我们发现,最能打还是Patch TST以及FITS。关于这两篇论文,我之前做过详细的解读,感兴趣可以关注阅读。


大家一定要关注我的公众号【科学最top】,第一时间follow时序高水平论文解读!!!

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

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

相关文章

【C++】模板、宏、命名空间、

十五、C中的模板templates 本部分讨论C中的模板templates 在别的语言中,比如java、c、c#等托管语言中,模板类似泛型的概念,但模板比泛型要强大得多。模板有点像宏,而泛型却非常受限于类型系统以及其他很多因素。同时模板也是一个…

SQLite数据库管理:深入解析创建数据库、表、索引及用户权限与事务管理

目录 一、SQLite数据库创建 1.1 安装SQLite 1.2 创建数据库 1.3 验证数据库 二、创建表 2.1 基本语法 2.2 数据类型 2.3 创建表的示例 2.4 查看表结构 三、创建索引 3.1 创建索引的语法 3.2 创建索引的示例 3.3 索引的维护 四、管理用户权限 4.1 基于文件系统的权…

动态规划算法:12.简单多状态 dp 问题_打家劫舍_C++

目录 题目链接:LCR 089. 打家劫舍 - 力扣(LeetCode) 一、题目解析 题目: 解析: 二、算法原理 1、状态表示 状态表示: 2、状态转移方程 状态转移方程推理: 3、初始化 dp表初始化: 特殊…

C++(学习)2024.9.25

目录 继承 概念 构造函数 1.派生类与基类构造函数的关系 2.解决方案 (1)补充基类的无参构造函数 (2)手动在派生类中调用基类构造函数 1.透传构造 2.委托构造 3.继承构造 3.对象的创建与销毁流程 4.多重继承 (1)概念 …

基于Spring Boot+Vue前后端分离的中医药科普系统设计和实现(协同过滤算法)【原创】

🎈系统亮点:协同过滤算法; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框架Vue.js&am…

利用Langchain开发框架研发智能体Agent的过程,以及相关应用场景

大家好,我是微学AI,今天给大家介绍一下本文主要介绍了利用langchain开发智能体agent的过程。文章首先阐述了项目背景,随后通过给出样例代码,详细展示了执行过程。此外,本文还探讨了该智能体agent在实际应用场景中的运用…

【漏洞复现】灵当CRM multipleUpload.php接口处存在文件上传漏洞

》》》产品描述《《《 灵当CRM致力于为企业提供客户管理数字化、销售管理自动化、服务管理智能化、项目管理一体化的个性化CRM行业解决方案,构建全生命周期的数字化管理体系,实现可持续的业绩增长! 》》》漏洞描述《《《 灵当CRM系统接口multipleUpload.php文件上传漏洞&#x…

认知战认知作战:认知战战略如何玩转东方文化

认知战认知作战:认知战战略如何玩转东方文化 认知战认知作战:认知战战略如何玩转东方文化 关键词:认知战, 东方文化, 精髓元素, 美学引领, 生活方式连接, 战略故事, 艺术融合, 文化符号, 哲学思想, 古建筑灵感, 传统图案, 限量魅力, 沉浸式…

【JAVA开源】基于Vue和SpringBoot的学科竞赛管理系统

本文项目编号 T 047 ,文末自助获取源码 \color{red}{T047,文末自助获取源码} T047,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

小学生管理系统项目

在当今数字化教育的背景下,小学生管理系统应运而生。本项目采用 JSP Servlet JDBC MySQL 的技术组合,并在开发工具 Idea 和 Eclipse 的辅助下,结合数据库管理工具 Navicat 进行开发。 一、系统入口 用户登录入口:为普通用户提…

树上差分详解

零、前言 关于差分: 差分数组详解,一维二维差分-CSDN博客 关于LCA: LCA算法-倍增算法_lca倍增算法-CSDN博客 LCA算法-Tarjan算法_lca数组-CSDN博客 树链剖分——重链剖分,原理剖析,代码详解-CSDN博客 一、树上差…

Docker全家桶:从0到加载本地项目

安装docker,我们选择的是CentenOS 7。 目录 Docker安装 命令 命令别名 数据卷挂载 Dockerfile 容器网络互联 Docker安装 1. 先删除本机旧的或者残留的docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest …

Android13 展锐平台拨号中视频彩铃界面方向未与设备方向一致

背景:拨号中视频彩铃界面方向未与设备方向一致,要求视频彩铃界面方向与设备方向一致,修改视频彩铃显示的地方; 如图所示: 修改: packages/services/Telecomm/src/com/android/server/telecom/VideoProvid…

【GUI设计】基于Matlab的图像特征提取GUI系统(9),matlab实现

博主简介:如需获取设计的完整源代码或者有matlab图像代码项目需求,可联系主页简介提供的方式或者文末的扫码。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于Matlab的图像特征提取GUI系统(9&a…

得物App荣获国家级奖项,正品保障引领潮流电商新风尚

近日,在2024年中国国际服务贸易交易会上,得物App凭借其在科技创新保障品质消费领域的突出成果,再次荣获国家级殊荣——“科技创新服务示范案例”。这是继上海市质量金奖之后,得物App获得的又一个“高含金量”奖项。 作为深受年轻人…

YOLOv8改进 - 注意力篇 - 引入(A2-Nets)Double Attention Networks注意力机制

一、本文介绍 作为入门性篇章,这里介绍了A2-Nets网络注意力在YOLOv8中的使用。包含A2-Nets原理分析,A2-Nets的代码、A2-Nets的使用方法、以及添加以后的yaml文件及运行记录。 二、A2-Nets原理分析 A2-Nets官方论文地址:A2-Nets文章 A2-Net…

美妆电商与AI知识库:构建智能化购物体验

在当今这个数字化时代,美妆电商行业正经历着前所未有的变革。随着人工智能(AI)技术的飞速发展,AI知识库在美妆电商领域的应用日益广泛,不仅重塑了传统的购物模式,还为消费者带来了前所未有的智能化购物体验…

手把手教你找到海外网红合作:海外红人营销渠道

在全球范围内,许多企业寻求与知名网红建立合作关系,以推广产品、共同创作内容或探索其他合作形式。以下是一些有效的方法来实现这一目标: 利用社交媒体平台:社交媒体是寻找海外网红的首选途径。平台如Instagram、YouTube和TikTok拥…

windows10使用bat脚本安装前后端环境之node环境设置

首先需要搞清楚node在本地是怎么安装配置、然后在根据如下步骤编写bat脚本: 思路 1.下载需要安装node版本zip格式包 2.配置环境变量 3.安装插件 可以根据自己需要来定义与配置(如下添加redis与node配置) bat脚本: echo off…