-
定义参数设置
EPOCH = 100 BATCH_SIZE = 64 LRstart = 0.001 # 学习率 刚开始的数值 LRend = 1e-7 # 学习率 最终稳定的数值 Inflexion = 60 # 拐点
定义以上超参数,学习率α 刚开始等于LRstart,随着迭代的进行,在拐点达到LRend,最终稳定在LRend
-
函数定义
# 学习率衰减器,默认拐点为EPOCH ,即没有拐点 def LR_tracker(iter:int,inflexion:int =EPOCH): return max(LRstart +((LRend-LRstart)*iter)/inflexion, LRend)
-
使用
# 定义优化器 optimizer = torch.optim.Adam(autoencoder.parameters(), lr=LRstart) # 训练过程 loss = loss_func(decoded, b_y) optimizer.zero_grad() loss.backward() optimizer.lr = LR_tracker(epoch,Inflexion) # 执行学习率衰减,加拐点 optimizer.step()
-
效果
-
加拐点
-
不加拐点
optimizer.lr = LR_tracker(epoch) # 执行学习率衰减,不加拐点只传入一个参数
-
对比加拐点与否的区别
-
Pytorch 实现训练网络过程中,超参数学习率α随着训练次数线性衰减
于 2022-04-25 19:52:47 首次发布