现在我正在尝试使用this代码来训练对象检测-YOLOv1。一开始我用的是momentum
和weight_decay
,但是在几个时代之后,训练的损失变成了NaN
。据我所知,这是因为梯度爆炸,所以我找到了一些方法来摆脱这个NaN
,然后我忽略了momentum
和weight decay
。结果我没有得到任何NaN
,但是我的模型不能像我预期的那样收敛。当我计算mAP
时,它仅为0.29。我使用VOC 2007和2012数据进行培训,并将其作为测试集VOC 2007测试
因此,我的问题如下:
NaN
李>如果您有任何建议,我将不胜感激
在检查代码之后,我看到在第一个历元之后,您将在历元75之前将学习速率设置为
0.01
。在我看来,学习率高是导致参数消失/爆炸的主要原因。通常,学习率在0.001
左右缩放,因子为2,1,0.1
Follow the config in this repo(根据paperwithcode最著名的repo实现YOLOv1),您可以看到它们的配置设置。您可以在问题中遵循它们的超参数
momentum=0.9
和decay=0.0005
注意:请注意,Tensorflow中的批次标准动量=1-Pytorch中的动量
最后,训练前后的参数数量应该相同,因此,如果训练过程后模型较重/较轻,则表示训练代码有问题
相关问题 更多 >
编程相关推荐