Numpy中出现“ValueError: zero-size array to reduction operation maximum which has no identity”错误的调试笔记

作者在写目标检测代码时遇到错误,从错误信息判断是数组“array”的“size”为0导致无法计算,经调试发现是“array.max()”处出错,因“array”元素个数为0不存在最大值。解决方案是调试时验证数组array的size是否为0。
该文章已生成可运行项目,

1 问题描述

在写作目标检测的代码时,遇到了这样的一个错误,

File “/home/…/…py”, line 121, in …
array = array/ array.max()
File “/home/…/python/anaconda/anaconda3/envs/conda-general/lib/python3.7/site-packages/numpy/core/_methods.py”, line 30, in _amax
return umr_maximum(a, axis, None, out, keepdims, initial, where)
ValueError: zero-size array to reduction operation maximum which has no identity

从错误信息上面来看,应该是数组“array”的“size”为0,所以无法进行计算;
那么具体是哪个运算呢?可以看到上面有说到“umr_maximum()”函数,所以可能跟“array.max()”函数有关;

2 解决方案

经过调试,我们发现出错的地方就是“array.max()”,具体原因就是这里的“array”的size其实为0,于是元素的个数为0,因而就不存在最大值,所以这里就是出错的原因;
在调试时,可以先对数据的规范性进行验证,这里需要验证数组array的size是否为0,可以使用下面的代码,

assert array.size != 0
本文章已经生成可运行项目
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而性能高,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv5使用ultralytics/yolov5,在Ubuntu系统上做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型和性能统计。 希望学习在Windows系统上演示的学员,请前往《YOLOv5(PyTorch)实战:训练自己的数据集(Windows)》课程链接:https://edu.csdn.net/course/detail/30923本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测实战:训练自己的数据集》Ubuntu系统 https://edu.csdn.net/course/detail/30793Windows系统 https://edu.csdn.net/course/detail/30923《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值