已关闭
[Bug]: ONNX MaxPool1D 转换后 kernel_size/strides/pads 丢失,池化退化为 no-op #413
liuchengji3创建于 8月6日关闭于 8月10日
8月6日 添加了label:bug
8月6日 关联组件 由 [] 改变为 [B-SIG-InnerDelivery]
8月6日 关联分支 由 [] 改变为 [master]
8月6日 问题后端类型 由 [] 改变为 [Ascend]
8月10日 issue状态由 TODO 改变为 ACCEPTED
8月10日 issue状态由 ACCEPTED 改变为 WIP
8月10日 issue状态由 WIP 改变为 DONE
8月10日 关闭了 issue
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} 直接成了最终结果。
影响范围
其他辅助信息
版本信息
master
Thanks for contributing 🎉!