YiMeng-SYSU's picture
Initial commit of transfer learning project files
e3469ed verified
program: train.py
# 注意:Hyperband 必须配合 random 使用,而不是 bayes
# 因为 Hyperband 依靠随机采样来覆盖搜索空间,然后靠剪枝来提高效率
method: random
project: "cifar10_chanllenge"
name: "20251210-Hyperband-AdamW-LrSearch"
description: >
本次实验目的是为了验证 ResNet18 在 CIFAR-10 上
使用 AdamW 配合强正则化 (Weight Decay > 0.01) 的效果。
使用了全显存加载优化。
run_cap: 100
command:
- ${env}
- ${interpreter}
- ${program}
- ${args}
metric:
name: test_epoch_acc
goal: maximize
# 🔥 核心:Hyperband 提前终止策略
early_terminate:
type: hyperband
# 最小迭代次数:跑满 10 个 Epoch 后才开始评估是否要杀掉
# 避免模型还没热身就被误杀
min_iter: 10
# 淘汰比例:每次淘汰 2/3 的落后分子,保留 1/3 进入下一轮
eta: 3
parameters:
project_name:
value: "cifar10_hyperband_search"
# --- 训练轮数 ---
train:
parameters:
epochs:
# 这里设置最大轮数。Hyperband 会自动在中间截断
# 设为 150,保证“幸存者”能跑完全程,收敛到极致
value: 150
# --- 数据参数 ---
data:
parameters:
batch_size:
# 搜索区间:涵盖了 SGD 喜欢的小 Batch 和 AdamW 喜欢的大 Batch
values: [256, 512, 1024]
# --- 模型参数 ---
model:
parameters:
type:
value: "ResNet18"
num_classes:
value: 10
dropout_rate:
# ResNet 自带 BN,通常不需要大 Dropout,搜一个小范围
distribution: uniform
min: 0.0
max: 0.2
# --- 优化器 (搜索重点) ---
optimizer:
parameters:
name:
# 同时尝试 SGD (传统SOTA王者) 和 AdamW (现代万金油)
values: ['sgd', 'adamw']
lr:
# 学习率跨度要大!因为 SGD 需要 ~0.1,而 AdamW 需要 ~0.001
# log_uniform_values 会在对数尺度上均匀采样,保证两头都能搜到
distribution: log_uniform_values
min: 0.0001
max: 0.2
weight_decay:
# 正则化力度的搜索
distribution: log_uniform_values
min: 1e-4 # 0.0001 (适合 SGD)
max: 1e-1 # 0.1 (适合 AdamW)