首页 > 其他分享 >Informer复现+实现自己的数据集

Informer复现+实现自己的数据集

时间:2024-06-06 15:33:25浏览次数:21  
标签:编码器 预测 复现 defaults 序列 Informer 数据 输入

笔记简介

笔记:记录一下实现Informer时序预测的过程,同时加注一些要点,并加上构建自己数据集进行预测的过程。

内容:

1、Informer论文解读、复现

2、构建自己的数据集

3、利用Informer对数据集进行预测

一、Informer论文

摘要:许多实际应用需要长序列时间序列的预测,例如电力消耗计划。长序列时间序列预测(LSTF)要求模型具有较高的预测能力,即能够准确有效地捕捉输出与输入之间的长期依赖耦合。最近的研究表明,Transformer可以提高预测能力。然而,然而,Transformer存在几个严重的问题,这些问题使它无法直接应用于LSTF,包括二次时间复杂度、高内存使用和编码器-解码器架构的固有限制。为了解决这些问题,我们为LSTF设计了一个高效的基于Transformer的模型,名为Informer,它具有三个显著的特征:1、ProbSparse自注意力机制,该机制在时间复杂度和内存使用上达到O(L \log L) ,并且在序列依赖对齐方面具有相当的性能。2、自注意力提取通过将级联层输入减半来突出主导注意力,并有效地处理超长输入序列。3、生成式解码器虽然在概念上简单,但它可以通过一次前向运算而不是一步一步地预测长时间序列序列,从而大大提高了长序列预测的推理速度。在四个大规模数据集上的大量实验表明,Informer算法显著优于现有方法,为LSTF问题提供了一种新的解决方案。

论文地址:https://arxiv.org/abs/2012.07436

官方代码地址:https://github.com/zhouhaoyi/Informer2020

二、Informer网络结构

左:编码器接收大量长序列输入(绿色序列)。用ProbSparse自注意力机制代替了典型的自注意力机制。蓝色梯形是自注意力提取操作,用于提取主导注意力,大幅减少网络规模。层堆叠副本增加了鲁棒性。右:解码器接收长序列输入,将目标元素填充为零,测量特征图的加权注意力组成,并以生成风格即时预测输出元素(橙色序列)。

Informer编码器中的单个堆栈。(1)水平堆栈代表图1中的单独一个编码器副本。(2)所呈现的栈是接收整个输入序列的主栈。然后第二个堆栈取输入的一半,随后的堆栈重复。(3)红色层是点积矩阵,通过对每一层进行自注意提取,得到级联下降。(4)将所有堆栈的特征映射连接起来作为编码器的输出。

三、数据集Database

3.1 ETTh1 - Data

官方数据集地址:https://github.com/zhouhaoyi/ETDataset

百度云盘:https://pan.baidu.com/share/init?surl=wyaGUisUICYHnfkZzWCwyA 提取码:6gan

数据格式: [ date  特征1 …………特征 6 目标特征]

3.2 MyData

格式与ETTh1.csv保持一致,特征量可以更改。读取的时间序列编码方式可以更改,具体见下方参数说明。由于本人项目原因,个人数据集暂时不公开。

代码内修改方法:在main的data_parser添加自己的数据集数据,与ETTh1保持一致的写法如下:

四、代码说明

4.1 参数设置以及相关说明

Parameter nameDescription of parameter
model实验模型。这可以设置为informer, informerstack, informerlight(待定)
dataThe dataset name
root_path数据文件的根路径 (defaults to ./data/ETT/)
data_path数据文件名 (defaults to ETTh1.csv)
features预测任务(默认为M)。可以设置为M、S、MS (M:多元预测多元,S:单变量预测单变量,MS:多元预测单变量)。
targetS或MS任务中的目标特性(默认为OT)
freq

时间特征编码的频率(默认为h)。可以设置为s,t,h,d,b,w,m (s:秒,t:分钟,h:小时,d:每天,b:工作日,w:每周,m:每月)。你也可以使用更详细的频率,比如15分钟或3小时

注:上述时间特征可以在此处修改

checkpoints模型保存 (defaults to ./checkpoints/)
seq_lenInformer编码器的输入序列长度 (defaults to 96)
label_lenInformer解码器的起始令牌长度 (defaults to 48)
pred_len预测序列长度 (defaults to 24)
enc_in编码器输入特征size (defaults to 7)
dec_in解码器输入特征size (defaults to 7)
c_out输出特征 size (defaults to 7)
d_model模型尺寸 (defaults to 512)
n_heads头数量 (defaults to 8) 注:如果速度太慢调小,精度不变的情况下
e_layers编码器层数 (defaults to 2)
d_layers解码器层数 (defaults to 1)
s_layers堆栈编码器层数 (defaults to 3,2,1)
d_fffcn尺寸 (defaults to 2048)
factor概率稀疏因子 (defaults to 5)
paddingPadding type(defaults to 0).
distil是否在编码器中使用蒸馏,使用此参数意味着不使用蒸馏 (defaults to True)
dropoutThe probability of dropout (defaults to 0.05)
attnAttention used in encoder (defaults to prob). This can be set to prob (informer), full (transformer) 注:注意力机制
embed时间特征编码方式 (defaults to timeF). This can be set to timeFfixedlearned
activationActivation function (defaults to gelu) 激活函数
output_attentionWhether to output attention in encoder, using this argument means outputing attention (defaults to False)
do_predict是否预测看不见的未来数据,使用这个意味着做出预测 (defaults to False)
mixWhether to use mix attention in generative decoder, using this argument means not using mix attention (defaults to True)
colsCertain cols from the data files as the input features
num_workersThe num_works of Data loader (defaults to 0) Windows建议不要修改
itrExperiments times (defaults to 2) 重复训练次数
train_epochsTrain epochs (defaults to 6) 训练轮数
batch_sizeThe batch size of training input data (defaults to 32)
patienceEarly stopping patience (defaults to 3) 早停
learning_rateOptimizer learning rate (defaults to 0.0001)
desExperiment description (defaults to test)
lossLoss function (defaults to mse)
lradjWays to adjust the learning rate (defaults to type1)
use_ampWhether to use automatic mixed precision training, using this argument means using amp (defaults to False)
inverseWhether to inverse output data, using this argument means inversing output data (defaults to False) 归一化输出数据,如果输出的和你输入的不一样,改成True
use_gpuWhether to use gpu (defaults to True)
gpuThe gpu no, used for training and inference (defaults to 0)
use_multi_gpuWhether to use multiple gpus, using this argument means using mulitple gpus (defaults to False)
devicesDevice ids of multile gpus (defaults to 0,1,2,3)

4.2 代码结构

五、代码运行与结果分析

main_informer.py: error: the following arguments are required: --model, --data

将 required =  True 删掉

数据集对应好后即可直接运行(以下结果为个人自建数据集)

实现结果:训练10个Epoch,输入序列数量远大于输出序列时,基本没有滞后性,且预测性能较好。

当预测序列数量接近于输入时,会出现预测结果偏差较大。

当预测序列数量远大于输入时,会出现末端预测结果直接平缓,基本上预测不出特征。

总结:

长期预测,建议使用其他模型。个人复现结果来看Informer适合于短期预测。

标签:编码器,预测,复现,defaults,序列,Informer,数据,输入
From: https://blog.csdn.net/MarkKrind/article/details/139499069

相关文章

  • 【爬虫+数据清洗+数据可视化】Python分析“淄博烧烤”热门事件-全流程附源码
    目录一、背景介绍二、爬虫代码2.1展示爬取结果2.2爬虫代码讲解三、可视化代码3.1读取数据3.2数据清洗3.3可视化3.3.1IP属地分析-柱形图3.3.2评论时间分析-折线图3.3.3点赞数分布-箱线图3.3.4评论内容-情感分布饼图3.3.5评论内容-词云图四、技术总结五、演示视频六、转载......
  • 数据转换-位串字节数组
    utils.c#include"utils.h"intBitstr2ByteArr(unsignedchar*bs,unsignedchar*ba,int*lba){inti,j;for(i=0,j=0;j<*lba;j++){ba[j]=0;for(intk=0;k<8;k++){if(bs[i]=='......
  • 数据转换-16进制字符
    任务要求在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,使用git管理代码,gitcommit不少于5次在附件中的utils.h和utils.c中完成16进制字符'0'-'9','A'-'F','a'-'f'与十六进制数据0-15的转换功能(10’):intHex2Char(unsignedintfromi,unsigned......
  • 智能农田远程数据采集及管理系统设计
    Version:2024年4月1日起,2024年5月17日晚写完这个稿子,该项目需要一定底子。具体实物演习【智慧农业-自动农田(大棚)远程数据采集及管理系统】https://www.bilibili.com/video/BV1qf421m769/?share_source=copy_web&vd_source=d3c8fab68214f4bb12e2aa4ac6c162e3第一章:项目说明项......
  • Astar路径规划算法复现-python实现
    #-*-coding:utf-8-*-"""CreatedonFriMay2409:04:232024"""importosimportsysimportmathimportheapqimportmatplotlib.pyplotaspltimporttime'''传统A*算法'''classAstar:......
  • jmeter连接数据库查询数据库表数据
    1、先下载mysql-connector-java-5.1.7插件放到jmeter目录的lib下面,下载地址(https://downloads.mysql.com/archives/c-j/),因为我的jmeter是放在Windows的,所以我下载第二个​2、下载完后解压文件,复制文件夹下面的mysql-connector-java-5.1.7-bin存放到jmeter的lib目录下(忘记jmet......
  • 如何在Ant-Design-Vue中实现动态表头并填充数据
    在现代前端开发中,基于Vue.js的AntDesignVue已经成为许多开发者构建高质量用户界面的首选工具之一。它提供了一整套丰富的UI组件,其中的Table组件广泛应用于数据展示和操作。本文将深入探讨如何在AntDesignVue中实现动态表头并填充数据,以满足复杂多变的业务需求。一、引言......
  • 大数据与人工智能初了解
    本文分享自天翼云开发者社区《大数据与人工智能初了解》,作者:杜****玲如果说数据的产生和收集是基础,那么数据的挖掘、分析和利用则是关键。简单来说,数据挖掘就是要从大量非结构化数据和半结构化数据中挖掘出隐含的、先前未知但潜在有效的信息和模式的一个工程化和系统化的过程。......
  • Xenium In Situ数据的质量评估及优化方案(试用版)
    作者,EvilGenius作为公司的分析人员,多方法比较和优化也是必修课。今天我们来看看Xenium的一些分析点及可能得优化方案Xenium本身的细胞分割更加适合于规整的、圆形或者其他形状不太奇怪的细胞,这一点得到了上海10X技术支持的确认,不过对于大多数样本,这个方法就够用了。这一篇......
  • 10X空间转录组数据分析之CNV轨迹层级
    作者,EvilGenius今天我们要完成一项工程,那就是CNV层级轨迹,如下图:首先来看一下什么是CNV谱系拷贝数变异(CNVs)在细胞增殖过程中在基因组中积累,提供了系统发育谱系的特征。通过转录组数据上使用intercnv生成CNV谱,能够以空间和时间分辨率跟踪克隆系统发育。文章空间转录组数......