return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法

完美解决yolov5训练时出现迭代停止: in _safe_first_finite return next(val for val in obj if safe_isfinite(val)) StopIteration:

在这里插入图片描述


问题描述

1.话不多说,这里就不bui了,直接进入主题,首先看这个报错是matplotlib库所导致的,下面圈出来了
return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第1张图片

2.查看matplotlib版本,发现matplotlib版本是最新版本3.6.1,然后自己的yolov5是5.0版本的,与最新版本的matplotlib不兼容,这里给出两个解决方法,往下看
return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第2张图片

解决方法:

1.第一种解决方法重装matplotlib:

在自己的虚拟环境下,注意的是,一定要在这个项目所依赖的虚拟环境中卸载matplotlib和重新安装matplotlib为3.6.1以下版本的,作者这里安装pip install matplotlib==3.5.2

卸载matplotlib命令:pip uninstall matplotlib
重新安装matplotlib命令: pip install matplotlib==3.5.2

return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第3张图片
安装成功后,重新运行train函数,就不会报错啦
return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第4张图片

2.第二种解决方法注释plots的代码:

话不多说直接上图:在utils下面,找到plots.py,第281行,找到sns. pairplot(省略…)请看下图,或者点击下面报错的plots.py,点击它,会自动跳转到报错那行代码。把它注释掉就完美运行代码了,注释在第二张图片
return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第5张图片
return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第6张图片
然后重新运行,就不会报错啦
return next(val for val in obj if safe_isfinite(val)) StopIteravtion报错解决方法_第7张图片

总结

对你有帮助麻烦您帮点个大赞吧,鼓励一下作者把
作者是个小白,有什么问题的话,评论区见,可以互相学习。

你可能感兴趣的:(深度学习,yolov5,matplotlib,python,计算机视觉)