Appearance
Level 4 short_forecast 五段总览
Abstract
入口:
pythonshort_forecast(x_enc, x_mark_enc, x_dec, x_mark_dec)这一层解释:
short_forecast(...)内部先按顺序怎么推进,再按逻辑分块怎样嵌套。
1. 上一层与当前层位置
上一层是:
当前层是:
Level 4- 对应
forward(...)里真正进入的业务主体short_forecast(...)
这一层还不展开:
DataEmbedding内部三种编码细节Encoder内部 attention / FFNDecoder内部 self-attention / cross-attention / projection
1.5 本层入口参数含义
x_enc- encoder 数值输入
x_mark_enc- encoder 时间特征输入
x_dec- decoder 数值输入
x_mark_dec- decoder 时间特征输入
pred_len- 决定最终截取多少步
d_model- 决定 embedding / encoder / decoder 的隐藏维
1.6 本层输出含义
本层输出还不是 forward(...) 的最终返回值,而是:
python
dec_out含义是:
short_forecast(...)已经把四输入经过标准化、embedding、encoder、decoder、反标准化处理,得到可供forward(...)截取未来段的结果。
2. 当前层第一性
short_forecast(...) 的第一性是:
把 Informer 的四输入,沿着“标准化 -> embedding -> encoder -> decoder -> 反标准化”的主链,变成可以截取
pred_len的预测结果。
2.5 当前层张量流水线图
先只从“输入张量进入流水线”这个角度固定全貌:
text
x_enc
-> 4A 标准化
-> 4B enc_embedding
-> 4C encoder
-> encoder 上下文 enc_out
x_dec
-> 4B dec_embedding
-> 4D decoder(读取 enc_out)
-> 4E 反标准化
-> 返回 dec_out
-> forward 中截最后 pred_len当前真实例子里:
text
x_enc: (4, 96, 7)
x_mark_enc: (4, 96, 4)
x_dec: (4, 72, 7)
x_mark_dec: (4, 72, 4)
-> enc_embedding: (4, 96, 32)
-> encoder: (4, L', 32)
-> dec_embedding: (4, 72, 32)
-> decoder: (4, 72, 7)
-> forward 截取: (4, 24, 7)3. 先看顺序图
4. 再看抽象索引树
这棵树表示的是:
- 同一个函数
short_forecast(...)的内部逻辑分块 - 不是五个彼此独立的对象
- 也不是五个平行的外层模块
5. 当前例子的具体落地
当前真实例子:
x_enc.shape = (4, 96, 7)x_mark_enc.shape = (4, 96, 4)x_dec.shape = (4, 72, 7)x_mark_dec.shape = (4, 72, 4)
关键参数:
seq_len = 96label_len = 48pred_len = 24d_model = 32c_out = 7
所以这一层的大 shape 主线是:
text
x_enc: (4, 96, 7)
-> embedding -> (4, 96, 32)
-> encoder -> (4, L', 32)
x_dec: (4, 72, 7)
-> embedding -> (4, 72, 32)
-> decoder -> (4, 72, 7)
-> forward 截最后 pred_len -> (4, 24, 7)5.5 五段的 input / output 语义
4A 标准化
- input:原始
x_enc - output:标准化后的
x_enc - 含义:把 encoder 数值输入拉到更稳定的尺度
4B DataEmbedding
- input:
x_enc/x_dec与x_mark_enc/x_mark_dec - output:
enc_out/dec_out隐藏表示 - 含义:把原始数值与时间特征映射成
d_model维表示
4C Encoder
- input:
enc_out - output:带上下文关系的
enc_out - 含义:把历史窗口编码成可被 decoder 读取的上下文
4D Decoder
- input:
dec_out与enc_out - output:回到
c_out通道空间的 decoder 结果 - 含义:把 decoder 自身输入与 encoder 上下文融合
4E 反标准化 + 截取点
- input:decoder 输出
- output:回到原始尺度、可被
forward(...)截取的结果 - 含义:为最终保留未来
pred_len段做准备
6. 这一层已经有哪些下层文档
4B DataEmbedding
入口接口:
python
enc_out = self.enc_embedding(x_enc, x_mark_enc)
dec_out = self.dec_embedding(x_dec, x_mark_dec)下钻文档:
4C Encoder
入口接口:
python
enc_out, attns = self.encoder(enc_out, attn_mask=None)下钻文档:
4D Decoder
入口接口:
python
dec_out = self.decoder(dec_out, enc_out, x_mask=None, cross_mask=None)下钻文档:
7. 当前层和附录的关系
这一层的参数解释和文件树不再占用 Level。
需要查时再看:
8. 下一层怎么走
当前 BFS 顺序固定为:
4B DataEmbedding4C Encoder4D Decoder
也就是:
9. 只留一句
Level 4 要同时掌握两件事:
short_forecast(...)的执行顺序,以及它内部的五个逻辑分块。