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
    评论
### 回答1: 这个错误通常是由于模型参数和优化器参数不匹配导致的。可能是因为你在加载模型时使用了不同的参数组,或者在训练过程中更改了优化器的参数组。 解决方法是确保加载的模型参数和优化器参数匹配,并且在训练过程中不要更改优化器的参数组。如果需要更改优化器的参数组,可以重新创建一个新的优化器对象。 ### 回答2: 这个错误信息通常是由于在加载模型的过程中,模型的参数组的数量和优化器的参数组数量不匹配导致的。具体来说,可能是在保存模型时使用了不同于当前代码中的优化器或优化器设置,导致加载时出现了不匹配的情况。 要解决这个问题,有几种可能的方法: 1. 使用与保存时相同的优化器和优化器设置来加载模型。这需要确保在保存模型时记录了优化器的名称和参数,以便在加载时能够正确地使用相同的优化器。 2. 更改代码中的优化器设置,以匹配保存模型时使用的优化器。这是必要的,如果无法使用与保存时相同的优化器,则必须确保在加载模型时所使用的优化器设置与模型参数的形状相匹配。 3. 在加载模型时手动调整参数组的数量,使其与当前设置的优化器的参数组数量相匹配。这可能需要一些手动修改和试验,但是可以在不更改代码的情况下解决问题。 无论哪种方法都需要仔细检查代码中的优化器设置和加载模型时所使用的参数,并确保它们完全匹配以避免出现此错误。 ### 回答3: 这个错误是在PyTorch训练过程中常见的错误之一。它通常表示加载的状态字典包含的参数组与优化器的组的大小不匹配。在这种情况下,优化器无法加载状态字典,从而导致错误。如果您遇到了这个问题,那么可能有几个原因。 首先,这可能是由于模型参数的数量发生变化所导致的。这可能是因为您已经对模型进行了更改或重新定义,而您正在加载以前的状态字典。这通常会导致优化器无法正确地加载参数,从而导致错误。 其次,这也可能是由于优化器参数的数量发生变化所导致的。这可能是由于您将模型加载到不同的设备、更改了学习率等优化器参数或重新定义了优化器。当您加载以前的状态字典时,这会导致优化器无法正确地加载参数,从而导致错误。 为了解决这个问题,您可以尝试使用新的状态字典重新训练模型,或者手动调整优化器参数的数量,以确保状态字典与优化器的组大小匹配。如果您只是更改了模型的参数或优化器参数,则可以尝试重新训练模型,并保存新的状态字典。如果您更改了模型定义,则可能需要从头开始训练模型,以确保加载的状态字典与优化器组大小匹配。 最后,如果您无法确定错误的原因,可以检查模型和优化器的定义,并检查它们是否与以前的定义相同。如果仍然出现问题,可以尝试使用不同的优化器或更改模型定义,以解决错误。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TracyGC

创作不易,需要花花~

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

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

打赏作者

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

抵扣说明:

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

余额充值