首页IT科技test error training error(【已解决】ERROR:The testing results of the whole dataset is empty)

test error training error(【已解决】ERROR:The testing results of the whole dataset is empty)

时间2025-07-31 03:05:03分类IT科技浏览25240
导读:问题描述 使用MMdetection复现论文swin Transformer,显示错误:...

问题描述

使用MMdetection复现论文swin Transformer                     ,显示错误:ERROR:The testing results of the whole dataset is empty

                                  ,与此同时            ,各项评价指标如AP,AR结果趋于零                ,F1值变成-1                                 ,loss与grad_norm爆炸增加                  ,具体情形如下图:

图1图2: 图3:

问题分析

看到报错的第一眼           ,猜测可能是数据集的问题                                ,所以检查了数据集的路径                        ,然后检查了数据集里面是否有图片      ,但经过一番验证                                ,排除了这种可能性                     。如果数据集本身有问题                              ,代码一开始就无法运行起来,因为mmdet一定会报错                          ,而且报错内容是:找不到数据集或者说找不到某张图片                                  。

再仔细观察报错:ERROR:The testing results of the whole dataset is empty,拿不到测试结果                                   ,结合爆炸的loss与grad_morm,我有理由怀疑是梯度爆炸或者梯度消失所导致的            。有了这个猜测      ,我回头审视自己的代码                     ,最有可能导致梯度爆炸的超参数就是学习率lr                                  ,是不是我自己设置的学习率lr不合适

学习率是啥?

学习率是梯度下降多次迭代过程中            ,用来控制模型学习进度的超参数                。可以这么理解                ,学习率大就学的快(梯度下降块)                                 ,学习率小就学得慢                  ,但学习率并非越大越好           ,学习率过大                                ,容易造成梯度爆炸或者消失                                 。

解决办法

MMdetection默认的学习率                        ,大多都是0.02      ,如果不刻意更改                                ,模型会使用这个学习率去训练                              ,swin Transformer没办法在lr=0.02条件下训练,将学习率更改为论文设定的0.0001                          ,模型就正常训练                  。

在MMdetection中                                   ,学习率的调整是在目录:configs/base/schedules/schedule_1x.py

文件中:

学习率调整后的正常的训练结果:

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
js中定时器(Js 中的定时器) python列表末尾添加(python如何在列表末尾添加元素?)