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

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

  • 1 代码运行顺序
  • 2 复现
    • 2.1 复现结果
    • 2.2 复现代码
  • 3 未完待续 2023/11/22

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
AAAI最佳论文Informer 复现(含python notebook代码)_第1张图片
AAAI最佳论文Informer 复现(含python notebook代码)_第2张图片
上图为测试集的表现
AAAI最佳论文Informer 复现(含python notebook代码)_第3张图片
上图是training过程中训练集的output和真值的对比,注意并不是测试集!

2.2 复现代码

感觉现在结果有点拉,还没有调参全部用的默认参数(真的不想调参。。。)。欢迎评论区大佬们给点指导意见,,怎么才能调的更好点。
kaggle notebook
这里打开应该是这个样子的
AAAI最佳论文Informer 复现(含python notebook代码)_第4张图片

3 未完待续 2023/11/22

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

你可能感兴趣的:(nlp,Time,series,nlp,深度学习,pytorch,算法)