一、标准化目录结构
your_project/
├── work_dirs/ # 所有实验结果统一存放
│ ├── 20210520_1430_resnet50_lr0.001/ # 子目录命名:时间戳_模型名称_关键改动
│ │ ├── config.yaml # 实验配置副本(必存)
│ │ ├── log.txt # 完整运行日志(含训练/测试输出)
│ │ ├── model_best.pth # 最优模型权重
│ │ ├── results.csv # 关键指标汇总(如准确率、loss曲线数据)
│ │ ├── code_snapshot/ # 代码副本(可选,复杂实验建议存)
│ │ │ ├── train.py # 训练脚本快照
│ │ │ └── model.py # 模型定义快照
│ │ └── figures/ # 可视化结果(如loss曲线、混淆矩阵)
│ └── 20210521_0915_transformer_dropout0.2/ # 新实验目录
└── train.py # 主训练脚本(超参数通过argparse/.yaml传入)
二、log.txt 开头固定格式(直接复制到日志文件首行)
==================================================
【实验基本信息】
实验ID:20210520_1430_resnet50_lr0.001
实验目的:验证学习率0.001对ResNet50在CIFAR-10数据集上的分类性能影响
启动命令:python train.py --config configs/resnet50_cifar10.yaml --lr 0.001 --seed 42
启动时间:2021-05-20 14:30:22
环境信息:Python 3.7 + Theano 0.7.0 + CUDA 3.2(GPU:NVIDIA Tesla C1060)
随机种子:42(确保结果可复现)
Git Commit Hash:a7f3bc9(代码版本回溯)
==================================================
【核心超参数】
模型名称:ResNet50
数据集:CIFAR-10(训练集50000张,测试集10000张)
学习率:0.001(优化器:SGD,动量:0.9,权重衰减:1e-4)
批次大小:64
训练轮数:100
关键改动:激活函数替换为Sigmoid(GELU未普及),简化注意力机制模块
==================================================
【训练/测试日志】
(以下接脚本运行输出,如epoch、loss、acc等)
Epoch 1/100: Train Loss=2.301, Val Acc=35.2%
...
三、配套 config.yaml 模板
# ===================== 基础配置(必改)=====================
experiment:
id: "20210520_1430_resnet50_lr0.001" # 与实验目录名一致
purpose: "验证学习率0.001对ResNet50在CIFAR-10的分类性能影响" # 实验目的
seed: 42 # 随机种子(确保可复现)
device: "cuda:0" # 设备(cpu/cuda:0/cuda:1)
git_commit: "a7f3bc9" # Git提交哈希(代码版本)
# ===================== 数据配置 =====================
data:
dataset_name: "CIFAR-10" # 数据集名称
root: "./data/cifar10" # 数据集存储路径
train_batch_size: 64 # 训练批次大小
val_batch_size: 128 # 验证/测试批次大小
num_workers: 4 # 数据加载线程数
augment: # 数据增强配置
resize: 224 # 图像Resize尺寸
random_crop: True # 随机裁剪
random_flip: True # 随机水平翻转
normalize: # 归一化参数(ImageNet均值/方差)
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
# ===================== 模型配置 =====================
model:
name: "ResNet50" # 模型名称(需与代码中模型定义对应)
pretrained: True # 是否使用预训练权重
num_classes: 10 # 类别数(CIFAR-10为10类)
custom_config: # 自定义改动(与log.txt关键改动一致)
activation: "GELU" # 激活函数
add_attention: True # 是否添加注意力模块
# ===================== 训练配置 =====================
training:
epochs: 100 # 总训练轮数
resume: False # 是否从断点续训
resume_path: "./work_dirs/20210520_1430_resnet50_lr0.001/model_last.pth" # 断点路径
early_stop: # 早停配置(防止过拟合)
enable: True
patience: 10 # 连续10轮验证集指标不提升则停止
monitor: "val_acc" # 监控指标(val_acc/val_loss)
# ===================== 优化器配置 =====================
optimizer:
type: "AdamW" # 优化器类型(Adam/SGD/AdamW)
lr: 0.001 # 初始学习率
weight_decay: 1e-4 # 权重衰减(正则化)
momentum: 0.9 # SGD专用(AdamW可忽略)
# ===================== 学习率调度器 =====================
lr_scheduler:
type: "CosineAnnealingLR" # 调度器类型(StepLR/CosineAnnealingLR)
T_max: 100 # CosineAnnealing周期(与总epochs一致)
eta_min: 1e-6 # 最小学习率
step_size: 30 # StepLR专用(每30轮降权)
gamma: 0.1 # StepLR专用(学习率衰减系数)
# ===================== 输出配置 =====================
output:
work_dir: "./work_dirs/20210520_1430_resnet50_lr0.001" # 实验结果存储路径
save_freq: 10 # 每10轮保存一次模型权重
log_freq: 100 # 每100个batch打印一次训练日志
save_best_only: True # 只保存验证集最优模型
四、团队共享实验记录表格(Markdown 版,可直接复制到 Git/Notion 共享)
| 20210520_1430_resnet50_lr0.001 |
验证学习率0.001对ResNet50在CIFAR-10的分类性能影响 |
模型:ResNet50(GELU+注意力);数据集:CIFAR-10;lr=0.001;epochs=100;seed=42 |
测试准确率:89.7%;训练loss:0.32;最优epoch:85;推理速度:120img/s(A100) |
xx |
2021-05-20 14:30 |
已完成 |
可复现 |
对比lr=0.01(准确率87.2%),低学习率更稳定但训练时间增加20% |
| 20210521_0915_transformer_dropout0.2 |
验证dropout=0.2对Transformer文本分类的过拟合抑制 |
模型:BERT-base;数据集:IMDB;dropout=0.2;lr=2e-5;batch_size=32;seed=42 |
测试准确率:88.3%;val_loss=0.29;过拟合程度:训练/验证acc差3.1%(原dropout=0.1时差5.7%) |
xx |
2021-05-21 09:15 |
进行中 |
待验证 |
今日18:00前完成训练,需补充混淆矩阵分析 |
| 20210522_1600_cnn_lstm_fusion |
验证CNN+LSTM融合模型对时序数据的预测效果 |
模型:CNN(特征提取)+LSTM(时序建模);数据集:ECG;lr=0.0005;epochs=50;seed=42 |
测试F1-score:0.92;召回率:0.91;精确率:0.93 |
xx |
2021-05-22 16:00 |
未启动 |
- |
依赖数据集ECG-5000,需提前配置TensorFlow环境 |
五、Excel 版表格字段说明(直接新建Excel,按以下字段建列即可)
| 实验ID |
文本 |
严格遵循「时间戳_模型名称_关键改动」格式(如20210520_1430_resnet50_lr0.001) |
| 实验目的 |
文本 |
简洁明了(1-2句话,说明“验证什么+预期效果”) |
| 核心配置 |
文本 |
只写关键信息(模型+数据集+核心超参数+自定义改动),无需冗余 |
| 关键结果 |
文本 |
量化指标(准确率/loss/F1等)+ 核心结论,避免模糊表述 |
| 负责人 |
文本 |
谁 |
| 启动时间 |
日期时间 |
精确到分钟(如2021-05-20 14:30) |
| 结束时间 |
日期时间 |
实验完成后补充 |
| 状态 |
下拉选项 |
未启动/进行中/已完成/失败(Excel可设置数据验证,限制选择) |
| 复现情况 |
下拉选项 |
可复现/不可复现/待验证(避免歧义) |
| 环境信息 |
文本 |
简化版(如Python3.7+PyTorch2.1+A100) |
| Git Commit Hash |
文本 |
代码版本(便于回溯) |
| 备注 |
文本 |
问题记录/改进建议/对比结论等 |