ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

4.11 构建onnx结构模型-Clip

2026/9/11 15:20:03 拓冰建站 浏览量
4.11 构建onnx结构模型-Clip

前言

构建onnx方式通常有两种:
1、通过代码转换成onnx结构,比如pytorch —> onnx
2、通过onnx 自定义结点,图,生成onnx结构

本文主要是简单学习和使用两种不同onnx结构,
下面以 Clip 结点进行分析
在这里插入图片描述

方式

方法一:pytorch --> onnx

暂缓,主要研究方式二

方法二: onnx

import onnx 
from onnx import TensorProto, helper, numpy_helperdef run():print("run start....\n")Clip = helper.make_node("Clip",name="Clip_0",inputs=["input",  "min_v", "max_v"],outputs=["output"],)initializer = [ helper.make_tensor("min_v", TensorProto.FLOAT, [], [float(0.1)]),helper.make_tensor("max_v", TensorProto.FLOAT, [], [float(11.1)]),]graph = helper.make_graph(nodes=[Clip],name="test_graph",inputs=[helper.make_tensor_value_info("input", TensorProto.FLOAT, [1, 3, 2, 2])],outputs=[helper.make_tensor_value_info("output",TensorProto.FLOAT, [1, 3, 2, 2])],initializer=initializer,)op = onnx.OperatorSetIdProto()op.version = 11model = helper.make_model(graph, opset_imports=[op])print("run done....\n")return modelif __name__ == "__main__":model = run()onnx.save(model, "./test_clip.onnx")

run

import onnx
import onnxruntime
import numpy as np# 检查onnx计算图
def check_onnx(mdoel):onnx.checker.check_model(model)# print(onnx.helper.printable_graph(model.graph))def run(model):print(f'run start....\n')session = onnxruntime.InferenceSession(model,providers=['CPUExecutionProvider'])input_name1 = session.get_inputs()[0].name  input_data1= np.random.randn(1,3,2,2).astype(np.float32)print(f'input_data1 shape:{input_data1.shape}\n')output_name1 = session.get_outputs()[0].namepred_onx = session.run([output_name1], {input_name1: input_data1})[0]print(f'pred_onx shape:{pred_onx.shape} \n')print(f'run end....\n')if __name__ == '__main__':path = "./test_clip.onnx"model = onnx.load("./test_clip.onnx")check_onnx(model)run(path)