鼠扑 发表于 4 天前

用于优化模子的优化器和学习率调度器(scheduler)

定义了一个用于优化模子的优化器和学习率调度器(scheduler),并根据用户设置的参数 params 来决定具体的调度策略。
1. 定义优化器

optimizer = optim.Adam(
    model.parameters(), lr=params['init_lr'], weight_decay=params['weight_decay'])


[*]optim.Adam: 使用 Adam 优化器来更新模子的参数。

[*]model.parameters(): 指定要优化的模子参数。
[*]lr=params['init_lr']: 设置初始学习率为 params 字典中的值。
[*]weight_decay=params['weight_decay']: 设置权重衰减(L2 正则化),防止过拟合。

2. 条件分支:是否使用调度器

分支 1: 使用 StepLR 学习率调度器

if params['if_scheduler'] and not params['ReduceLROnPlateau']:
    scheduler = optim.lr_scheduler.StepLR(
      optimizer, step_size=params['step_size'], gamma=params['gamma'])


[*]条件:

[*]params['if_scheduler']: 是否使用学习率调度器。
[*]not params['ReduceLROnPlateau']: 确保没有选择 ReduceLROnPlateau 调度器。

[*]StepLR:

[*]每隔 step_size 个 epoch,学习率乘以一个因子 gamma,实现阶梯式的学习率衰减。
[*]参数说明:

[*]step_size=params['step_size']: 每隔 step_size 个 epoch 触发一次学习率更新。
[*]gamma=params['gamma']: 学习率衰减因子,例如 0.1 会使学习率减小到原来的 10%。


分支 2: 使用 ReduceLROnPlateau 调度器

elif params['ReduceLROnPlateau']:
    scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min',
                                                   factor=params['lr_reduce_factor'],
                                                   patience=params['lr_schedule_patience'],
                                                   verbose=False)


[*]条件:

[*]params['ReduceLROnPlateau']: 使用 ReduceLROnPlateau 调度器。

[*]ReduceLROnPlateau:

[*]根据验证集性能(如丧失或正确率)自动调解学习率,适用于训练早期较快下降、后期趋于安稳的情况。
[*]参数说明:

[*]optimizer: 必要调解学习率的优化器。
[*]mode='min': 监控的指标越小越好(例如丧失)。
[*]factor=params['lr_reduce_factor']: 学习率缩放因子,通常设置为 0.1。
[*]patience=params['lr_schedule_patience']: 如果指定个数的 epoch 内指标没有改善,则调解学习率。
[*]verbose=False: 是否打印学习率调解信息。


分支 3: 不使用调度器

else:
    print("No scheduler")
    scheduler = None


[*]如果 params['if_scheduler'] 为 False,或者既未选择 StepLR 也未选择 ReduceLROnPlateau,则不使用调度器。
[*]scheduler 设置为 None。
使用场景



[*]StepLR: 在固定间隔降低学习率,适用于训练丧失缓慢下降的情况。
[*]ReduceLROnPlateau: 在性能指标不再改善时调解学习率,适合动态调解。
[*]无调度器: 用于简单使命或学习率恒定的场景。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 用于优化模子的优化器和学习率调度器(scheduler)