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

前言

我是从去年年底开始入门时间序列研究,但直到最近我读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.mzph.cn/web/53779.shtml

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

相关文章

web入门

什么是spring 特点:配置繁琐,入门难度大,提出了springboot 1.springbootweb入门例子 2.http协议 2.1概述 2.2请求协议 由三部分组成:请求行、请求头、请求体 2.3响应协议 2.4协议解析

云桌面+数字人:开启直播新纪元

随着科技的飞速发展,直播行业也在不断变革。云桌面和数字人直播作为新兴力量,正逐渐崭露头角,受到了广泛关注。 云桌面技术的出现,为直播带来了全新的可能性。它不再依赖传统的本地硬件设备,而是通过云计算提供弹性可…

我与Linux的爱恋:命令行参数|环境变量

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:Linux的学习 文章目录 一.命令行参数二.环境变量1.环境变量的基本概念2.查看环境变量的方法3.环境变量相关命令4.环境变量的组织方式以及获取环境变量的三种方法 环境变量具有全局属性 一…

C++map与set

文章目录 前言一、map和set基础知识二、set与map使用示例1.set去重操作2.map字典统计 总结 前言 本章主要介绍map和set的基本知识与用法。 一、map和set基础知识 map与set属于STL的一部分,他们底层都是是同红黑树来实现的。 ①set常见用途是去重 ,set不…

数据技术进化史:从数据仓库到数据中台再到数据飞轮的旅程

随着大数据时代的到来,数据已经成为企业的核心资产之一。在过去几十年间,数据技术也随之不断演进,从早期的数据仓库到近年来热门的数据中台,再到正在快速发展的数据飞轮概念,每一步都是技术革新的体现。 一、数据仓库&…

电商跨境电商商城系统/网上商城接口/电商数据接口详情

电商API接口背景:电商运营中,数据分析这项工作越来越重要,许多品牌方也越来越热衷去做电商数据分析。不过,全面的数据该如何获取呢,此时,电商数据接口的重要性便凸显出来了。 电商API数据接口主要有以下特…

外包干了两年,收获真不少...

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

深度伪造语音检测(Deepfake Speech Detection, DSD)全面概述

近期,深度学习技术和神经网络在生成型人工智能领域已取得重大突破。如今,关键的通信媒介,如音频、图像、视频和文本,均能实现自动生成,并广泛应用于诸多领域,包括聊天机器人系统(如ChatGPT&…

Kettle9连接mysql8.0.36失败处理

一、问题描述 kettle作为数据转换同步的工具,使用java开发,连接数据库使用jar的驱动包,比如oracle连接使用ojdbc8.jar,mysql连接使用mysql-connect-java-8.0.*,但是截止目前mysql8.0.33到8.0.36在官网是没有mysql驱动包的&#x…

IPD如何解决产品开发的典型问题

IPD(Integrated Product Development,集成产品开发)是一种领先的、成熟的产品开发的管理思想和管理模式。它是根据大量成功的产品开发管理实践总结出来的,并被大量实践证明的高效的产品开发模式。从汉捷咨询二十多年来为五百多家企…

18724 二叉树的遍历运算

### 思路 1. **递归构建树**: - 先序遍历的第一个节点是根节点。 - 在中序遍历中找到根节点的位置,左边部分是左子树,右边部分是右子树。 - 递归构建左子树和右子树。 2. **递归生成后序遍历**: - 递归生成左子树的…

飞睿智能实时雷达活体探测传感器模块,智能家居静止检测实时感知人员有无

随着科技的飞速发展,我们的生活正在经历着未有的创新。在这个创新的浪潮中,实时雷达活体探测传感器模块的技术正逐渐崭露头角,以其独特的优势为我们的生活带来安全与便捷。今天,我们就来详细探讨一下这项技术,看看它是…

【DP解密多重背包问题】:优化策略与实现

文章目录 什么是多重背包问题?多重背包问题的数学模型 例题多重背包问题Ⅰ多重背包问题Ⅱ 总结 什么是多重背包问题? 多重背包问题是一个经典的组合优化问题。与标准背包问题不同,在多重背包问题中,每种物品可以选择多个&#xf…

蓝桥杯15届C/C++B组省赛题目

问题描述 小蓝组织了一场算法交流会议,总共有 5050 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 77 个人,这 77 人彼此之间没有进行握手 (但这 77 人与…

langchain v0.3更新了什么?

版本改动 这是具体改动的链接 官方blog首先说明了: 所有软件包已在内部从 Pydantic 1 升级到 Pydantic 2。 所有软件包都完全支持在用户代码中使用 Pydantic 2,而无需使用 langchain_core.pydantic_v1 或 pydantic.v1 等桥接程序。 由于 Pydantic 1 已…

【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))

Host 表示服务器主机的地址和端口号 URL 里面不是已经有 Host 了吗,为什么还要写一次? 这里的 Host 和 URL 中的 IP 地址、端口什么的,绝大部分情况下是一样的,少数情况下可能不同当前我们经过某个代理进行转发。过程中&#xf…

2024年项目经理不能错过的开源项目管理系统大盘点:全面指南

在2024年,随着项目管理领域的不断发展,开源项目管理系统成为了项目经理们提升工作效率的利器。本文将全面盘点几款备受推荐的开源项目管理系统,帮助项目经理们找到最佳选择,不容错过。 在项目管理日益复杂的今天,开源项…

腾讯云点播及声音上传

文章目录 1、开通腾讯云点播2、获取腾讯云API密钥3、完成声音上传3.1、引入依赖3.2、参考:接入点地域3.3、参考:任务流设置3.4、首先修改配置:3.4.1、 3.5、TrackInfoApiController --》 uploadTrack()3.6、VodServiceImpl --》 uploadTrack(…

SOLIDWORKS Flow Simulation对几何模型都有哪些要求?

SOLIDWORKS Flow Simulation 是一款集设计与仿真于一体的流体仿真软件(EFD,CFD),以其操作简便、建模快捷和快速收敛等优点,深受广大初学者的喜爱。 在模型建立方面,Flow Simulation 能够直接利用 SOLIDWOR…

项目实战:Qt+OSG爆破动力学仿真三维引擎测试工具v1.1.0(加载.K模型,子弹轨迹模拟动画,支持windows、linux、国产麒麟系统)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/142454993 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…