Appearance
分支树地图:从 1x1 到 m×n
Abstract
当前你已经打通了一个最小例子:
- 1 个模型:
DLinear- 1 个 strategy:
rolling_forecast- 1 个 adapter:
transformer_adapter- 1 个数据文件:
ETTh1.csv这一篇只做一件事:
把这个
1x1主线扩成m×n分支树,明确这个仓库是在哪些层分叉的。
1. 当前最小主线在总树里的位置
当前最小主线可以压成:
text
ETTh1.csv
-> DLinear
-> transformer_adapter
-> rolling_forecast它只是整个仓库分支树中的一条具体路径。
2. 总分支树
3. 三个最重要的分叉层
当前最重要的分叉层只有三个:
strategy分叉model分叉adapter分叉
这三个分叉不是在同一个函数里发生的。
4. strategy 分叉发生在哪
strategy 分叉发生在:
python
eval_model(model_factory, series_list, evaluation_config)更具体地说,是这里:
python
strategy_class = STRATEGY.get(evaluation_config["strategy_args"]["strategy_name"])注册表在:
当前仓库里至少有:
rolling_forecastfixed_forecast
4.1 strategy 分支树
4.2 两条 strategy 的接口差异
共同点:
- 都继承
ForecastingStrategy - 都通过:
strategy.execute(series_name, model_factory)- 进入各自的
_execute(...)
不同点:
rolling_forecast- fit 一次
- 测试区间做 rolling 窗口预测
- 关键主体:
_eval_batch(...)
fixed_forecast- fit 一次
- 直接对固定 horizon 做一次 forecast
- 主体更短,不需要 rolling index 和 batch maker
4.3 当前主线落在哪
当前主线走的是:
text
strategy_name = rolling_forecast
-> RollingForecast
-> _eval_batch(...)5. model 分叉发生在哪
model 分叉发生在:
python
get_models(model_config)更具体地说,是这里:
python
model_info = get_model_info(model_config)对应文件:
5.1 model 分支树
5.2 当前仓库里 time_series_library 这一支
对应导出表在:
这里能看到一大批模型:
DLinearInformerPatchTSTAutoformerFEDformerTimesNetTransformer- ...
5.3 当前主线落在哪
当前主线走的是:
text
model_name = time_series_library.DLinear
-> get_model_info(...)
-> DLinear6. adapter 分叉发生在哪
adapter 分叉也发生在:
python
get_model_info(model_config)更具体地说,是这里:
python
adapter_name = model_config.get("adapter")
if adapter_name is not None:
model_info = _import_attribute(ADAPTER[adapter_name])(model_info)adapter 注册表在:
6.1 adapter 分支树
6.2 这几条 adapter 的语义差异
transformer_adapter
- 对接
time_series_library这批模型 - 当前你已经打通:
TransformerAdapter._process(...)DLinear.forward(...)
darts_*_adapter
- 对接 Darts 体系模型
- 更接近:
forecast_fit(...)forecast(...)TimeSeries.from_dataframe(...)
6.3 当前主线落在哪
当前主线走的是:
text
adapter = transformer_adapter
-> TransformerAdapter7. 哪些分叉已经有图谱,哪些还没有
已经有详细主线图谱
rolling_forecastDLineartransformer_adapter
也就是你当前走通的这一条:
text
DLinear + transformer_adapter + rolling_forecast还没有细致图谱,但已经能定位
fixed_forecastInformerPatchTSTdarts_*_adapter
也就是说:
现在你缺的不是“它们在哪分叉”,而是“每条分叉内部怎么继续展开”。
8. 之后最合理的扩展顺序
如果按性价比排序,最值得的扩展顺序是:
8.1 先扩模型分支
从:
DLinear
扩到:
Informer
原因:
- strategy 和 adapter 都先保持不变
- 只换模型
- 这样你能看清:
- 哪些是框架固定部分
- 哪些是模型内部变化部分
最推荐的新路径是:
text
ETTh1.csv
-> Informer
-> transformer_adapter
-> rolling_forecast8.2 再扩 strategy 分支
从:
rolling_forecast
扩到:
fixed_forecast
原因:
- 模型先保持
DLinear - adapter 也保持
transformer_adapter - 这样只换 strategy
最推荐的新路径是:
text
ETTh1.csv
-> DLinear
-> transformer_adapter
-> fixed_forecast8.3 最后再扩 adapter 分支
从:
transformer_adapter
扩到:
darts_*_adapter
原因:
- 这一层变化最大
- 需要同时理解不同模型生态的接口习惯
9. 当前最应该继续画哪棵子树
现在最值得继续补的,不是新的总图,而是下面这棵:
因为:
- 你已经有了
DLinear的完整坐标 - 只差一个第二模型,来建立“框架固定 / 模型变化”的对照能力
10. 最后压成一句
当前这套文档已经把
1x1最小主线打通;下一步最合理的扩展不是继续深挖局部,而是沿着“模型 / strategy / adapter”三棵分支树,逐步把1x1扩成m×n。