• 【informer】 时间序列的预测学习 2021 AAAI best paper



    前言

    数据集 https://github.com/zhouhaoyi/ETDataset/blob/main/README_CN.md
    代码:https://github.com/zhouhaoyi/Informer2020#reproducibility
    21年的paper:https://arxiv.org/pdf/2012.07436.pdf
    论文在代码上有连接,貌似又出了2023的extend版本:
    https://www.sciencedirect.com/science/article/abs/pii/S0004370223000322
    惭愧啊,北航的paper哎…


    1.引入

    Transformer 这不行那不好,改了改Transformer做序列预测
    数据集初探:
    在这里插入图片描述
    在这里插入图片描述

    根据前面几列,预测最后一列油温。

    原理图:
    在这里插入图片描述

    2.数据集

    在这里插入图片描述
    按要求把它放到这里。

    3. 训练

    在readme拿参数即可,用的ETTh1, 用了gpu

    (torch1.8) D:\code\python_project\Informer2020>python -u main_informer.py --model informer --data ETTh1 --attn prob --freq h --use_gpu 1  --gpu 0 --devices 0
    Args in experiment:
    Namespace(model='informer', data='ETTh1', root_path='./data/ETT/', data_path='ETTh1.csv', features='M', target='OT', freq='h', checkpoints='./checkpoints/', seq_len
    =96, label_len=48, pred_len=24, enc_in=7, dec_in=7, c_out=7, d_model=512, n_heads=8, e_layers=2, d_layers=1, s_layers=[3, 2, 1], d_ff=2048, factor=5, padding=0, dis
    til=True, dropout=0.05, attn='prob', embed='timeF', activation='gelu', output_attention=False, do_predict=False, mix=True, cols=None, num_workers=0, itr=2, train_ep
    ochs=6, batch_size=32, patience=3, learning_rate=0.0001, des='test', loss='mse', lradj='type1', use_amp=False, inverse=False, use_gpu=False, gpu=0, use_multi_gpu=Fa
    lse, devices='0', detail_freq='h')
    Use CPU
    >>>>>>>start training : informer_ETTh1_ftM_sl96_ll48_pl24_dm512_nh8_el2_dl1_df2048_atprob_fc5_ebtimeF_dtTrue_mxTrue_test_0>>>>>>>>>>>>>>>>>>>>>>>>>>
    train 8521
    val 2857
    test 2857
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    python -u main_informer.py --model informer --data ETTh1 --attn prob --freq h --use_gpu True  --gpu 0 --devices 0
    
    
    • 1
    • 2

    在这里插入图片描述
    对比两张图,有没有使用gpu 速度相差8倍。

    训练完成后:

    Epoch: 5 cost time: 15.433077812194824
    Epoch: 5, Steps: 266 | Train Loss: 0.1593535 Vali Loss: 0.7067649 Test Loss: 0.7689049
    EarlyStopping counter: 3 out of 3
    Early stopping
    >>>>>>>testing : informer_ETTh1_ftM_sl96_ll48_pl24_dm512_nh8_el2_dl1_df2048_atprob_fc5_ebtimeF_dtTrue_mxTrue_test_1<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    test 2857
    test shape: (89, 32, 24, 7) (89, 32, 24, 7)
    test shape: (2848, 24, 7) (2848, 24, 7)
    mse:0.618998646736145, mae:0.5848820805549622
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    有用的参数:
    在这里插入图片描述
    features:预测任务的特征可以是多对一,一对多,多对多。
    比如身高/体重/专业/年龄 预测 收入
    年龄–>身高/体重/收入
    身高/体重/专业/年龄 --> 收入/年龄/身高

    4其它【待续】

    pred_len 代表预测步长,可以拿前三天的特征预测后一周的特征,也可以后1天,。。。pred_len指的是7天或者1天【向后预测】。
    seq_len 是历史上几天的数据区预测。
    但是这里有个freq todo??

  • 相关阅读:
    ES6学习
    [附源码]计算机毕业设计JAVAjsp高校学生资助信息系统
    面向对象编程原则(09)——迪米特法则
    webSocket推送太快导致前端渲染卡顿问题优化
    Java数据审计工具:Envers and JaVers比较
    luffy-(8)
    Java—常用API
    基于redisson实现注解式分布式锁
    MySQL事务隔离级别详解
    SpringBoot - Swagger2的集成与使用(二)
  • 原文地址:https://blog.csdn.net/weixin_40293999/article/details/134429439