news 2026/7/29 19:36:15

[ERROR] Failed to convert PaddlePaddle model: (Unimplemented) the 0th elementwise MUST be ir::FloatA

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[ERROR] Failed to convert PaddlePaddle model: (Unimplemented) the 0th elementwise MUST be ir::FloatA

在转化paddleocrv5的det模型时遇到此问题。[问题版本]在这里(https://blog.csdn.net/m0_52113979/article/details/163163417?spm=1001.2014.3001.5501),建议用兼容的CPU版本转化

原因分析

Paddle2ONNX 在新版 PaddlePaddle(3.x)下解析 PIR 格式的模型时遇到了不支持的 attribute 类型。nearest_interp 的 scale 属性是 a_f64 类型(“#”: “0.a_f64”),而 Paddle2ONNX 期望的是 a_f32(FloatAttribute)。

Op 572 (1.nearest_interp): A[scale] = array, [0] type = 0.a_f64, val = {'#': '0.a_f64', 'D': 2.0} Op 574 (1.nearest_interp): A[scale] = array, [0] type = 0.a_f64, val = {'#': '0.a_f64', 'D': 2.0} Op 576 (1.nearest_interp): A[scale] = array, [0] type = 0.a_f64, val = {'#': '0.a_f64', 'D': 2.0}

解决方案:
手动将a_f64转化为a_f32格式,代码由AI提供

这次做了检查,可以正常推理

""" 将 a_f64 改为 a_f32,保持值不变 """importjsonimportosimportshutil model_path="addleOCR-main\\output\\PP-OCRv5_mobile_det\\best_model\\inference.json"backup_path=model_path+".bak"# 备份shutil.copy2(model_path,backup_path)print(f"已备份到:{backup_path}")withopen(model_path,"r",encoding="utf-8")asf:data=json.load(f)ops=data["program"]["regions"][0]["blocks"][0]["ops"]changes=[]fori,opinenumerate(ops):if"A"notinop:continueattrs=op["A"]forattr_entryinattrs:ifnotisinstance(attr_entry,dict)or"AT"notinattr_entry:continueat=attr_entry["AT"]ifnotisinstance(at,dict):continue# 1. a_f64 -> a_f32 (保持数值)ifat.get("#")=="0.a_f64":old_val=at["D"]at["#"]="0.a_f32"op_name=op.get("#","?")attr_name=attr_entry.get("N","?")changes.append(f"Op{i}({op_name}):{attr_name}a_f64={old_val}-> a_f32={old_val}")# 2. a_array 中的子元素类型也需要检查ifat.get("#")=="0.a_array":vals=at.get("D",[])forj,vinenumerate(vals):ifisinstance(v,dict)andv.get("#")=="0.a_f64":old_val=v["D"]v["#"]="0.a_f32"op_name=op.get("#","?")attr_name=attr_entry.get("N","?")changes.append(f"Op{i}({op_name}):{attr_name}[{j}] a_f64={old_val}-> a_f32={old_val}")print(f"\n共修改{len(changes)}处:")forcinchanges:print(f"{c}")# 保存withopen(model_path,"w",encoding="utf-8")asf:json.dump(data,f,ensure_ascii=False)print(f"\n已保存修改到:{model_path}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 19:26:09

OpenArk驱动加载技术方案对比:内核安全与兼容性深度解析

OpenArk驱动加载技术方案对比:内核安全与兼容性深度解析 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk 技术问题诊断与解决方案框架 OpenArk作为新一代W…

作者头像 李华
网站建设 2026/7/29 19:22:59

play-bootstrap源码解析:核心组件工作原理与扩展方法

play-bootstrap源码解析:核心组件工作原理与扩展方法 【免费下载链接】play-bootstrap A Play Framework library for Bootstrap 项目地址: https://gitcode.com/gh_mirrors/pl/play-bootstrap Play-Bootstrap是一个专为Play Framework设计的库,旨…

作者头像 李华