AgentSkillsCN

gen-train-script

生成时序异常检测模型训练脚本,支持 15 种模型和多种数据集配置

SKILL.md
--- frontmatter
name: gen-train-script
description: 生成时序异常检测模型训练脚本,支持 15 种模型和多种数据集配置
user-invocable: true

训练脚本生成器

为农村电压异常检测项目生成标准化的训练脚本。

支持的模型

模型名称特点适用场景
TimesNetFFT + 2D卷积,周期建模通用时序异常检测
VoltageTimesNet预设电网周期 + TimesNet农村电压数据专用
DLinear轻量级,序列分解 + 线性层快速实验基线
InformerProbSparse 注意力长序列建模
Autoformer自相关分解周期性数据
PatchTSTPatch + Transformer多变量时序
iTransformer倒置Transformer变量间关系建模
FiLM频域学习周期模式捕获
TimeMixer多尺度混合复杂时序模式
Transformer标准Transformer基准对比
Reformer高效注意力内存优化
MICN多尺度卷积局部模式
SegRNN分段RNN序列分割
LightTS轻量级快速推理
Nonstationary_Transformer非平稳自适应非平稳时序

支持的数据集

数据集特征数说明
RuralVoltage17农村电压数据(自定义)
PSM25服务器监控数据
MSL55火星探测器数据
SMAP25土壤水分数据
SMD38服务器机器数据
SWAT51水处理系统数据

参数说明

核心参数

参数类型默认值说明
modelstringTimesNet模型名称
datasetstringRuralVoltage数据集名称
seq_lenint100输入序列长度
d_modelint64模型隐藏维度
d_ffint128前馈网络维度
e_layersint2编码器层数
top_kint5TimesNet 周期数
batch_sizeint32批次大小
epochsint10训练轮数
lrfloat0.0001学习率
patienceint3早停耐心值
anomaly_ratiofloat1.0预期异常比例(%)
gpuint0GPU 设备号

数据集特征数映射

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'

执行流程

  1. 参数解析: 解析用户输入的参数
  2. 参数验证: 验证模型和数据集名称有效性
  3. 特征数映射: 自动设置 enc_in 和 c_out
  4. 目录创建: 创建输出目录(如不存在)
  5. 脚本生成: 根据模板生成 bash 脚本
  6. 权限设置: 设置脚本可执行权限
  7. 输出提示: 显示生成的脚本路径和运行命令

快捷操作

生成脚本后,可以直接运行:

bash
# 运行生成的脚本
bash code/voltage_anomaly_detection/scripts/RuralVoltage/VoltageTimesNet.sh

# 或在项目目录下
cd code/voltage_anomaly_detection && bash scripts/RuralVoltage/VoltageTimesNet.sh

注意事项

  1. 确保已激活正确的 conda 环境: conda activate tslib
  2. 首次运行前需安装依赖: pip install -r requirements.txt
  3. RuralVoltage 数据集首次使用需生成样本数据
  4. GPU 内存不足时可减小 batch_size 或 d_model