Repository navigation
fix: correct IR Conv2D and Reshape execution and tighten accuracy validation - #108
2813183274-cloud wants to merge 1 commit into
Conversation
…idation Align im2col rows with NCHW weights and preserve batch ordering. Read ONNX reshape target values and apply the target shape during IR execution. Validate IR output shapes and values against ONNX Runtime with strict tolerances. Refs ScratchV-Compiler#55
🤖 AI Code Review
📁
|
问题与修复
1. 修复 Conv2D 的 im2col 排列错误
原实现中,输入展开后的排列顺序与卷积权重的展平顺序不一致,导致多输入通道卷积将错误的输入元素与权重相乘;多 batch 时也存在排列问题。
本次统一 im2col 与 NCHW 权重的展平顺序,并正确保留 batch 与输出位置的对应关系。
2. 修复 Reshape 的 IR 执行
原解释器未正确使用 IR 中记录的目标形状,经常回退为二维展平。
本次改为按照 IR 的目标 shape 执行:
0:复制输入对应维度;-1:自动推导维度;最新主分支已经修复 ONNX Reshape 目标值的解析,因此本 PR 保留上游解析器实现,不重复修改。
3. 修正 IR 精度验证
原测试将 IR 解释结果称为“编译输出”,使用
MSE < 1.0、MAE < 1.0的宽松阈值,并要求输出与参考结果不一致,无法可靠验证正确性。本次:
rtol=1e-4、atol=1e-5比较数值;验证结果
原修复分支:
1.91×10⁻⁶。适配最新主分支后:
onnx.shape_inference.infer_shapes时发生 Windows 原生访问异常,尚未进入 IR 执行。该分支的 CNN 精度复测仍待完成,因此暂以草稿 PR 提交。范围与后续工作
本 PR 仅修改 IR 解释器和 CNN 精度测试,不包含 standalone 后端改动、测试运行日志或规划文档。
主后端 Conv2D、GEMM、MaxPool、Sigmoid 的完整 lowering,以及主后端真实二进制精度验证仍需后续处理。
关联 #55,本 PR 不关闭该 Issue。