Skip to content

DLinear 全览流程图收束

Abstract

这篇是 DLinear/ 目录的收束文档。

它只做三件事:

  1. 把当前真实运行例子重新压成一条完整链
  2. 把已经展开的叶子节点重新挂回总树
  3. 给出“读完这组文档后,你应该能讲什么”的最短标准

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. 当前已经展开到哪里的节点

已讲清的节点:

6. 当前例子与 toy 例子的分工

6.1 真实例子负责什么

真实例子负责回答:

  • TFB 里 DLinear 是怎么被选中的
  • 输入输出真实 shape 是什么
  • batch 四元组怎样进模型
  • 最后真实输出是什么形状

6.2 toy 例子负责什么

toy 例子负责回答:

  • moving_avg 到底怎么算
  • seasonal / trend 怎么拆
  • 线性头怎么从 seq_len 映射到 pred_len
  • 为什么最终会得到未来 2 个时间步

也就是说:

  • 真实例子负责接口与运行
  • toy 例子负责代码与数学过程

7. 读完这组文档后,至少应该会讲的 8 句话

  1. 当前命令并不是直接进 DLinear,而是经过 build_model_config -> pipeline -> get_models -> get_model_info -> transformer_adapter -> _init_model()
  2. DLinear 虽然走统一四输入接口,但 forecasting 主链里主要使用 x_enc
  3. forward(...) 在 forecasting 任务里只走 forecast(x_enc)
  4. encoder(...) 在 DLinear 里是主运算体,不是 Transformer encoder。
  5. series_decomp 先用 moving_avg 提出 trend,再用 x - trend 得到 seasonal。
  6. Linear_Seasonal + Linear_Trend 最终怎样组成预测输出。
  7. seq_len / pred_len / moving_avg / individual 分别控制哪部分运算。
  8. 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 算子:

如果要把这组文档和“为什么学模型”接起来:

*记录并在线阅读我的笔记*