fix(pybot×actpred): v3 审计 P1 修复 3 项——零依赖承诺 + ONNX 元数据/残差全链路
- robot.py numpy 恢复函数级 lazy import,纯 .mt 脚本执行不再需要 numpy(v3-P1-1) - export_onnx 写入训练配置元数据;onnx_infer 自动识别 normalize_mode/predict_delta 并支持残差加回(v3-P1-2) - pybot --loop 补 .onnx 后端分支,zscore 缺 action_stats.npy 时告警(P2-a 闭环) - 回归测试:actpred TestOnnxMetadata +7、pybot 零依赖导入 +1(88/148 全绿) - 附 v3 审计报告:13 项 v2 修复回归核对 + 7 项新发现(P0-2 遗留 + P2/P3 六项)
This commit is contained in:
1 parent
b73628b2e5
commit
35ee614ca9
8 files changed
+427
-14
No files matched your search
@@ -43,6 +43,25 @@ def main():
|
||||
print(f"ONNX model exported to: {args.output}"
|
||||
f"{'(含 imu 输入)' if imu_dim > 0 else ''}")
|
||||
|
||||
# 写入训练配置元数据:onnx_infer 据此自动识别归一化方式与残差模式,
|
||||
# 避免推理端配置与训练不一致导致静默错误(normalize_actions=False 时
|
||||
# 记为 "none",推理端不做任何归一化)
|
||||
import onnx
|
||||
m = onnx.load(args.output)
|
||||
meta = {
|
||||
"normalize_mode": (data_cfg.normalize_mode
|
||||
if data_cfg.normalize_actions else "none"),
|
||||
"predict_delta": ("1" if getattr(cfg.train, "predict_delta", False)
|
||||
else "0"),
|
||||
"imu_dim": str(imu_dim),
|
||||
"action_dim": str(data_cfg.action_dim),
|
||||
}
|
||||
for k, v in meta.items():
|
||||
p = m.metadata_props.add()
|
||||
p.key, p.value = k, v
|
||||
onnx.save(m, args.output)
|
||||
print(f"ONNX 元数据已写入: {meta}")
|
||||
|
||||
# 可选:验证导出的 ONNX 模型一致性
|
||||
try:
|
||||
import onnxruntime as ort
|
||||
|
||||
Reference in new issue
Block a user