yolov5载入训练过的模型之后,loss会飙升的解决方法。

原因:

每次重新运行代码之后,学习率会重置,导致学习率过高从而开始升高损失。

yolov5的学习率下降模型,是one_cycle.

def one_cycle(y1=0.0, y2=1.0, steps=100):
    # lambda function for sinusoidal ramp from y1 to y2 
    return lambda x: ((1 - math.cos(x * math.pi / steps)) / 2) * (y2 - y1) + y1

图片长下面这样。
在这里插入图片描述

学习率又会有一次升高回落的过程。

解决方法:

采用其他的学习率方法,如余弦退火,线性降低等。
在train.py中,将代码修改如下情况即可(采用了余弦退火,同时承接了上次one_cycle的学习率最小值),便于继续训练。

    # Scheduler  
    if opt.linear_lr:
        lf = lambda x: (1 - x / (epochs - 1)) * (1.0 - hyp['lrf']) + hyp['lrf']  # linear
    else:
        #lf = one_cycle(1, hyp['lrf'], epochs)  # cosine 1->hyp['lrf']
        lf = lambda x: ((1 + math.cos(x * math.pi / epochs)) / 2) * 0.1 + 0.005
    scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf)  # plot_lr_scheduler(optimizer, scheduler, epochs)

参考 :

OneCycleLR学习率的原理与使用
YOLOv5的Tricks | 【Trick6】学习率调整策略(One Cycle Policy、余弦退火等)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值