do {}while; 2023-09-01 10:19 采纳率: 0%
浏览 17

yolov5中pt文件转onnx文件报错

yolov5-7.0中.pt文件转onnx文件时候修改yolo.py文件中修改class Detect中的forward函数为
def forward(self, x):
z = [] # inference output
for i in range(self.nl):
x[i] = self.mi # conv
return x
后用export.py脚本转onnx模型报错:AttributeError: 'list' object has no attribute 'shape'

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-02 08:11
    关注

    引用 皆我百晓生 小程序回复内容作答:

    这个错误是由于在yolo.py文件中修改Detect类的forward函数后,返回的是一个list对象,而在export.py脚本中调用torch.onnx.export函数时,需要传入一个tensor对象作为输入。因此,需要将返回的list对象转换为tensor对象。

    以下是修改的代码示例:

    import torch
    
    class Detect(torch.nn.Module):
        def __init__(self, ...):
            ...
      
        def forward(self, x):
            z = [] # inference output
            for i in range(self.nl):
                x[i] = self.mi # conv
                z.append(x[i])
            
            return torch.cat(z, dim=1) # Convert list to tensor
    
    # 代码中使用到的...表示省略的其他代码,需要根据实际情况进行补充
    

    在forward函数中,将z列表中的每个元素添加到新的z列表中,然后使用torch.cat函数将z列表中的tensor对象在维度1上进行拼接,得到一个新的tensor对象,作为forward函数的返回值。

    修改后,再次运行export.py脚本就不会报错了。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月1日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!