ValueError: loaded state dict contains a parameter group that doesn‘t match the size of optimizer‘s

在跑yolov9时候,断点训练出现“ValueError: loaded state dict contains a parameter group that doesn't match the size of optimizer's ”问题,查找了很多原因,都说是optimizer的SGD优化的问题,所以暂时的解决办法是:

在进行断点训练的时候把重新读入的optimizer注释掉:

在train_dual中找到下面这几行代码:

    # Resume
    best_fitness, start_epoch = 0.0, 0
    if pretrained:
        if resume:
            best_fitness, start_epoch, epochs = smart_resume(ckpt, optimizer, ema, weights, epochs, resume)
        del ckpt, csd

然后进入到smart_resume函数中:

    if ckpt['optimizer'] is not None:
        # optimizer.load_state_dict(ckpt['optimizer'])  # optimizer  
        best_fitness = ckpt['best_fitness']
    if ema and ckpt.get('ema'):
        # ema.ema.load_state_dict(ckpt['ema'].float().state_dict())  # EMA
        ema.updates = ckpt['updates']

将optimizer.load_state_dict(ckpt['optimizer']) 和ema.ema.load_state_dict(ckpt['ema'].float().state_dict())都注释掉。如图所示

成功开始训练:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyGC

创作不易,需要花花~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值