- 人工智能
- 深度学习
- 机器学习
【免费下载链接】Informer2020
The GitHub repository for the paper "Informer" accepted by AAAI 2021.
本文基于 AAAI 2021 最佳论文《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》的官方开源实现仓库(Informer2020)编写。文章以仓库 README.md 为骨架,系统讲解 ProbSparse Attention 的核心原理、环境搭建、数据集准备、训练/测试命令、全部命令行参数含义,并结合 models、data、exp 等目录下的源码逐层印证实现细节。读完本文,你将能够独立复现论文中的单变量与多变量长序列预测实验,并能基于自定义数据快速改造运行自己的任务。
一、项目背景与仓库结构
Informer2020 是论文《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》(AAAI 2021 最佳论文)的原始 PyTorch 实现仓库,作者为 Haoyi Zhou 等人。该工作聚焦**长序列时间序列预测(Long Sequence Time-Series Forecasting, LSTF)**问题,针对传统 Transformer 在长序列场景下计算复杂度高、内存占用大、预测效率低的三重挑战,提出了三项核心创新:
- ProbSparse Self-Attention:通过概率稀疏化机制选取"活跃"的 query,将自注意力复杂度从 O(L²) 降至 O(L log L);
- Self-Attention Distilling:在编码器各层之间插入卷积池化层,逐层裁剪冗余特征,进一步压缩输入维度;
- Generative Style Decoder:一次前向推理即生成整个预测序列,无需像传统自回归方法那样逐步迭代,显著提升长序列推理速度。
仓库整体结构清晰,各模块职责分明:
| 目录/文件 | 职责 |
|---|---|
| main_informer.py | 命令行入口:参数解析、数据信息映射、训练/测试/预测主流程 |
| exp/exp_informer.py | 实验封装:数据加载、模型构建、训练循环、验证、测试与预测 |
| models/model.py | Informer 与 InformerStack 两大模型定义 |
| models/attn.py | ProbAttention 与 FullAttention 注意力实现 |
| models/encoder.py | 编码器、ConvLayer 蒸馏层与 EncoderStack |
| models/decoder.py | 生成式解码器 |
| models/embed.py | Token/Positional/Temporal 三种嵌入 |
| data/data_loader.py | 四类 Dataset:ETT 小时、ETT 分钟、自定义数据、预测数据 |
| utils/ | 时间特征、掩码、指标、早停与学习率调整等工具 |
| scripts/ | 各数据集的复现实验脚本(.sh) |
整个仓库的调用链可以概括为:main_informer.py解析参数 →Exp_Informer构建数据与模型 →Informer模型内部由DataEmbedding、Encoder、Decoder、投影层组成 → 注意力核心由ProbAttention(或FullAttention)实现。
二、核心原理:ProbSparse Attention
2.1 长尾分布中的"活跃 query"与"懒惰 query"
自注意力的打分矩阵会呈现出典型的长尾分布特征:其中少数"活跃"的 query 占据了打分矩阵中绝大多数的高分值(分布在"头部"区域),而大量"懒惰"的 query 对应的分值集中在"尾部",对输出的贡献微弱。Informer 的设计思路就是:只挑选"活跃"的 query 参与完整的注意力计算,而跳过"懒惰"的 query,从而用概率分布构建出一个稀疏 Transformer。
ProbSparse Attention 使用 Top-u 个活跃 query,其核心动机在原文档中有明确阐述:自注意力层的输出本质上是输入的一种重新表示(re-representation),它被形式化为值向量关于点积分数(dot-product pairs)的加权组合。Top-u 个 query 配合全部 keys,可以完整重建输入中的主导成分(leading components),等价于在所有点积对中挑选"头部"的高分项。反过来,如果选择 Top-u 个 keys,那么完整保留的 keys 只会在"长尾"分数内保留值的平凡求和,却会破坏对主导成分的重建——这正是"为什么不用 Top-u keys"的答案。
说明:以上原理性描述来自原 README 的原文表述,本文仅做转述与结构梳理,不引入外部文献内容。
2.2 源码中的稀疏测量与采样实现
在 models/attn.py 中,ProbAttention通过两步完成稀疏化计算:
第一步:随机采样估计稀疏性得分。方法_prob_QK先对 K 按 query 维度扩展,然后从 L_K 个 key 中随机采样sample_k = U_part个,计算采样后的 Q·K 得分,并据此估计每个 query 的稀疏性度量 M:
M = Q_K_sample.max(-1)[0] - torch.div(Q_K_sample.sum(-1), L_K) M_top = M.topk(n_top, sorted=False)[1]其中采样数量与保留数量均由factor参数控制(见 models/attn.py):
U_part = self.factor * np.ceil(np.log(L_K)).astype('int').item() # c*ln(L_k) u = self.factor * np.ceil(np.log(L_Q)).astype('int').item() # c*ln(L_q)也就是说,真实参与完整计算的 query 数为factor × ln(L_Q),采样 key 数为factor × ln(L_K),两者都做了上限截断以防超出实际长度。这解释了为什么 ProbSparse 的复杂度是 O(L log L) 级别。
第二步:用选出的 Top-u query 计算完整注意力并更新上下文。_get_initial_context先用均值(非掩码情形)或前缀和(掩码情形,见 models/attn.py)初始化每个 query 的上下文向量,然后在_update_context中仅用选中的索引更新对应的上下文:
context_in[..., index, :] = torch.matmul(attn, V).type_as(context_in)这种"先给默认值、再定点更新"的策略保证了被丢弃的"懒惰" query 依然有合理的上下文表示,同时把完整 softmax 的计算量压缩到 Top-u 个 query 上。
2.3 与 FullAttention 的对比与切换
同一文件中的FullAttention(models/attn.py)是标准 Transformer 注意力:通过torch.einsum("blhe,bshe->bhls")计算全部打分,配合TriangularCausalMask因果掩码做 masked softmax。模型按--attn参数二选一(见 models/model.py):
Attn = ProbAttention if attn=='prob' else FullAttention在编码器中使用Attn(False, factor, ...)(不启用掩码),在解码器的自注意力子层中使用Attn(True, factor, ...)(启用因果掩码),而解码器的交叉注意力子层固定使用FullAttention(见 models/model.py)。这意味着你可以通过--attn full把编码器换成标准 Transformer 注意力,作为对比实验。
说明:ProbSparse 选择 Top-u query 而非 Top-u keys 的动机阐述,源自原 README 的 ProbSparse Attention 小节;源码结构可参见 models/attn.py。
三、环境要求与安装
原 README 给出了严格的依赖版本清单,为保证实验可复现,建议按以下版本安装:
| 依赖 | 版本 |
|---|---|
| Python | 3.6 |
| matplotlib | 3.1.1 |
| numpy | 1.19.4 |
| pandas | 0.25.1 |
| scikit_learn | 0.21.3 |
| torch | 1.8.0 |
依赖清单同时记录在 requirements.txt 中,可直接执行:
pip install -r requirements.txt仓库还提供了基于 conda 的 environment.yml(包含与上述一致的 Python 3.6 与各库版本),以及用于构建 Docker 镜像的 Dockerfile(基于continuumio/miniconda3:4.7.12,通过 mamba 更新 base 环境)。两种方式均可用于搭建与论文一致的运行环境。
四、数据集准备
4.1 ETT 数据集
论文使用的 ETT(Electricity Transformer Temperature)数据集可从 ETDataset 仓库获取。下载后需要把数据文件放入data/ETT/目录。原 README 指出:本实现中每个数据集的输入都做了零均值归一化(zero-mean normalized)。
ETT 数据在 data/data_loader.py 中有两类 Dataset 与之对应:
Dataset_ETT_hour(data/data_loader.py):对应 ETTh1/ETTh2,按小时采样,训练/验证/测试集边界按12×30×24小时为切分基准;Dataset_ETT_minute(data/data_loader.py):对应 ETTm1/ETTm2,按 15 分钟采样,边界按12×30×24×4为切分基准。
归一化由 utils/tools.py 中的StandardScaler完成:fit阶段只在训练段上计算均值和标准差,transform/inverse_transform分别完成标准化与反标准化。这也与--inverse参数(反标准化输出)的实现一一对应。
4.2 ECL 与 Weather 数据
ECL(电力消费)与 Weather(气象)数据集可通过原 README 提供的 Google Drive / 百度网盘链接下载(百度网盘密码为6gan)。在main_informer.py内置的数据信息表中,这两个数据集分别对应:
'WTH': {'data': 'WTH.csv', 'T': 'WetBulbCelsius', 'M': [12, 12, 12], 'S': [1, 1, 1], 'MS': [12, 12, 1]}, 'ECL': {'data': 'ECL.csv', 'T': 'MT_320', 'M': [321, 321, 321], 'S': [1, 1, 1], 'MS': [321, 321, 1]},即 WTH 默认有 12 个特征、目标列为WetBulbCelsius;ECL 默认 321 个特征、目标列为MT_320。这两类数据在代码中走Dataset_Custom(data/data_loader.py),按 7:2:1 比例切分训练/验证/测试集。Solar数据集(137 维)也已内置支持。
4.3 自定义数据
如果你的数据不是 ETT/ECL/WTH/Solar 之一,可在运行命令中指定--data custom,走Dataset_Custom/Dataset_Pred路径。自定义 CSV 的列结构要求为:date列 + 若干特征列 + 目标列。可以通过--cols参数指定参与训练的特征列,通过--target指定目标列,通过--features M/S/MS决定预测任务类型。
五、快速复现:Makefile + Docker 一键流程
原 README 提供了一套基于 Makefile 的复现流程,Makefile的具体实现见 Makefile:
- 初始化 Docker 镜像:
make init,等价于docker build -t informer .(基于 Dockerfile 构建); - 下载数据集:
make dataset,脚本会创建data/ETT/目录,并依次下载 ETTh1.csv、ETTh2.csv、ETTm1.csv、ETTm2.csv、ECL.csv、WTH.csv 到该目录(见 Makefile); - 逐个运行脚本:
make run_module module="bash ETTh1.sh",对 scripts/ 下的每个脚本执行一次; - 批量运行全部脚本:
for file in `ls scripts`; do make run_module module="bash scripts/$script"; done注意原文档中的这条批量命令存在笔误($script应为$file),实际执行时请改为:
for file in `ls scripts`; do make run_module module="bash scripts/$file"; donerun_module的实现是挂载仓库根目录到容器内/app并以当前用户运行(见 Makefile),因此容器内的数据与产出会直接落在宿主机仓库目录中。此外 Makefile 还提供了jupyter(启动 Jupyter Lab,端口 8888)与bash_docker(进入容器交互 shell)两个辅助目标,便于调试与可视化。
六、训练与测试命令
6.1 三个数据集的快速入门命令
原 README 给出了使用 ProbSparse 自注意力在 ETTh1、ETTh2、ETTm1 上训练与测试模型的最简命令:
# ETTh1 python -u main_informer.py --model informer --data ETTh1 --attn prob --freq h # ETTh2 python -u main_informer.py --model informer --data ETTh2 --attn prob --freq h # ETTm1 python -u main_informer.py --model informer --data ETTm1 --attn prob --freq t其中--freq指定时间特征编码的频率粒度(h表示小时级,t表示分钟级),其余参数全部走默认值:seq_len=96、label_len=48、pred_len=24、e_layers=2、d_layers=1、d_model=512、n_heads=8等(详见下文参数表)。
main_informer.py会根据--data自动补齐数据集信息:它内置了一张数据字典表(见 main_informer.py),当--data命中内置名称时,会自动覆盖data_path、target与enc_in/dec_in/c_out三个维度值(按--features取值)。例如--data ETTh1 --features M会自动把enc_in、dec_in、c_out都设为 7,无需手工指定。
每次实验都会打印实验标识 setting,格式为:
{model}_{data}_ft{features}_sl{seq_len}_ll{label_len}_pl{pred_len}_dm{d_model}_nh{n_heads}_el{e_layers}_dl{d_layers}_df{d_ff}_at{attn}_fc{factor}_eb{embed}_dt{distil}_mx{mix}_{des}_{itr序号}该标识同时用作 checkpoint 目录名与结果目录名,训练/测试/预测的产物分别写入./checkpoints/<setting>/与./results/<setting>/(见 exp/exp_informer.py)。
6.2 完整命令行模板
原 README 提供了覆盖全部参数的最完整命令模板,直接照抄即可:
python -u main_informer.py --model <model> --data <data> --root_path <root_path> --data_path <data_path> --features <features> --target <target> --freq <freq> --checkpoints <checkpoints> --seq_len <seq_len> --label_len <label_len> --pred_len <pred_len> --enc_in <enc_in> --dec_in <dec_in> --c_out <c_out> --d_model <d_model> --n_heads <n_heads> --e_layers <e_layers> --d_layers <d_layers> --s_layers <s_layers> --d_ff <d_ff> --factor <factor> --padding <padding> --distil --dropout <dropout> --attn <attn> --embed <embed> --activation <activation> --output_attention --do_predict --mix --cols <cols> --itr <itr> --num_workers <num_workers> --train_epochs <train_epochs> --batch_size <batch_size> --patience <patience> --des <des> --learning_rate <learning_rate> --loss <loss> --lradj <lradj> --use_amp --inverse --use_gpu <use_gpu> --gpu <gpu> --use_multi_gpu --devices <devices>6.3 全部参数详解(源自原 README 参数表,并对照 main_informer.py 源码核验)
| 参数名 | 参数说明 |
|---|---|
| model | 实验所用模型,可选informer、informerstack、informerlight(TBD)。其中informerstack在 models/model.py 中实现为多组编码器堆叠(EncoderStack,默认s_layers=3,2,1,每层按输入长度 2 的幂次逐层裁剪后拼接),对应 exp/exp_informer.py 中e_layers与s_layers的切换逻辑 |
| data | 数据集名称,支持ETTh1、ETTh2、ETTm1、ETTm2、WTH、ECL、Solar、custom(内置映射见 main_informer.py) |
| root_path | 数据文件的根路径(默认./data/ETT/) |
| data_path | 数据文件名(默认ETTh1.csv) |
| features | 预测任务类型(默认M)。M:多变量预测多变量;S:单变量预测单变量;MS:多变量预测单变量 |
| target | S 或 MS 任务中的目标特征(默认OT) |
| freq | 时间特征编码频率(默认h)。可选s(秒级)、t(分钟级)、h(小时级)、d(日级)、b(工作日)、w(周级)、m(月级);也支持更细粒度写法如15min、3h。源码中args.freq = args.freq[-1:]会把15min归一为t(见 main_informer.py) |
| checkpoints | 模型 checkpoint 存放位置(默认./checkpoints/) |
| seq_len | Informer 编码器输入序列长度(默认 96) |
| label_len | Informer 解码器起始 token(start token)长度(默认 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 | 堆叠编码器(informerstack)各层数(默认3,2,1,源码中按逗号分隔解析为整数列表,见 main_informer.py) |
| d_ff | 前馈网络(fcn)维度(默认 2048) |
| factor | ProbSparse 注意力因子(默认 5),控制factor × ln(L)的采样/保留规模 |
| padding | 解码器输入填充类型(默认 0)。0表示用零填充pred_len段,1表示用 1 填充(见 exp/exp_informer.py) |
| distil | 是否在编码器中使用蒸馏。注意这是action='store_false'参数:带上该参数表示不使用蒸馏,默认值True表示默认启用蒸馏 |
| dropout | dropout 概率(默认 0.05) |
| attn | 编码器所用注意力(默认prob)。可选prob(Informer)、full(标准 Transformer) |
| embed | 时间特征编码方式(默认timeF)。可选timeF(线性映射连续时间特征)、fixed(固定三角函数嵌入)、learned(可学习嵌入) |
| activation | 激活函数(默认gelu),可选relu/gelu,见 models/encoder.py |
| output_attention | 是否输出编码器注意力,带上该参数表示输出注意力(默认False),开启后模型返回(dec_out, attns)二元组 |
| do_predict | 是否预测未见过的未来数据,带上该参数表示执行预测(默认False),开启后训练测试完毕会调用exp.predict(setting, True)并保存real_prediction.npy(见 main_informer.py) |
| mix | 生成式解码器中是否使用 mix attention,带上该参数表示不使用 mix attention(默认True) |
| cols | 从数据文件中选取的特定特征列作为输入(nargs='+',可传多个列名) |
| num_workers | DataLoader 工作进程数(默认 0) |
| itr | 实验重复次数(默认 2),main_informer.py外层循环对每次实验用递增序号 ii 生成 setting |
| train_epochs | 训练轮数(默认 6) |
| batch_size | 训练批次大小(默认 32) |
| patience | 早停耐心值(默认 3),对应 utils/tools.py 中EarlyStopping的实现 |
| learning_rate | 优化器学习率(默认 0.0001),优化器为 Adam(见 exp/exp_informer.py) |
| des | 实验描述(默认test),会拼入 setting 字符串 |
| loss | 损失函数(默认mse),源码中实际固定使用nn.MSELoss() |
| lradj | 学习率调整方式(默认type1)。type1:每 1 个 epoch 学习率减半(lr × 0.5^(epoch-1));type2:按预设 epoch 表阶梯下降(见 utils/tools.py) |
| use_amp | 是否使用自动混合精度训练,带上该参数表示启用 AMP(默认False),启用后使用torch.cuda.amp.GradScaler与autocast(见 exp/exp_informer.py) |
| inverse | 是否对输出数据做反标准化,带上该参数表示反标准化输出(默认False),依赖 Dataset 的inverse_transform方法 |
| use_gpu | 是否使用 GPU(默认True)。实际生效条件为torch.cuda.is_available() and args.use_gpu(见 main_informer.py) |
| gpu | 训练与推理使用的 GPU 编号(默认 0) |
| use_multi_gpu | 是否使用多 GPU,带上该参数表示启用多卡(默认False),启用时以nn.DataParallel包装模型(见 exp/exp_informer.py) |
| devices | 多 GPU 设备 ID 列表(默认0,1,2,3) |
6.4 编码器与解码器的输入构造细节
main_informer.py源码中的注释揭示了解码器输入的构造方式:
# Informer decoder input: concat[start token series(label_len), zero padding series(pred_len)]具体实现见 exp/exp_informer.py:解码器输入 =batch_y的前label_len个真实值(start token)+ 长度为pred_len的零(或一)填充段。正是这种"生成式"输入设计,让解码器可以在一次前向中并行输出整个预测序列,而无需自回归迭代。
七、复现脚本与超参数设置
原 README 指出:每个数据集的实验参数都格式化存放在 scripts/ 目录下的 .sh 文件中,可直接参考这些参数复现论文结果,也可以调整参数以获得更好的 MSE/MAE 指标或更漂亮的预测图。以下摘录 scripts/ETTh1.sh 的部分实验命令作为示例:
# ETTh1 多变量预测(M) python -u main_informer.py --model informer --data ETTh1 --features M --seq_len 48 --label_len 48 --pred_len 24 --e_layers 2 --d_layers 1 --attn prob --des 'Exp' --itr 5 --factor 3 python -u main_informer.py --model informer --data ETTh1 --features M --seq_len 96 --label_len 48 --pred_len 48 --e_layers 2 --d_layers 1 --attn prob --des 'Exp' --itr 5 python -u main_informer.py --model informer --data ETTh1 --features M --seq_len 336 --label_len 336 --pred_len 720 --e_layers 2 --d_layers 1 --attn prob --des 'Exp' --itr 5 # ETTh1 单变量预测(S) python -u main_informer.py --model informer --data ETTh1 --features S --seq_len 720 --label_len 168 --pred_len 24 --e_layers 2 --d_layers 1 --attn prob --des 'Exp' --itr 5 python -u main_informer.py --model informer --data ETTh1 --features S --seq_len 720 --label_len 336 --pred_len 720 --e_layers 2 --d_layers 1 --attn prob --des 'Exp' --itr 5从 scripts/ 四个脚本可以观察到复现实验的常见模式:
- 短预测(pred_len ≤ 48)通常使用较短的
seq_len(如 48/96),甚至单独用较小的factor(如 ETTh1 的--factor 3); - 长预测(pred_len ≥ 168)普遍使用
seq_len = 720或 336,且label_len往往与seq_len或预测长度联动; - ETTh2 与 WTH 在长预测任务上倾向于加深网络(
e_layers 3 --d_layers 2); - 全部脚本固定
--attn prob,重复实验次数--itr 5,描述符--des 'Exp'; - WTH 脚本(scripts/WTH.sh)展示了"不显式指定维度参数、完全依赖内置映射"的简洁用法。
八、评估指标与结果输出
测试阶段(见 exp/exp_informer.py)会计算并打印五个指标,其定义位于 utils/metrics.py:
- MAE:平均绝对误差(
np.mean(np.abs(pred-true))) - MSE:均方误差(
np.mean((pred-true)**2)) - RMSE:均方根误差(
np.sqrt(MSE)) - MAPE:平均绝对百分比误差
- MSPE:均方百分比误差
测试结束后,pred.npy、true.npy与metrics.npy(依次保存[mae, mse, rmse, mape, mspe])会被写入./results/<setting>/目录;若开启--do_predict,还会额外生成real_prediction.npy(见 exp/exp_informer.py)。
九、常见问题(FAQ)
原 README 记录了一个高频报错的解决方案:
若遇到
RuntimeError: The size of tensor a (98) must match the size of tensor b (96) at non-singleton dimension 1,请检查 torch 版本,或参考models/embed.py中TokenEmbedding的Conv1d的 circular padding 方式修改代码——因为不同 torch 版本中Conv1d的 circular padding 模式实现有变化。
对应的源码位置是 models/embed.py(TokenEmbedding)以及 models/encoder.py(ConvLayer)。两者都按 torch 版本条件设置 padding:
padding = 1 if torch.__version__>='1.5.0' else 2 self.tokenConv = nn.Conv1d(..., padding=padding, padding_mode='circular')如果你的环境报出类似的张量尺寸不匹配错误,优先核对 torch 版本与这两处 padding 设置是否与当前版本一致。
十、引用与致谢
如果你的研究工作中使用了本仓库,建议引用论文。原 README 给出了两篇参考文献的 BibTeX 条目:
@article{haoyietal-informerEx-2023, author = {Haoyi Zhou and Jianxin Li and Shanghang Zhang and Shuai Zhang and Mengyi Yan and Hui Xiong}, title = {Expanding the prediction capacity in long sequence time-series forecasting}, journal = {Artificial Intelligence}, volume = {318}, pages = {103886}, year = {2023}, } @inproceedings{haoyietal-informer-2021, author = {Haoyi Zhou and Shanghang Zhang and Jieqi Peng and Shuai Zhang and Jianxin Li and Hui Xiong and Wancai Zhang}, title = {Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting}, booktitle = {The Thirty-Fifth {AAAI} Conference on Artificial Intelligence, {AAAI} 2021, Virtual Conference}, volume = {35}, number = {12}, pages = {11106--11115}, publisher = {{AAAI} Press}, year = {2021}, }小结
Informer2020 仓库围绕"ProbSparse Attention + 自注意力蒸馏 + 生成式解码器"三件套,为长序列时序预测提供了一个完整、可复现、易扩展的 PyTorch 基准实现。从本文的梳理可以看到:原 README 提供的命令模板与参数表可以无缝对接到 main_informer.py 的参数解析逻辑;scripts/ 中每个.sh文件都是一组可直接运行的复现实验;而 models/attn.py 中的稀疏采样实现则从源码层面印证了 O(L log L) 复杂度的来源。上手时建议按"装环境 → 下数据 → 跑 scripts/ETTh1.sh → 对照参数表调参 → 开启--do_predict外推"的顺序进行,即可快速从复现走向自己的长序列预测实验。
- 人工智能
- 深度学习
- 机器学习
【免费下载链接】Informer2020
The GitHub repository for the paper "Informer" accepted by AAAI 2021.
相关推荐
Informer2020时间序列预测革命:ProbSparse与Full Attention的极限对决
Informer2020时间序列预测革命:ProbSparse与Full Attention的极限对决 在当今数据驱动的时代, 时间序列预测 已成为金融、气象、
人工智能深度学习机器学习Codebattle:如何通过编程对战游戏化提升你的编程技能?
Codebattle:如何通过编程对战游戏化提升你的编程技能? 你是否厌倦了枯燥的算法练习?是否觉得传统的编程学习方式缺乏动力和趣味性?Codebattle 是
游戏开发后端前端Transformers 中 Informer 模型详解:ProbSparse 稀疏自注意力与长序列时间序列预测实战
Transformers 中 Informer 模型详解:ProbSparse 稀疏自注意力与长序列时间序列预测实战 Informer 是面向长序列时间序列预测
人工智能大模型深度学习NLP预训练微调模型推理服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考