Appearance
Informer 全览流程图收束
Abstract
这篇只做一件事:
把当前这条 Informer 精读链,从命令行参数到最终
(B, pred_len, c_out)输出,重新压回一张完整总图。这篇不再下钻新模块,而是做收束:
- 总顺序图
- 总抽象树
- 当前真实例子的接口链
toy例子在整条链里的位置- 各篇文档在整条链里的职责
1. 当前真实例子
固定当前主例子:
- 数据:
ETTh1.csv - 模型:
time_series_library.Informer - adapter:
transformer_adapter - strategy:
rolling_forecast - 任务:
short_term_forecast
关键参数:
seq_len = 96label_len = 48pred_len = horizon = 24batch_size = 4d_model = 32d_ff = 128e_layers = 2d_layers = 1n_heads = 8embed = "timeF"freq = "h"distil = True
2. 整条主链的第一性
这组文档的第一性不是“把 Informer 每个文件都拆完”,而是:
在真实 TFB 运行链里,搞清当前这条命令怎样把参数和数据送进 Informer,再怎样经过 embedding / encoder / decoder 变成最终预测。
所以整条链必须同时回答四件事:
- 为什么当前会选中
Informer - batch 四元组怎样变成 Informer 四输入
forward -> short_forecast内部怎样分块- 各块里的张量怎样一步步变化
3. 全览顺序图
4. 全览抽象树
这张树的意思不是“执行顺序完全长这样”,而是:
- 上半部分给主线 Level
- 中间部分把
short_forecast的内部逻辑块继续拆开 - 下半部分把 encoder / decoder 里已经单独精读的核心节点挂回总树
所以这张树回答的是:
当前这一套文档,已经把 Informer 运行链拆到了什么粒度。
5. 当前例子的接口链
5.1 配置接口链
text
命令行参数
-> build_model_config(...)
-> pipeline(...)
-> get_models(...)
-> get_model_info(...)
-> transformer_adapter(Informer)
-> ModelFactory
-> _init_model()
-> Informer(config)意义:
- 这一段解决“为什么当前这条命令会走到 Informer,而不是别的模型”。
对应文档:
5.2 数据接口链
text
forecast_fit / batch_forecast
-> _process(input, target, input_mark, target_mark)
-> x_enc, x_mark_enc, x_dec, x_mark_dec
-> Informer.forward(...)意义:
- 这一段解决“batch 四元组怎样真正变成 Informer 的四输入”。
对应文档:
5.3 模型主链
text
forward(...)
-> short_forecast(...)
-> 标准化
-> DataEmbedding
-> Encoder
-> Decoder
-> 反标准化
-> 取最后 pred_len意义:
- 这一段解决“进入 Informer 以后,代码主体到底按什么顺序跑”。
对应文档:
6. toy 例子在整条链里的位置
真实例子里你在 PyCharm 里看到的是:
input.shape = (4, 96, 7)target.shape = (4, 72, 7)input_mark.shape = (4, 96, 4)target_mark.shape = (4, 72, 4)- 最终
output.shape = (4, 24, 7)
但精读代码时不直接用它做数学例子,因为太大。
所以文档里固定另一个更小的 toy 例子:
B = 1seq_len = 4label_len = 2pred_len = 2c_in = c_out = 2d_model = 4
这两个例子的分工是:
- 真实例子:用来对齐你当前实际跑的 benchmark
toy例子:用来画张量、卷积核、attention 权重、projection 的逐步变化
7. 各篇文档到底负责哪一段
| 文档 | 父节点 | 负责的段 | 解决的问题 | 出口 |
|---|---|---|---|---|
| 01-Level1-配置进入Informer | 总任务 | 命令行到 Informer(config) | 为什么当前例子会选中 Informer | model = Informer(config) |
| 02-Level2-数据进入Informer | 总任务 | _process(...) | batch 四元组怎样变成四输入 | Informer.forward(...) |
| 03-Level3-forward主链 | 总任务 | forward -> short_forecast | 为什么走这条分支 | short_forecast(...) |
| 04-Level4-short_forecast五段总览 | Level 3 | 4A~4E 总览 | short_forecast 内部怎样分块 | 4A~4E |
| 04B-DataEmbedding | 4B DataEmbedding | 三种 embedding 怎样合成 encoder / decoder 输入 | (B,L,d_model) | |
| 04C-Encoder主链 | 4C Encoder | 编码后的历史上下文怎样形成 | enc_out | |
| 04C-1-AttentionLayer | 4C Encoder -> EncoderLayer | Q/K/V 怎样投影、分头、再合并 | attention 输出 | |
| 04C-2-ProbAttention | 4C Encoder -> AttentionLayer | top query 怎样被选中和更新 | context | |
| 04D-Decoder主链 | 4D Decoder | decoder 怎样读 enc_out 并投影回输出通道 | dec_out | |
| A1-参数速查 | 附录 | 参数从哪来、控制什么 | 速查表 | 速查表 |
| A2-代码地图 | 附录 | 文件和后续拆分路线 | 文件索引 | 文件索引 |
8. 一张最短收束图
9. 固定阅读顺序
严格按这个顺序:
- 01-Level1-配置进入Informer
- 02-Level2-数据进入Informer
- 03-Level3-forward主链
- 04-Level4-short_forecast五段总览
- 04B-DataEmbedding
- 04C-Encoder主链
- 04C-1-AttentionLayer
- 04C-2-ProbAttention
- 04D-Decoder主链
- 09-Informer全览流程图收束
10. 最后压成 5 句话
- 当前这条命令先把参数变成
Informer(config),再把 batch 四元组变成 Informer 四输入。 forward(...)只是分支入口,当前实际走的是short_forecast(...)。short_forecast(...)的主干就是:标准化 -> embedding -> encoder -> decoder -> 反标准化。Encoder里的 attention 不是黑盒,已经继续下钻到了AttentionLayer / ProbAttention。- 这篇之后,Informer 这一组文档已经形成从入口到内部模块再到收束总图的闭环。