1、文件转化
import torch.onnx
from torchvision import models
from onnxsim import simplify
import onnx
torch_model = torch.load("D:\checkpoint-epoch40.pth",
map_location='cpu') # pytorch模型加载
model = models.resnet50()
# model.load_state_dict(torch_model)
batch_size = 1 # 批处理大小
input_shape = (3, 48, 48) # 输入数据,改成自己的输入shape
# #set the model to inference mode
model.eval()
x = torch.randn(batch_size, *input_shape) # 生成张量
export_onnx_file = "fr-unet.onnx" # 目的ONNX文件名
torch.onnx.export(model,
x,
export_onnx_file,
opset_version=10,
do_constant_folding=True, # 是否执行常量折叠优化
input_names=["input"], # 输入名
output_names=["output"]) # 输出名
# dynamic_axes={"input":{0:"batch_size"}, # 批处理变量
# "output":{0:"batch_size"}})
2、如果想简化模型可添加如下代码
# 加载导出的 ONNX 模型
onnx_model = onnx.load("fr-unet.onnx")
# 简化模型
simplified_model, check = simplify(onnx_model)
# 保存简化后的模型
onnx.save_model(simplified_model, "simplified_fr_unet_model.onnx")
3、然后将生成的onnx模型,用网页打开Netron