YOLOv9 目标检测推理报错-ValueError: too many values to unpack (expected 13)

本文讲述了在Python编程中,星号(*)和下划线(_)的使用,包括在函数参数解包、列表扩展以及处理yolov9detect.py报错时的作用。特别提到等号两边参数量不匹配的问题和如何通过*和_来解决。
摘要由CSDN通过智能技术生成

注意时间 2024/3/7 ,未来的github代码中作者可能会进行修改。

运行 yolov9 detect.py 文件时报错。
在这里插入图片描述

解决

参考文章
在这里插入图片描述
其中,common.py 文件在models 文件夹下。

解释

等号右边的 self._model_type(w) 返回的变量太多,= 左边的变量太少接收不完。

在Python中,*和_可以结合使用,具体含义取决于它们所处的上下文。

  • 用于解包:
    当*用于解包时,它可以用来接收任意数量的参数或将序列解包成单独的元素。
def func(*args):
    for arg in args:
        print(arg)

func(1, 2, 3)  # 输出:1 2 3

在这个例子中,*args表示可以接收任意数量的位置参数。

  • 用于扩展列表或元组:
    *也可以用在列表或元组前面,将其扩展为单独的元素。
list1 = [1, 2, 3]
list2 = [*list1, 4, 5]  # 等同于 [1, 2, 3, 4, 5]
print(list2)
  • _ 用作占位符:
    _经常用作一个占位符或忽略特定值的变量名。
for _ in range(3):
    print("Hello!")  # 输出 "Hello!" 三次

在这个例子中,_作为一个临时变量,用于循环迭代,但我们并不关心其具体的值。

  • *_ 用于忽略多余的值:
    当解包时,*_可以用来忽略多余的值。
a, b, *_ = [1, 2, 3, 4, 5]
print(a, b)  # 输出:1 2

在这个例子中,a和b分别被赋值为1和2,而剩余的值3、4、5被赋给了*_,但由于使用了_,这些值被忽略了。

综上所述,*和_在Python中有多种用途,它们可以用于函数参数解包、列表扩展、作为占位符,以及在解包时忽略不需要的值。

* 代表任意数量,_代表占位符,*_代表任意数量的占位符

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
yolox报错"ValueError: too many values to unpack (expected 2)"是因为在代码的某一行中尝试解包的变量数量与预期不符。根据引用的错误信息,可以看出是在调用一个函数时出现的错误。该函数实际返回了三个值,而调用该函数的地方只使用了一个变量去接受返回值,导致变量数量不匹配的错误。 要解决这个问题,你可以通过修改代码来确保接受返回值的变量数量与函数返回的值的数量相匹配。你需要检查调用该函数的地方,并确保有足够的变量去接受返回值。在这种情况下,你可能需要使用一个元组或列表来接受返回的多个值。 例如,你可以将函数返回的多个值存储在一个元组中,然后使用相应数量的变量去解包这个元组。这样,就可以避免"ValueError: too many values to unpack"的错误。 请注意,具体的修改方法可能因你的代码结构和逻辑而有所不同。建议你仔细检查报错的代码行并进行相应的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [关于 Python opencv 使用中的 ValueError: too many values to unpack](https://download.csdn.net/download/weixin_38661650/13995213)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [解决Dataloader报错:ValueError: too many values to unpack (expected 2)](https://blog.csdn.net/hjtsml_future/article/details/121783567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python遍历输出字典时报错ValueError: too many values to unpack (expected 2)](https://blog.csdn.net/m0_46151559/article/details/120662974)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值