设置训练数据
训练数据配置决定模型从哪些运行记录中学习,以及用哪些记录评估效果。比如训练冰箱温控模型时,应让训练集覆盖压缩机启停、开门扰动和不同环境温度,并保留其他运行段检查模型能否预测相同工况下的温度变化。
本页从已经整理好的 NPZ/HDF5 文件开始。变量抽取、数组形状和轨迹边界的制作方法见准备数据。
指定数据文件
将下面的 data 块放入任务配置中,替换为实际文件路径:
data:
path: data/train.npz
val_path: null
train_ratio: 0.8
split_mode: outside_traj
split_seed: 42
batch_size: 256
num_workers: 0
normalization: min_max_scaler相对路径以配置文件所在目录为基准。也可以在运行时指定文件,CLI 值优先于 YAML:
revive train --config config.yaml --train-data train.npz --val-data val.npz提供 val_path 或 --val-data 后,训练文件全部用于训练,独立验证文件用于验证;未提供时,才按 train_ratio 划分训练文件。验证集用于选择模型和参数,最终业务测试应另留数据。
划分数据集
根据运行记录选择划分方式
split_mode | 如何划分 | 适合什么时候用 |
|---|---|---|
outside_traj(默认) | 整条轨迹分配到训练集或验证集 | 有多个独立运行段,需要检查其他运行段的预测效果 |
inside_traj | 在每条轨迹内划分训练和验证片段 | 轨迹数较少,接受训练与验证片段存在时间相关性 |
inside_traj_reverse | 使用轨迹内划分的反向分配方式 | 对比同一轨迹不同时段的覆盖情况 |
例如,每天一条完整温控记录时,可以按整天划分。若只切出同一天的前后片段,设备状态和环境条件可能十分相近,应结合其他日期或工况的数据解读误差。
图:按整条轨迹或轨迹内部片段划分数据;最终测试数据单独保留。
整次运行只划分一次,所有训练阶段使用相同划分。ADM2 的 holdout_ratio 不会创建另一套验证集;需要修改比例时,设置 data.train_ratio。
固定划分,比较不同训练参数
data.split_seed 固定数据划分,training.seed 控制模型初始化、采样和训练随机性。比较学习率等参数时保持两者一致;检查结果对初始化的敏感程度时,固定 split_seed,再使用同一组训练种子重复比较。
设置归一化
normalization | 处理方式 | 选择依据 |
|---|---|---|
min_max_scaler(默认) | 按数据中心与半宽换算 | 先用它建立基线,检查各变量的数值尺度 |
z_score | 按均值与标准差换算 | 分布与尺度差异明显时,作为对照方案比较 |
归一化统计使用本次运行可见的全部训练与验证数据,在划分前计算。即使通过独立 val_path 提供验证文件,该文件仍参与统计。因此,验证集适合选模;要检验完全未见的数据,应另留不参与本次归一化、训练和选模的最终测试集。
统计量随模型保存,部署时由模型复用。物理边界来自 graph.columns,数据最大值不会自动成为设备的动作上限。更换归一化方式会改变模型的数值映射,应使用新的运行记录比较,已有模型复用和续训需保持统计信息兼容。
调整批量与读取速度
| 遇到的问题 | 优先调整 | 检查什么 |
|---|---|---|
| 显存或内存不足 | 减小 batch_size | 单批占用、训练曲线与多步训练长度 |
| 设备利用率低,时间花在取数据上 | 从 num_workers: 0 开始逐步增加 | 每轮耗时、CPU 与内存占用 |
| 大批量后每轮更快,但误差变差 | 比较批量与学习率组合 | 固定验证条件下的选中模型 |
| 参数搜索中读取进程过多 | 限制 num_workers | 每个试验申请的 CPU 配额 |
data.batch_size 是通用批量设置;算法若显式设置自己的 batch_size,还需核对该阶段的生效值。num_workers 控制 DataLoader 进程数,可增加并行读取能力,也会占用额外内存。验证缓存和准备线程单独在验证执行设置中配置。
检查数据质量
revive validate --config config.yaml --train-data train.npz --data-health先检查缺失值、非有限值、类别集合、连续量范围和轨迹结构,再查看训练与验证是否覆盖相同的主要工况。体检只生成报告,不自动清洗数据或改变归一化。
以温控为例,若验证集主要包含高温开门工况,而训练集几乎只有稳定低温段,增加训练轮数通常不能补齐这种覆盖差异。应补充相应数据,或明确模型的适用范围。图表与报告读法见分析训练结果,各字段类型见数据字段参考。