训练脚本生成器
为农村电压异常检测项目生成标准化的训练脚本。
支持的模型
| 模型名称 | 特点 | 适用场景 |
|---|---|---|
| TimesNet | FFT + 2D卷积,周期建模 | 通用时序异常检测 |
| VoltageTimesNet | 预设电网周期 + TimesNet | 农村电压数据专用 |
| DLinear | 轻量级,序列分解 + 线性层 | 快速实验基线 |
| Informer | ProbSparse 注意力 | 长序列建模 |
| Autoformer | 自相关分解 | 周期性数据 |
| PatchTST | Patch + Transformer | 多变量时序 |
| iTransformer | 倒置Transformer | 变量间关系建模 |
| FiLM | 频域学习 | 周期模式捕获 |
| TimeMixer | 多尺度混合 | 复杂时序模式 |
| Transformer | 标准Transformer | 基准对比 |
| Reformer | 高效注意力 | 内存优化 |
| MICN | 多尺度卷积 | 局部模式 |
| SegRNN | 分段RNN | 序列分割 |
| LightTS | 轻量级 | 快速推理 |
| Nonstationary_Transformer | 非平稳自适应 | 非平稳时序 |
支持的数据集
| 数据集 | 特征数 | 说明 |
|---|---|---|
| RuralVoltage | 17 | 农村电压数据(自定义) |
| PSM | 25 | 服务器监控数据 |
| MSL | 55 | 火星探测器数据 |
| SMAP | 25 | 土壤水分数据 |
| SMD | 38 | 服务器机器数据 |
| SWAT | 51 | 水处理系统数据 |
参数说明
核心参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| model | string | TimesNet | 模型名称 |
| dataset | string | RuralVoltage | 数据集名称 |
| seq_len | int | 100 | 输入序列长度 |
| d_model | int | 64 | 模型隐藏维度 |
| d_ff | int | 128 | 前馈网络维度 |
| e_layers | int | 2 | 编码器层数 |
| top_k | int | 5 | TimesNet 周期数 |
| batch_size | int | 32 | 批次大小 |
| epochs | int | 10 | 训练轮数 |
| lr | float | 0.0001 | 学习率 |
| patience | int | 3 | 早停耐心值 |
| anomaly_ratio | float | 1.0 | 预期异常比例(%) |
| gpu | int | 0 | GPU 设备号 |
数据集特征数映射
yaml
RuralVoltage: 17 PSM: 25 MSL: 55 SMAP: 25 SMD: 38 SWAT: 51
使用示例
基础用法
bash
# 使用默认参数生成 TimesNet 训练脚本 /train model=TimesNet dataset=RuralVoltage # 指定序列长度和训练轮数 /train model=VoltageTimesNet seq_len=200 epochs=20 # 使用 DLinear 作为基线 /train model=DLinear dataset=PSM batch_size=64
高级用法
bash
# 完整参数配置 /train model=TimesNet dataset=RuralVoltage seq_len=100 d_model=128 d_ff=256 e_layers=3 top_k=5 batch_size=32 epochs=20 lr=0.0001 patience=5 anomaly_ratio=1.0 gpu=0 # 多模型对比实验 /train model=TimesNet,DLinear,Informer dataset=RuralVoltage --compare
生成规则
脚本生成位置
code
code/voltage_anomaly_detection/scripts/{dataset}/{model}.sh
脚本模板
bash
#!/bin/bash
# {model} Training Script for {dataset}
# Generated by Claude Code - gen-train-script skill
# Date: {date}
export CUDA_VISIBLE_DEVICES={gpu}
model_name={model}
seq_len={seq_len}
python -u run.py \
--task_name anomaly_detection \
--is_training 1 \
--root_path ./dataset/{dataset}/ \
--model_id {dataset}_{model}_{seq_len} \
--model $model_name \
--data {dataset} \
--features M \
--seq_len $seq_len \
--pred_len 0 \
--d_model {d_model} \
--d_ff {d_ff} \
--e_layers {e_layers} \
--enc_in {enc_in} \
--c_out {c_out} \
--top_k {top_k} \
--num_kernels 6 \
--batch_size {batch_size} \
--train_epochs {epochs} \
--patience {patience} \
--learning_rate {lr} \
--anomaly_ratio {anomaly_ratio} \
--des '{model}_Exp'
执行流程
- •参数解析: 解析用户输入的参数
- •参数验证: 验证模型和数据集名称有效性
- •特征数映射: 自动设置 enc_in 和 c_out
- •目录创建: 创建输出目录(如不存在)
- •脚本生成: 根据模板生成 bash 脚本
- •权限设置: 设置脚本可执行权限
- •输出提示: 显示生成的脚本路径和运行命令
快捷操作
生成脚本后,可以直接运行:
bash
# 运行生成的脚本 bash code/voltage_anomaly_detection/scripts/RuralVoltage/VoltageTimesNet.sh # 或在项目目录下 cd code/voltage_anomaly_detection && bash scripts/RuralVoltage/VoltageTimesNet.sh
注意事项
- •确保已激活正确的 conda 环境:
conda activate tslib - •首次运行前需安装依赖:
pip install -r requirements.txt - •RuralVoltage 数据集首次使用需生成样本数据
- •GPU 内存不足时可减小 batch_size 或 d_model