Appearance
PatchTST 全览流程图收束
Abstract
这是整套文档的出口,把所有层汇总成一张端到端流程图。 读完这一页,你应该能在脑子里复现 PatchTST 从命令行到预测输出的完整路径。
1. 端到端流程图(含 tensor shape)
2. 各文档覆盖范围 × tensor 变化汇总表
| 文件 | 覆盖代码层 | 关键 tensor 入 | 关键 tensor 出 | 核心操作 |
|---|---|---|---|---|
01-Level1 | 命令行 → PatchTST(config) | - | PatchTST 实例 | 参数流,⚠️ n_headers typo |
02-Level2 | DataLoader → forward 入参 | CSV | (2,9,3) / (2,11,3) | label_len 推断,dec_input 无用 |
03-Level3 | forecast() 9步骨架 | (2,9,3) | (2,7,3) | 全链 shape 概览 |
04A | PatchEmbedding | (2,3,9) | (6,4,8) | padding / unfold / reshape / Linear |
04B | Encoder + FlattenHead | (6,4,8) | (2,7,3) | einsum attention / Conv1d FFN / Flatten |
09(当前) | 汇总 | (2,9,3) | (2,7,3) | - |
3. PatchTST 设计决策回顾
决策 1:patch 而非单点 token
| 单点 token(Informer 等) | patch token(PatchTST) | |
|---|---|---|
| token 数量 | seq_len(如 96) | patch_num(如 4) |
| attention 复杂度 | O(seq_len²) | O(patch_num²) |
| 每 token 信息量 | 单个时间步 | 连续 patch_len 步的聚合 |
| 局部时间结构 | 丢失 | 保留 |
决策 2:channel-independent
| channel-mixing | channel-independent(PatchTST) | |
|---|---|---|
| 变量间交互 | 有 | 无 |
| 参数量 | 随 enc_in 增长 | 与 enc_in 无关 |
| 对变量间相关性的利用 | 是 | 否 |
| 实证效果(PatchTST 论文) | 常被噪声主导 | 更稳健 |
决策 3:normalize + denormalize
每个样本、每个变量独立归一化(Reversible Instance Normalization 思路),防止不同变量尺度差异影响模型训练,预测后再还原到原始量纲。
4. 与 DLinear / Informer 的结构对比
| 维度 | DLinear | Informer | PatchTST |
|---|---|---|---|
| 核心操作 | 线性层 | 稀疏 attention | patch + full attention |
| token 粒度 | 无 token | 时间步 | patch |
| 变量策略 | 共享/独立线性 | channel-mixing | channel-independent |
| Decoder | 无 | 有(生成式) | 无(encoder-only) |
| 归一化 | 无 | 无 | RevIN 思路 |
| Level 4 复杂度 | 1 文件 | 2 文件(Encoder+Decoder) | 2 文件(Embedding+Encoder) |
5. 下一步读什么
如果想继续深入:
- iTransformer:把 channel-mixing 的 attention 做到极致,变量间 attention 而非时间步 attention
- TimesNet:用 2D 卷积替代 attention,从不同时间分辨率捕捉周期
- Autoformer:序列分解 + auto-correlation 的另一种思路