Skip to content

收束 — 端到端流程汇总

1. 端到端流程图(含 subgraph)


2. Tensor 变化汇总表

步骤操作输入 shape输出 shape关键参数
①② 归一化mean/std detach(2,12,4)(2,12,4)dim=1, keepdim=True
③ permute(0,2,1)(2,12,4)(2,4,12)变量轴提前
④-1 paddingReplicationPad1d(0,2)(2,4,12)(2,4,14)右端复制2步
④-2 unfolddim=-1, size=4, step=2(2,4,14)(2,4,6,4)patch_num=6
④-3 reshapeB×C合并(2,4,6,4)(8,6,4)B*C=8
④-4 embeddingLinear(4→16)+pos(8,6,4)(8,6,16)d_model=16
⑤ EncoderEncoderLayer×1(8,6,16)(8,6,16)patch级注意力
⑥ reshapeB*C还原(8,6,16)(2,4,6,16)n_vars=4
⑦ permute(0,1,3,2)(2,4,6,16)(2,4,16,6)d_model/patch互换
⑧-1 Flattenstart_dim=-2(2,4,16,6)(2,4,96)head_nf=96
⑧-2 Linearhead_nf→pred_len(2,4,96)(2,4,3)FlattenHead
⑧-3 permute(0,2,1)(2,4,3)(2,3,4)还原(B,pred,C)
⑨ 反归一化×stdev+means(2,3,4)(2,3,4)广播

3. 文档覆盖范围 × tensor 变化

文档层级覆盖的 tensor 阶段核心内容
01-Layer0-接入界面Layer 0config→init;batch I/OCONFIG映射、padding=stride、head_nf计算
02-Layer1-forecast主链Layer 1(2,12,4)(2,3,4) 的9步概览归一化+channel-ind+反归一化
03-Layer2A-PatchEmbeddingLayer 2A(2,4,12)(8,6,16)ReplicationPad+unfold+reshape+embedding
04-Layer2B-EncoderLayer 2B(8,6,16)(8,6,16)QKV投影+einsum注意力+Conv1d FFN
04D-Layer4-例子-AttentionLayer到returnAttention 叶子例子(1,2,4)(1,2,2,2)(1,2,4)用具体 Q/K/V 矩阵手算 scores、softmax、AV、out_projection

4. 核心设计决策

决策实现方式效果
Patch tokenizationReplicationPad + unfold 滑窗每个 token 包含局部上下文,比单步 token 语义更丰富
Channel-Independentreshape(B*C,...) 合并变量到 batch注意力只在同变量 patch 间,消除变量互干扰
实例归一化detach mean/std,归一化+反归一化消除分布偏移,detach 防止模型"逆向工程"统计量
FlattenHeadFlatten(d_model×patch_num) + Linear简单线性映射,不引入额外归纳偏置
FullAttention(不是 ProbAttention)标准 scaled dot-productpatch_num 较小(6个token),O(n²) 可接受

5. 与同类模型的结构对比

特性DLinearPatchTSTInformer
token 单位整个序列(seq_len 是 Linear 输入维度)patch(局部子序列)单个时间步
变量处理每个变量独立 Linear(individual=False 时共享)Channel-Independent(reshape B*C)多变量混合
注意力FullAttention on patch_num tokensProbSparse Attention on seq_len tokens
归一化实例归一化(RevIN 风格)
时序分解移动平均(seasonal+trend)
输出映射Linear(seq_len→pred_len)FlattenHead(head_nf→pred_len)Linear(d_model→c_out)
计算复杂度O(seq_len)O(patch_num²) ≪ O(seq_len²)O(seq_len × log seq_len)

6. 下一步读什么

  • 想理解 channel-independent 的直觉:重读 03-Layer2A §5.4(reshape 的语义)和 §5.3(unfold toy 数值)
  • 想理解注意力计算细节:先读 04D-Layer4-例子-AttentionLayer到return,再读 04C-Layer5-FullAttention
  • 想对比 PatchTST 和 Informer 的 Encoder 差异:Informer Encoder 有 ConvLayer distilling(逐层缩短 seq_len),PatchTST 无此机制
  • 想在 TFB 里跑 PatchTST:关注 01-Layer0 §5.1(patch_len/stride 是关键超参,通过 MODEL_HYPER_PARAMS 设置)

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