Appearance
DLinear 全览流程图收束
Abstract
这篇是
DLinear/目录的收束文档。它只做三件事:
- 把当前真实运行例子重新压成一条完整链
- 把已经展开的叶子节点重新挂回总树
- 给出“读完这组文档后,你应该能讲什么”的最短标准
1. 当前真实例子的第一性收束
当前这条 DLinear 主线,真正想让你固定的是:
在 TFB 统一外壳下,DLinear 用“分解 + 两路线性外推”这套最小机制,把
x_enc变成未来pred_len步预测。
这条线的价值,不是模型复杂,而是:
- 它足够简单
- 代码边界很清楚
- 特别适合作为 Informer 的对照基线
2. 当前真实运行例子
固定例子:
- 数据:
ETTh1.csv - 模型:
time_series_library.DLinear - adapter:
transformer_adapter - strategy:
rolling_forecast
关键真实张量:
input.shape = (4, 96, 7)target.shape = (4, 72, 7)output.shape = (4, 24, 7)
3. 全览顺序图
4. 全览抽象树
5. 当前已经展开到哪里的节点
已讲清的节点:
Level 1→ 01-Level1-配置进入DLinearLevel 2→ 02-Level2-数据进入DLinearLevel 3→ 03-Level3-forward主链Level 4→ 04-Level4-encoder全链精读(包含 series_decomp、Linear 头、两路相加全部内容)
6. 当前例子与 toy 例子的分工
6.1 真实例子负责什么
真实例子负责回答:
- TFB 里 DLinear 是怎么被选中的
- 输入输出真实 shape 是什么
- batch 四元组怎样进模型
- 最后真实输出是什么形状
6.2 toy 例子负责什么
toy 例子负责回答:
moving_avg到底怎么算seasonal / trend怎么拆- 线性头怎么从
seq_len映射到pred_len - 为什么最终会得到未来 2 个时间步
也就是说:
- 真实例子负责接口与运行
- toy 例子负责代码与数学过程
7. 读完这组文档后,至少应该会讲的 8 句话
- 当前命令并不是直接进 DLinear,而是经过
build_model_config -> pipeline -> get_models -> get_model_info -> transformer_adapter -> _init_model()。 - DLinear 虽然走统一四输入接口,但 forecasting 主链里主要使用
x_enc。 forward(...)在 forecasting 任务里只走forecast(x_enc)。encoder(...)在 DLinear 里是主运算体,不是 Transformer encoder。series_decomp先用moving_avg提出 trend,再用x - trend得到 seasonal。Linear_Seasonal + Linear_Trend最终怎样组成预测输出。seq_len / pred_len / moving_avg / individual分别控制哪部分运算。- DLinear 的核心不是复杂结构,而是“分解 + 线性外推”的最小预测机制。
8. 和 Informer 最重要的对照
DLinear 和 Informer 在外层有很多相同点:
- 都从
run_benchmark进来 - 都经过
transformer_adapter - 都走
_process(...) - 都被统一包装成
model.forward(...)
但内部差异很大:
- Informer:
Embedding -> Encoder -> Decoder -> Attention
- DLinear:
series_decomp -> 两路线性头 -> 相加
所以 DLinear 的真正作用是:
帮你建立一个极简、可算、可改的预测主线,对照掉复杂 Transformer 模型里的非必要复杂度。
9. 下一步
如果要回看 encoder 内部细节:
如果要查参数和 torch 算子:
如果要把这组文档和“为什么学模型”接起来: