Pytorch 实现训练网络过程中,超参数学习率α随着训练次数线性衰减

  1. 定义参数设置

    EPOCH = 100
    BATCH_SIZE = 64
    LRstart = 0.001         # 学习率 刚开始的数值
    LRend = 1e-7            # 学习率 最终稳定的数值
    Inflexion = 60			# 拐点
    

    定义以上超参数,学习率α 刚开始等于LRstart,随着迭代的进行,在拐点达到LRend,最终稳定在LRend

  2. 函数定义

    # 学习率衰减器,默认拐点为EPOCH ,即没有拐点
    def LR_tracker(iter:int,inflexion:int =EPOCH):
        return max(LRstart +((LRend-LRstart)*iter)/inflexion, LRend)
    
  3. 使用

    # 定义优化器
    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() 
    
  4. 效果

    1. 加拐点

      image-20220425194652280

    2. 不加拐点

      optimizer.lr = LR_tracker(epoch)	# 执行学习率衰减,不加拐点只传入一个参数
      

      image-20220425195032762

    3. 对比加拐点与否的区别

      image-20220425195123646

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值