Appearance
FITS 收束
1. 端到端流程图
2. Tensor 变化汇总表
以 toy 参数(B=2, seq_len=12, pred_len=4, enc_in=3, dominance_freq=4)为基准:
| 步骤 | 操作 | 输入 shape | 输出 shape | 数据类型 |
|---|---|---|---|---|
| 0 | 原始输入 | (2, 12, 3) | — | float32 |
| 1 | RIN 均值 | (2, 12, 3) | x_mean (2, 1, 3) | float32 |
| 2 | RIN 减均值 | (2, 12, 3) | (2, 12, 3) | float32 |
| 3 | RIN 方差 | (2, 12, 3) | x_var (2, 1, 3) | float32 |
| 4 | RIN 除标准差 | (2, 12, 3) | (2, 12, 3) | float32 |
| 5 | rfft | (2, 12, 3) | (2, 7, 3) | cfloat(复数) |
| 6 | LPF 置零 | (2, 7, 3) | (2, 7, 3) in-place | cfloat |
| 7 | LPF 截取 | (2, 7, 3) | (2, 4, 3) | cfloat |
| 8 | permute | (2, 4, 3) | (2, 3, 4) | cfloat |
| 9 | Linear(4→5) | (2, 3, 4) | (2, 3, 5) | cfloat |
| 10 | permute 还原 | (2, 3, 5) | (2, 5, 3) | cfloat |
| 11 | 零填充 | (2, 5, 3) | (2, 9, 3) | cfloat |
| 12 | irfft | (2, 9, 3) | (2, 16, 3) | float32(实数) |
| 13 | 能量补偿 × 4/3 | (2, 16, 3) | (2, 16, 3) | float32 |
| 14 | 反归一化 | (2, 16, 3) | (2, 16, 3) | float32 |
| 15 | 训练截取 | (2, 16, 3) | (2, 4, 3) | float32 |
3. 核心设计决策回顾
① 为什么在频域插值而非时域外推?
频域插值有理论保证:对于带限信号(只有有限频率成分),频域线性插值等价于 Sinc 插值(最优插值),在时域可以完美重建。时序预测的信号往往是"近似带限"的(高频是噪声),这使得频域假设成立。
② cut_freq 的设计直觉
:序列内的基础周期个数 :多包含一个周期(边界余量) :保留 H 阶谐波(如 H_order=2:基频+2倍频) :固定冗余项,确保频率覆盖足够
③ 输出 seq+pred 而非直接输出 pred
FITS 的输出是整条重构序列,不是只输出预测部分。这是频域方法的自然结果:irfft 总是还原完整序列。在时域预测模型中,通常直接令输出维度=pred_len(如 DLinear 的 Linear(seq_len, pred_len))。FITS 只取输出的最后 pred_len 步,让预测是"重构序列的末端延伸"而非"直接映射"。
④ 复数 Linear 的参数效率
一个 nn.Linear(cut_freq, freq_out, dtype=cfloat) 的实际参数:
- 实部权重:
freq_out × cut_freq - 虚部权重:
freq_out × cut_freq - 偏置:
2 × freq_out
对 seq_len=96, cut_freq=20, freq_out=23(int(20×(96+96)/96)=40→实际更小):参数约
4. 与同类模型的结构对比
| 对比维度 | DLinear | TimesNet | Autoformer | FITS |
|---|---|---|---|---|
| 时序长度假设 | 任意 | 任意 | 任意 | 需 cut_freq ≤ rfft_len |
| 归一化 | 无 | RevIN | 无 | RIN(实例归一化) |
| 高频处理策略 | 无显式处理 | 周期检测 | 季节分解 | LPF 主动滤除 |
| 参数量 | 大(Conv+Inception) | 大(Attention×N) | ~10K(与 C,L 近似无关) | |
| 时间标记 | ❌ | ✅ | ✅ | ❌ |
| 多变量建模 | channel-indep | 混合 | 混合 | 共享/独立可选 |
| 输出机制 | 直接 pred_len | 直接 pred_len | 直接 pred_len | seq+pred 截尾 |
| 适合场景 | 强趋势弱周期 | 显著多周期 | 趋势+周期分离 | 低频主导、追求极小参数 |
5. 文档覆盖表
| 文档 | 覆盖内容 | 关键 tensor 范围 |
|---|---|---|
| [[00-总览]] | 论文动机、LPF 直觉、跨模型对比 | — |
| [[01-Layer0-接入界面]] | TFB 接入、cut_freq 计算、individual 分支 init | 实例化阶段 |
| [[02-Layer1-forward主链]] | RIN→rfft→LPF→Linear→zero-pad→irfft→de-norm | (2,12,3)→(2,16,3) |
| [[调试形参]] | PyCharm/VSCode 调试参数 | 实际数据下的 shape |
| 本文(收束) | 端到端流程 + tensor 汇总 + 设计决策 | — |
6. 下一步读什么
- 理解频域插值的理论基础:Sinc 插值、Nyquist-Shannon 采样定理
- 对比 FEDformer(随机频率采样 + 注意力):同样在频域工作但策略截然不同
- FITS 论文 §4:消融实验,验证各组件(LPF、能量补偿、RIN)的贡献