AAAI最佳论文Informer 复现(含python notebook代码)

AAAI最佳论文Informer 解读(含python notebook代码)

Github论文源码

由于很菜,零基础看源码的时候喜欢按照代码运行的顺序来跑一遍一个batch,从外层一点点拆进去,看代码内部的逻辑。最初复现的时候大部分都沿用args里的default,后面再尝试改用自己的数据+调参(哈哈至今也无法参透调参的这部分,希望不是玄学。。。)
记录一下本菜菜的复现过程。

1 代码运行顺序

  • main_informer.py 最外层,参数设置、让代码跑起来
    args.itr 迭代调用exp/exp_informer.py 中的 Exp_Informer类并传入args构建Exp_Informer类实例,继承了同文件夹中的exp_basic.py/Exp_Basic类
    • 执行 Exp_Informer._build_model(args) 函数, 构建Informer模型实例
    • 调用 Exp_Informer.train(setting)
      • 调用Exp_Informer._get_data(flag=‘train’)
        • 调用data/data_loader.py 中的 Dataset_ETT_hour 类,并传入args构建实例
        • Dataset实例转换为DataLoader实例
      • args.train_epochs 迭代,每个epoch 都取出dataloader中的所有batch数据
        • batch迭代,batch_x, batch_y,batch_x_mark,batch_y_mark 的形状(shape)分别是 [32, 96, 7],[32, 24, 7],[32, 96, 4],[32, 72, 4]
          • 调用 Exp_Informer._process_one_batch() 在这个函数中将每个batch的数据传递进入前面构建的Informer模型。也会在这个函数进行一些padding等,返回的输model出值。
          • 计算损失,梯度下降迭代 loss.backward()
        • 对所有batch训练结束后调用 Exp_Informer.vali() 查看当前epoch的验证集表现结果。并挑选最好的checkpoint存下来。
    • 调用Exp_Informer.test(setting)
      (略)类似train的过程
    • torch.cuda.empty_cache()

2 复现

2.1 复现结果

wandb
在这里插入图片描述
在这里插入图片描述
上图为测试集的表现
training 过程中的output和真值的对比(注意不是test!)
上图是training过程中训练集的output和真值的对比,注意并不是测试集!

2.2 复现代码

感觉现在结果有点拉,还没有调参全部用的默认参数(真的不想调参。。。)。欢迎评论区大佬们给点指导意见,,怎么才能调的更好点。
kaggle notebook
这里打开应该是这个样子的
在这里插入图片描述

3 未完待续 2023/11/22

真的菜菜菜菜菜中菜,欢迎评论区大佬指正!

  • 27
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Informer代码复现是指根据Informer模型的原始论文和开源代码,重新实现该模型的过程。通过引用和可以得知,Informer是一种对Transformer模型进行了改进的方法,以提高计算、内存和体系结构的效率。同时,作者也提供了清晰的开源代码,使得其他研究者可以方便地进行复现。 在Informer的编码过程中,使用了ProbSparse自注意力模块和自注意力蒸馏模块,这些模块能够通过稀疏矩阵替代原来的注意力矩阵,从而减少计算资源需求并保持良好的性能。具体的复现过程可以参考原始论文和开源代码中提供的详细说明。根据引用的描述,编码器接收长序列输入,并通过ProbSparse自注意力模块和自注意力蒸馏模块获得特征表示。 因此,要复现Informer模型,需要仔细阅读Informer的原始论文和开源代码,并按照其中提供的步骤和方法进行实现。注意理解ProbSparse自注意力模块和自注意力蒸馏模块的具体实现细节,并根据论文中提供的指导进行相应的代码编写和调试。在实现过程中,可以借助超算等计算资源来加速实验和获取实验数据,以验证复现结果的准确性。 总结而言,Informer代码复现是通过阅读原始论文和开源代码,并按照其中提供的方法和步骤进行实现的过程。而实现过程中需要注意ProbSparse自注意力模块和自注意力蒸馏模块的实现细节,并根据论文的指导进行代码编写和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值