onnx2mge concat出现bug

onnx2mge concat出现bug


为使您的问题得到快速解决,建议参考以下模板:

【标题】
(简洁、精准的描述您的问题,例如“int8模型,多次抽feature,存在可见误差”)
【版本、环境信息】

  • MegEngine 版本:(请提供当前问题发生所使用的MegEngine 版本)
  • CPU型号:(如为CPU,请提供CPU型号)
  • GPU型号:(如为GPU,请提供GPU型号)
  • 系统环境:(请提供系统环境,linux / windows / Android、手机型号等,包括是32位/64位)
  • python版本: (请提供您使用的python版本号)

【模型信息】

  • 算法:(请提供算法源码,如有特殊实现请简单介绍)
  • 性能对比:(现在速度 vs 之前速度, shape是多少之类等)
  • 模型文件地址:(请提供模型文件地址)

【Load_and_run LOG】

  • 请提供Load_and_run复现LOG

【如为报错请提供以下复现信息】

  • 复现步骤:(请提供复现方法及步骤)
  • 日志信息:(请提供完整的日志及报错信息)
  • 代码关键片段:(请提供关键的代码片段便于追查问题)

看报错不是concat的问题,是onnx和mge模型里concat的输入tensor的shape不一样,应该是concat的上一个op在mge和onnx的行为有差异导致的,需要看一下上一个op的类型及参数,方便提供模型看一下吗

模型图是这样1X3X384X768那层的tensor在mge被计算成1X3X383X768

最终排查到是这个接口获取输出的tensor大小这里出错了,但是这里调用的是库包我是不是没有办法去修复这个问题

需要看一下slice的具体参数值,可以提供一下最小复现的onnx模型吗

我想上传我的模型这边提示我说我没有权限


参数是这个,这边推算出来的84,mge这边推出来为1X3X383X768

可以提供一下你的onnx模型吗,我这边也确认一下是不是这里的问题

您可以先本地修复,然后给MegEngine提个PR

模型的链接我上传到云盘你看看 链接: https://pan.baidu.com/s/10Ol4nfFqsQD_nmYjD9T56w?pwd=cpcj 提取码: cpcj

我本地定位不进去那个函数,我已经修复了好多个bug了这里这个好像用了getitem_cpp这个我这边应该调不到,我可以提供模型但是这边提示我没有权限上传其他格式的我只能上传图片

Tanh目前也不支持可以支持一下吗

Tanh这个我自己实现了, Slice我用其他的参数也出现了一个1X0X512X768的Tensor出来

这个问题出现的原因是onnx和MegEngine表示INT_MAX的方式不一样,1.11版本的onnx是用的是(1<<64)-1, megengine用的是 (1<<32)-1,你可以先在这里修改:


改为:

                end = 2147483647 if end_param[i] == 9223372036854775807 else end_param[i]
                slices[axis] = slice(begin_param[i], end, step_param[i])

后续我们会修一下,谢谢~