Time-Series-Library 仓库的使用

https://github.com/thuml/Time-Series-Library/

该仓库是标准化时序预测框架 ,模型接入遵循固定规范,核心只需要做4件事:写模型 → 注册模型 → 写配置 → 运行脚本。


一、前置准备

1. 克隆仓库+配置环境

bash 复制代码
# 克隆官方仓库
git clone https://github.com/thuml/Time-Series-Library.git
cd Time-Series-Library

# 安装依赖(推荐conda环境)
pip install torch torchvision numpy pandas scikit-learn matplotlib tqdm

2. 仓库核心结构(只需关注这4个目录)

复制代码
Time-Series-Library/
├── models/          # ✅ 所有模型存放地(放你的新模型)
├── configs/         # ✅ 模型配置文件(超参、数据集、序列长度)
├── run.py           # ✅ 主运行脚本(统一入口)
└── exp/             # 训练/测试逻辑(无需修改,框架自带)

二、实操:添加自定义模型 MyMLP

我们实现一个最简单的MLP时序预测模型,严格遵循仓库的模型接口规范。

步骤1:编写新模型代码

models/ 目录下新建文件 my_mlp.py,写入以下代码:

python 复制代码
import torch
import torch.nn as nn

# 🔥 核心:模型类名 = 后续运行时 --model 参数
class MyMLP(nn.Module):
    """
    自定义时序预测MLP模型(适配Time-Series-Library接口)
    接口强制要求:__init__ + forward 两个方法
    输入输出维度:[Batch, Seq_Len, Channel] → [Batch, Pred_Len, Channel]
    """
    def __init__(self, configs):
        super(MyMLP, self).__init__()
        # 从配置文件读取核心参数(框架自动传入)
        self.seq_len = configs.seq_len    # 输入序列长度
        self.pred_len = configs.pred_len  # 预测序列长度
        self.channel = configs.enc_in     # 特征维度

        # 自定义MLP网络
        self.flatten = nn.Flatten()
        self.fc = nn.Sequential(
            nn.Linear(self.seq_len * self.channel, 128),
            nn.ReLU(),
            nn.Linear(128, self.pred_len * self.channel)
        )

    def forward(self, x_enc, x_mark_enc=None, x_dec=None, x_mark_dec=None, mask=None):
        """
        前向传播(严格匹配框架入参!多余参数保留即可)
        x_enc: 输入时序数据 [Batch, seq_len, channel]
        return: 预测结果 [Batch, pred_len, channel]
        """
        # 1. 展平:[B, L, D] → [B, L*D]
        x = self.flatten(x_enc)
        # 2. MLP映射
        x = self.fc(x)
        # 3. 重塑为预测维度:[B, O*D] → [B, O, D]
        pred = x.view(-1, self.pred_len, self.channel)
        return pred

接口规范 :所有模型必须接收 configs 初始化,forward 入参必须兼容框架的传参(多余参数留空即可)。


步骤2:注册新模型(让框架识别你的模型)

打开 models/__init__.py修改两处

  1. 导入你的模型类
  2. 将模型加入 Models 字典

修改后代码如下(只展示修改部分):

python 复制代码
# 1. 新增:导入自定义MyMLP模型
from .my_mlp import MyMLP

# 模型注册字典(框架通过这个字典找模型)
Models = {
    'Autoformer': Autoformer,
    'Crossformer': Crossformer,
    'DLinear': DLinear,
    # ... 官方原有模型 ...
    # 2. 新增:注册你的模型
    'MyMLP': MyMLP,
}

关键 :字典的键(MyMLP) = 运行时 --model 参数,必须和模型类名一致。


步骤3:创建模型配置文件

configs/ 目录下新建文件 MyMLP_ETTh1.json(适配ETTh1数据集,官方自带):

json 复制代码
{
    "model": "MyMLP",
    "data": "ETTh1",
    "root_path": "./dataset/ETT/",
    "data_path": "ETTh1.csv",
    "seq_len": 96,
    "pred_len": 96,
    "enc_in": 7,
    "batch_size": 32,
    "learning_rate": 0.001,
    "train_epochs": 10,
    "patience": 3,
    "embed": "timeF",
    "freq": "h"
}

✅ 参数说明:

  • seq_len:输入历史序列长度
  • pred_len:预测序列长度
  • enc_in:数据集特征数(ETTh1=7)
  • 其余参数直接复用官方模板即可

步骤4:运行训练脚本

回到项目根目录,执行一行命令启动训练:

bash 复制代码
python run.py \
--model MyMLP \
--data ETTh1 \
--config ./configs/MyMLP_ETTh1.json
命令参数解释
  • --model MyMLP:指定你注册的模型名
  • --data ETTh1:指定数据集(官方自带,无需额外下载)
  • --config:指定你的配置文件路径

三、验证运行成功

出现以下日志,说明新模型接入并运行成功

复制代码
>>>>>> Start training MyMLP on ETTh1...
Epoch: 1/10, Train Loss: 0.324, Val Loss: 0.287
Epoch: 2/10, Train Loss: 0.211, Val Loss: 0.203
...
>>>>>> Training finished
>>>>>> Test loss: 0.198

训练完成后,模型权重、日志会自动保存在 results/ 目录下。


四、进阶:替换为你自己的模型

只需修改 models/my_mlp.py 中的模型结构接口完全不用改

python 复制代码
# 示例:替换为CNN/Transformer/任意模型
class MyModel(nn.Module):
    def __init__(self, configs):
        super().__init__()
        self.seq_len = configs.seq_len
        self.pred_len = configs.pred_len
        self.channel = configs.enc_in
        
        # 在这里写你的模型网络
        self.backbone = nn.Conv1d(...) 

    def forward(self, x_enc, x_mark_enc=None, x_dec=None, x_mark_dec=None, mask=None):
        # 你的前向传播逻辑
        pred = self.backbone(x_enc.transpose(1,2)).transpose(1,2)
        return pred

然后重新注册、运行即可。


五、常见报错解决

  1. Model not found :检查 models/__init__.py 注册是否正确,模型名大小写一致
  2. 维度不匹配 :严格保证输出 [Batch, pred_len, channel]
  3. 参数缺失 :配置文件中必须包含 seq_len/pred_len/enc_in

总结

  1. 新模型放在 models/,遵循 __init__ + forward 接口
  2. models/__init__.py 注册模型
  3. 配置文件放在 configs/,指定模型名和超参
  4. run.py 一键启动训练

按照这个流程,你可以把任何时序模型无缝接入该框架并运行。

相关推荐
HeteroCat1 小时前
DeepSeek V4 来了:我熬了一中午,把技术报告啃完了
人工智能
阿杰学AI2 小时前
AI核心知识135—大语言模型之 OpenClaw(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·ai编程·openclaw
薛定e的猫咪2 小时前
多智能体强化学习求解 FJSP 变体全景:动态调度、AGV 运输、绿色制造与开源代码导航
人工智能·学习·性能优化·制造
机器之心2 小时前
DeepSeek V4 双版本正式上线!
人工智能·openai
机器之心2 小时前
机器人马拉松超越人类之后:本体走到尽头,智能成为下半场
人工智能·openai
可观测性用观测云2 小时前
观测云 Obsy AI Copilot:带上你的 AI 副驾,进入你的观测现场
人工智能
小明的IT世界2 小时前
Agent系列3:改变你做 AI Agent 的方式
人工智能
AI科技摆渡2 小时前
三步极速对接 Grok-Video-3 视频生成 API
人工智能·音视频
是大强2 小时前
NCNN简介
人工智能