修改onnx模型中间节点命名(包含输入、输出重命名)

来源:Paddle2ONNX

Paddle2ONNX/tools/onnx/README.md at develop · PaddlePaddle/Paddle2ONNX · GitHub

依赖:import onnx

python rename_onnx_model.py --model model.onnx --origin_names x y z --new_names x1 y1 z1 --save_file new_model.onnx

其中 origin_names 和 new_names,前者表示原模型中各个命名(可指定多个),后者表示新命名,两个参数指定的命名个数需要相同 

 

import argparse
import sysdef parse_arguments():parser = argparse.ArgumentParser()parser.add_argument('--model',required=True,help='Path of directory saved the input model.')parser.add_argument('--origin_names',required=True,nargs='+',help='The original name you want to modify.')parser.add_argument('--new_names',required=True,nargs='+',help='The new name you want change to, the number of new_names should be same with the number of origin_names')parser.add_argument('--save_file', required=True, help='Path to save the new onnx model.')return parser.parse_args()if __name__ == '__main__':args = parse_arguments()import onnxmodel = onnx.load(args.model)output_tensor_names = set()for ipt in model.graph.input:output_tensor_names.add(ipt.name)for node in model.graph.node:for out in node.output:output_tensor_names.add(out)for origin_name in args.origin_names:if origin_name not in output_tensor_names:print("[ERROR] Cannot find tensor name '{}' in onnx model graph.".format(origin_name))sys.exit(-1)if len(set(args.origin_names)) < len(args.origin_names):print("[ERROR] There's dumplicate name in --origin_names, which is not allowed.")sys.exit(-1)if len(args.new_names) != len(args.origin_names):print("[ERROR] Number of --new_names must be same with the number of --origin_names.")sys.exit(-1)if len(set(args.new_names)) < len(args.new_names):print("[ERROR] There's dumplicate name in --new_names, which is not allowed.")sys.exit(-1)for new_name in args.new_names:if new_name in output_tensor_names:print("[ERROR] The defined new_name '{}' is already exist in the onnx model, which is not allowed.")sys.exit(-1)for i, ipt in enumerate(model.graph.input):if ipt.name in args.origin_names:idx = args.origin_names.index(ipt.name)model.graph.input[i].name = args.new_names[idx]for i, node in enumerate(model.graph.node):for j, ipt in enumerate(node.input):if ipt in args.origin_names:idx = args.origin_names.index(ipt)model.graph.node[i].input[j] = args.new_names[idx]for j, out in enumerate(node.output):if out in args.origin_names:idx = args.origin_names.index(out)model.graph.node[i].output[j] = args.new_names[idx]for i, out in enumerate(model.graph.output):if out.name in args.origin_names:idx = args.origin_names.index(out.name)model.graph.output[i].name = args.new_names[idx]onnx.checker.check_model(model)onnx.save(model, args.save_file)print("[Finished] The new model saved in {}.".format(args.save_file))print("[DEBUG INFO] The inputs of new model: {}".format([x.name for x in model.graph.input]))print("[DEBUG INFO] The outputs of new model: {}".format([x.name for x in model.graph.output]))
修改前

修改后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/346883.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 10 找不到Microsoft Edge 浏览器

下载链接 了解 Microsoft Edge 手动下载浏览器 问题说明 一般来说&#xff0c;windows10系统应该是自带浏览器edge的&#xff0c;但有的电脑就是没有找到edge浏览器&#xff0c;可能系统是精简过的&#xff0c;可能是被卸载了。如下&#xff0c;控制面板确实没找到程序。 ​ …

修改SubVI的LabVIEW默认搜索路径

在启动顶级VI后&#xff0c;LabVIEW可能会遇到找不到subVI的情况。这通常是由于subVI的路径发生了变化或没有被正确配置。 LabVIEW默认搜索路径 默认情况下&#xff0c;LabVIEW会按以下顺序搜索文件位置&#xff08;*表示LabVIEW将搜索子目录&#xff09;&#xff1a; <t…

基于SSM+Jsp的交通事故档案管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

3.Nginx配置文件基本介绍

nginx配置文件所在路径&#xff1a;/usr/local/nginx/conf/nginx.conf nginx配置文件有三块&#xff1a; 1.全局块 从配置文件开始到events块之间的内容&#xff0c;主要会设置一些影响nginx服务器整体运行的配置指令。 配置运行nginx服务器的用户(组)允许生成的worker pro…

hadoop和hbase对应版本关系

https://hbase.apache.org/book.html#configuration

Vulnhub-DC-3

joomla3.7.0的提权 靶机IP:192.168.20.136 kaliIP:192.168.20.128 网络有问题的可以看下搭建Vulnhub靶机网络问题(获取不到IP) 信息收集 首先nmap扫端口和版本&#xff0c;dirsearch跑下目录&#xff0c;wappalyzer也可以用下 发现服务器用的ubuntu&#xff0c;JoomlaCMS等…

Activiti7 Maven笔记

通过maven完成BPMN的创建,定义流程,部署流程,完成流程等操作 代码整合创建maven项目添加log4j日志配置添加activiti配置文件创建数据库 activitijava类编写程序生成表如果代码运行,没有生成表,可能是没有读取到activiti的配置文件 Activiti数据表介绍类关系图工作流引擎创建默认…

【C语言】一篇带你高强度解析精通 字符串函数和内存函数 (万字总结大全,含思维导图)(建议收藏!!!)

【 库函数】——字符串函数和内存函数 目录 思维导图&#xff1a; 一&#xff1a;字符串函数 1.1&#xff1a;字符串常规函数 1.1.1&#xff1a;长度不受限制的字符串函数 1.1.1.1&#xff1a;strlen函数 1.1.1.2&#xff1a;strcpy函数 1.1.1.3&#xff1a;strcat函数 …

[word] word如何清除超链接 #媒体#笔记#知识分享

word如何清除超链接 办公中&#xff0c;少不了使用word&#xff0c;这个是大家必备的软件&#xff0c;今天给大家分享下word如何清除超链接的操作办法&#xff0c;一起来学习下吧&#xff01; 1、清除所有超链接 按下组合键CtrlshiftF9&#xff0c;就可以将网上复制带有超链…

数据爱好者的综合指南——Google篇

在数据驱动的决策世界中&#xff0c;获取准确而全面的信息至关重要。Google 搜索结果抓取是一种强大的技术&#xff0c;可以让企业、调查人员和研究人员从搜索引擎结果中提取可靠的数据。本综合指南将深入研究 Google 搜索结果的最佳实践、工具和道德考量&#xff0c;以确定能够…

外包SEO如何进行?

当你的业务需要外包seo时&#xff0c;首先选择一个信誉良好且经验丰富的SEO服务提供商至关重要&#xff0c;深入研究其过往案例和客户评价可以帮助你评估他们的专业性和可靠性。 在选择了合适的服务商后&#xff0c;你需要与他们进行深入的沟通&#xff0c;讨论你的业务特点、市…

【设计模式】创建型设计模式之 建造者模式

文章目录 一、介绍定义UML 类图 二、用法1 简化复杂对象具体构建过程省略抽象的 Builder 类省略 Director 类 三、用法2 控制对象构造方法、限制参数关系Guava 中使用建造者模式构建 cache 来进行参数校验 一、介绍 定义 建造者模式&#xff0c;将一个复杂的对象的构建过程与…

一次改SQLMAP的操作

前言 sqlmap这个工具&#xff0c;相信各位大佬们都不陌生&#xff0c;但sqlmap虽好&#xff0c;也时常会有些实际存在但无法注入的地方&#xff0c;这时候就需要我们改它的配置了&#xff0c;今天就以本人遇到的事件进行阐述。 正文 确认注入点 通过一系列测试最终确定这里…

【Python】Flask问答系统Demo项目

学习视频 我是跟着知了传课学的Flask&#xff0c;起初了解Flask还是GPT告诉我的&#xff0c;现在可以说用Flask做后端是真的方便&#xff01; https://www.bilibili.com/video/BV17r4y1y7jJ 项目结构与下载 FlaskOA&#xff08;项目文件夹&#xff09; │ app.py │ conf…

01_基于人脸的常见表情识别实战_深度学习基础知识

1. 感知机 感知机通常情况下指单层的人工神经网络,其结构与 MP 模型类似(按照生物神经元的结构和工作原理造出来的一个抽象和简化了模型,也称为神经网络的一个处理单元) 假设由一个 n 维的单层感知机,则: x 1 x_1 x1​ 至 x n x_n xn​ 为 n 维输入向量的各个分量w 1 j…

掌握Google搜索结果获取

在数据驱动的决策世界中&#xff0c;获取准确而全面的信息至关重要。Google 搜索结果抓取是一种强大的技术&#xff0c;可以让企业、调查人员和研究人员从搜索引擎结果中提取可靠的数据。本综合指南将深入研究 Google 搜索结果的最佳实践、工具和道德考量&#xff0c;以确定能够…

【初阶数据结构】深入解析顺序表:探索底层逻辑

&#x1f525;引言 本篇将深入解析顺序表:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &…

快递一键查询,只需快递单号,轻松掌握全程物流信息,让您的包裹追踪无忧!

在快节奏的现代生活中&#xff0c;快递已经成为我们生活中不可或缺的一部分。无论是网购的宝贝、亲朋好友寄来的礼物&#xff0c;还是工作中的紧急文件&#xff0c;快递都承载着我们的期待和需要。然而&#xff0c;面对众多的快递公司和复杂的查询流程&#xff0c;如何快速、准…

浅谈DALL-E2

目录 1.概述 2.诞生背景 3.作用 4.版本历史 5.模型和技术 6.应用场景 6.1.十个应用场景 6.2.游戏开发 7.接口 8.未来展望 9.总结 1.概述 DALL-E2 是由 OpenAI 开发的一个图像生成模型&#xff0c;可以根据文本描述生成高质量的图像。DALL-E2 是 DALL-E 的升级版&am…

jupyter notebook使用conda环境

pycharm中安装过可以使用的库在jupyter notebook中导入不进来 1 检查pycharm中安装的库的位置 2 检查jupyter notebook中安装的库的位置 3 查看jupyter notebook内核名字 可以看到jupyter notebook中内核名字叫ipykernel 4 安装ipykernel 在pycharm的terminal中 pip instal…