前言
构建onnx方式通常有两种:
1、通过代码转换成onnx结构,比如pytorch —> onnx
2、通过onnx 自定义结点,图,生成onnx结构
本文主要是简单学习和使用两种不同onnx结构,
下面以 Resize
结点进行分析
方式
方法一:pytorch --> onnx
暂缓,主要研究方式二
方法二: onnx
import onnx
from onnx import helper, numpy_helper
from onnx import TensorProto
# 创建一个resize的node
resize_node = helper.make_node(
'Resize',
inputs=['input', 'scales'],
outputs=['output'],
mode='nearest',
)
# 创建一个graph
graph_def = helper.make_graph(
[resize_node],
'resize_graph',
inputs=[
helper.make_tensor_value_info('input', TensorProto.FLOAT, [1, 3, 224, 224]),
helper.make_tensor_value_info('scales', TensorProto.FLOAT, [2]),
],
outputs=[
helper.make_tensor_value_info('output', TensorProto.FLOAT, [1, 3, 112, 112]),
],
)
# 创建一个model
model_def = helper.make_model(graph_def, producer_name='resize_model')
# 保存model
onnx.save(model_def, 'resize_model.onnx')