当前位置: 首页 > news >正文

onnx转模型时遇到错误onnx.onnx_cpp2py_export.checker.ValidationError的解决思路

onnx转模型时遇到错误onnx.onnx_cpp2py_export.checker.ValidationError的解决思路

  • 报错
  • 分析和解决办法

报错

转onnx模型时遇到的报错提示为:

onnx.onnx_cpp2py_export.checker.ValidationError: Nodes in a graph must be topologically sorted, however input '905' of node: name: Conv_272 OpType: Conv is not output of any previous nodes.

分析和解决办法

错误的原因是在模型检查时发现有些节点的输入在前,输出在后,比如在节点的output ‘905’ 之前就出现了input ‘905’,这肯定是不符合onnx模型格式的;
onnx.onnx_cpp2py_export.checker.ValidationError: 图中的节点必须按拓扑排序,但是节点的输入“905”:名称:Conv_272 OpType:Conv 不是任何先前节点的输出。

在Netron软件中可视化看不出先后顺序,需要将模型的节点打印出来才能看到。

import onnx
from onnx import helper, TensorProto, numpy_helper# 载入原来的ONNX模型
model_path = 'model.onnx'
model = onnx.load(model_path)
print(model.graph.node)

将打印结果保存下来分析后发现input “905”出现的确实比output “905”要早,问题就出现在这;
在这里插入图片描述
解决办法可以参考下面的方法,先把该节点node保存到new_nodes,然后删除node后再重新添加new_nodes即可解决出场顺序的问题;

for i in range(len(model.graph.node)):node = model.graph.node[i]if node.op_type == 'Conv':if node.input[0] == "905":print("input 905 所在节点为: ", i)new_nodes = nodemodel.graph.node.remove(node)if node.output[0] == "905":print("output 905 所在节点为: ", i)model.graph.node.insert(i+1, new_nodes)break

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI大模型零基础入门
  • mac系统使用vscode 写代码老是有叮咚的声音如何解决
  • Matlab基础语法篇(下)
  • MySQL中的MVCC(多版本并发控制)
  • WebRTC通话原理(SDP、STUN、 TURN、 信令服务器)
  • Git_基础命令
  • 【ESP32 idf Uart串口通信】
  • 遇到not allow unquoted fieldName怎么办
  • Leetcode 721.账户合并(hash+dfs)☆
  • [MySQL]02 存储引擎与索引,锁机制,SQL优化
  • Python:Flask自定义URL路由参数过滤器
  • 电缆故障精准定位系统
  • 在CentOS中配置三个节点之间相互SSH免密登陆
  • 极狐GitLab如何启用和配置PlantUML?
  • 【Django】在vscode中运行调试Django项目(命令及图形方式)
  • avalon2.2的VM生成过程
  • exif信息对照
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Phpstorm怎样批量删除空行?
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • tensorflow学习笔记3——MNIST应用篇
  • tweak 支持第三方库
  • Zsh 开发指南(第十四篇 文件读写)
  • 从伪并行的 Python 多线程说起
  • 浮动相关
  • 记录:CentOS7.2配置LNMP环境记录
  • 跨域
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 盘点那些不知名却常用的 Git 操作
  • 使用SAX解析XML
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 找一份好的前端工作,起点很重要
  • puppet连载22:define用法
  • 整理一些计算机基础知识!
  • ​Java并发新构件之Exchanger
  • ​Java基础复习笔记 第16章:网络编程
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #HarmonyOS:Web组件的使用
  • (11)MATLAB PCA+SVM 人脸识别
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (70min)字节暑假实习二面(已挂)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net Memory Profiler的使用举例