已关闭
[Bug]: ONNX MaxPool1D 转换后 kernel_size/strides/pads 丢失,池化退化为 no-op #413
liuchengji3创建于  8月6日关闭于  8月10日
liuchengji3成员
8月6日 创建

Checklist

🐞 问题详细描述

转换 ONNX MaxPool1D 算子到 MindSpore Lite 时,kernel_size、strides 始终为默认值 {1, 1},pads 丢失 end 维信息。最终 ACL
MaxPoolV3 收到的属性相当于「不池化」,模型推理结果等于输入,相当于算子失效。

详细的环境信息描述

根因

commit 93ab9a78(refactor(parser/onnx): decompose large functions in onnx parsers,2026-06-18)重构
OnnxMaxPoolParser::ParseMaxPool1D 时,把三个 helper 函数简化了签名,误删了写回逻辑:

┌────────────────────────┬───────────────────────────────────────┬──────────────────────────────────────────────────────┐
│ 函数 │ refactor 前 │ refactor 后 │
├────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────────────────┤
│ ParseKernelShapeAttr1D │ 校验 + │ 只校验 │
│ │ prim->set_kernel_size({ints(0)}) │ │
├────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────────────────┤
│ ParseStridesAttr1D │ 校验 + *strides = {ints(0)} │ 只校验 │
├────────────────────────┼───────────────────────────────────────┼──────────────────────────────────────────────────────┤
│ ParsePadsAttr1D │ 校验 + *pads = {ints(0), ints(1)} │ 校验 + *pads = {0,0, ints(0), ints(0)}(end 维被 │
│ │ │ begin 覆盖) │
└────────────────────────┴───────────────────────────────────────┴──────────────────────────────────────────────────────┘

ParseMaxPool1D 调用这些 helper 后不再更新 prim/本地变量,初始默认值 {1,1} / {1,1} / {0,0,0,0} 直接成了最终结果。

影响范围

  • 所有 ONNX MaxPool1D 节点(kernel_shape 为 1 元素)
  • MaxPool2D 路径(kernel_shape 2 元素)不受影响
  • AvgPool1D 不受影响(走 OnnxAvgPoolParser,未重构)

其他辅助信息

版本信息

master

Thanks for contributing 🎉!

likedislike
Lliuchengji3成员
8月6日 添加了label:bug
Lliuchengji3成员
8月6日 关联组件 由 [] 改变为 [B-SIG-InnerDelivery]
Lliuchengji3成员
8月6日 关联分支 由 [] 改变为 [master]
Lliuchengji3成员
8月6日 问题后端类型 由 [] 改变为 [Ascend]
Lliuchengji3成员
8月10日 issue状态由 TODO 改变为 ACCEPTED
Lliuchengji3成员
8月10日 issue状态由 ACCEPTED 改变为 WIP
Lliuchengji3成员
8月10日 issue状态由 WIP 改变为 DONE
Lliuchengji3成员
8月10日 关闭了 issue