参考这位博主
ONNX 模型节点名称的修改_onnx修改节点名称-CSDN博客 将其做一些增加,因为博主的代码,只能改动输入和输出, 如图所示:
不能改动节点的命名,后期转换还是有问题,在以上博主代码基础上,增加以下黄色代码部分,可以全部转换
# -*- coding: UTF-8 -*-
# ONNX 模型节点名称的修改
import onnx
import sys
if __name__ == "__main__":
if len(sys.argv) < 2:
print("usage:program onnx-model")
exit()
model_name = sys.argv[1]
onnx_model = onnx.load(model_name)
graph = onnx_model.graph
nodes = graph.node
inputs = graph.input
outputs = graph.output
initializers = graph.initializer
inputs[0].name = inputs[0].name.replace(".", "_")
for i in range(len(nodes)):
for j in range(len(nodes[i].input)):
if "." in nodes[i].input[j]:
nodes[i].input[j] = nodes[i].input[j].replace(".", "_")
for j in range(len(nodes[i].output)):
if "." in nodes[i].output[j]:
nodes[i].output[j] = nodes[i].output[j].replace(".", "_")
for i in range(len(initializers)):
if "." in initializers[i].name:
initializers[i].name = initializers[i].name.replace(".", "_")
for i in range(len(nodes)):
if "." in nodes[i].name:
nodes[i].name = nodes[i].name.replace(".", "_")
onnx.checker.check_model(onnx_model)
onnx.save(onnx_model, "out.onnx")
控制台运行:
python xxxx.py xxxx.onnx