0


【深度学习】ONNX 模型文件修改节点的名称,修改输入名称,修改输出名称

想要修改onnx模型文件的节点名称,要么在最初的pytorch代码里去改,要么就直接在onnx模型文件里改。

而我这里直接在onnx模型文件改,我有一个onnx文件,输出节点的名字是这样的:
在这里插入图片描述
这不改就看着真难受,那么就用python改:

import onnx

# 加载模型文件
model = onnx.load("model.onnx")# 修改输入输出张量的名称
idx_start =0forinputin model.graph.input:for node in model.graph.node:# 如果当前节点的输入名称与待修改的名称相同,则将其替换为新名称for i, name inenumerate(node.input):if name ==input.name:
                node.input[i]="input_"+str(idx_start)input.name ="input_"+str(idx_start)
    idx_start +=1

idx_start =0for output in model.graph.output:for node in model.graph.node:# 如果当前节点的输入名称与待修改的名称相同,则将其替换为新名称for i, name inenumerate(node.output):if name == output.name:
                node.output[i]="output_"+str(idx_start)
    output.name ="output_"+str(idx_start)
    idx_start +=1# 保存修改后的模型
onnx.save(model,"modified_model.onnx")

改完后:
在这里插入图片描述

其实修改其他节点的名称也可以这样去做,注意修改的是要关注到前后连接的节点。

验证一下改的东西对不对吧:

import numpy as np
import onnxruntime as ort

# 生成随机图像# img = np.random.randint(-1, 1, (1, 3, 640, 640)).astype(np.float32)

img = np.load("img.npy")# 加载模型
session = ort.InferenceSession("modified_model.onnx")# 运行模型
output_new = session.run(None,{"input_0": img})# 加载模型
session = ort.InferenceSession("model.onnx")# 运行模型
output_old = session.run(None,{"x": img})# 判断是否完全一样print(np.allclose(output_new, output_old))

本文转载自: https://blog.csdn.net/x1131230123/article/details/129815083
版权归原作者 XD742971636 所有, 如有侵权,请联系我们删除。

“【深度学习】ONNX 模型文件修改节点的名称,修改输入名称,修改输出名称”的评论:

还没有评论