如何解决YOLO v1中的梯度展开

2024-09-29 00:12:36 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我正在尝试使用this代码来训练对象检测-YOLOv1。一开始我用的是momentumweight_decay,但是在几个时代之后,训练的损失变成了NaN。据我所知,这是因为梯度爆炸,所以我找到了一些方法来摆脱这个NaN,然后我忽略了momentumweight decay。结果我没有得到任何NaN,但是我的模型不能像我预期的那样收敛。当我计算mAP时,它仅为0.29。我使用VOC 2007和2012数据进行培训,并将其作为测试集VOC 2007测试

因此,我的问题如下:

  • 我如何在训练时摆脱NaN
  • 在哪里可以获得最佳的培训配置
  • 梯度爆炸在目标检测任务中正常吗
  • YOLOv1在训练后获得1.1Gb体重正常吗

如果您有任何建议,我将不胜感激


Tags: 对象方法代码模型mapnanvocthis
1条回答
网友
1楼 · 发布于 2024-09-29 00:12:36

在检查代码之后,我看到在第一个历元之后,您将在历元75之前将学习速率设置为0.01。在我看来,学习率高是导致参数消失/爆炸的主要原因。通常,学习率在0.001左右缩放,因子为2,1,0.1

Follow the config in this repo(根据paperwithcode最著名的repo实现YOLOv1),您可以看到它们的配置设置。您可以在问题中遵循它们的超参数momentum=0.9decay=0.0005

注意:请注意,Tensorflow中的批次标准动量=1-Pytorch中的动量

最后,训练前后的参数数量应该相同,因此,如果训练过程后模型较重/较轻,则表示训练代码有问题

相关问题 更多 >