首页 > 其他分享 >简单的将pytorch模型部署到onnx

简单的将pytorch模型部署到onnx

时间:2023-08-28 10:22:37浏览次数:43  
标签:output onnx 模型 pytorch 算子 input model

1. 创建一个pytorch模型

这里我用的U2Net,直接加载好训练出的权重

model = U2Net(class_nums=4)
model.load_state_dict(torch.load(checkpoint_path))

2. 将pytorch模型转成onnx格式

x = torcg.randn(1,3,512,512)

with torch.no_grad():
    torch.onnx.export(
            model,
            x,
            "onnx_file_name.onnx",
            opset_version=11,
            input_names=['input'],
            output_names=['output']
)   

torch.onnx.export()函数用于将pytorch模型转成onnx格式的函数,其中的参数如下

  • model:需要转换的模型,加载好权重
  • args:模型的任意一组输入,注意维度
  • f:导出的onnx模型的文件名
  • opset_version:表示ONNX算子集的版本,随着深度学习的发展,新算子会不断诞生,算子集就需要扩充,截至20230824,官网已经发布20个版本
  • input_names:输入tensor的名称
  • output_names:输出tensor的名称

转换成功会在指定的路径f下生成onnx模型文件

可用onnx中的函数验证模型文件是否正确

import onnx

onnx_model = onnx.load("onnx_file_name.onnx")
try:
    onnx.checker.check_model(onnx_model)
except Exception as ex:
    print(f'ERROR: {ex}')
else:
    print(f'model correct')

 可以使用netron查看转换的onnx模型的详细内容  链接 https://netron.app/

 点击某个算子节点,可以查看算子的具体信息,每个算子记录了算子的属性、图结构和权重三类信息

  • 算子属性信息(attributes),对于卷积来说,算子属性包含了卷积核的大小、步长等属性
  • 图结构信息(node properties),算子节点在计算图中的名称、邻边的信息,如上图节点名为conv2,输入数据叫683,权重叫1324
  • 权重信息指算子存储的网络权重信息,点击w后的+号可以查看权重信息的具体内容

3. 推理引擎ONNXRuntime

使用onnxruntime可以运行输出的onnx模型,代码如下

input_img 是一个与onnx模型输入维度一致的归一化的np.array

model = onnxruntime.InferenceSession(onnx_file)
inputs = {'input':input_img}
output = model.run(['output'],inputs)[0]

onnxruntime.InferenceSession用于获取一个ONNX Runtime的推理器,其参数为用于推理的ONNX模型文件

run方法用于模型推理,第一个参数为输出张量名的列表,第二个参数为输入值的字典,key为导出模型时设置的张量名,value为输入张量

 

标签:output,onnx,模型,pytorch,算子,input,model
From: https://www.cnblogs.com/Liang-ml/p/17653716.html

相关文章

  • 三维模型OBJ格式轻量化压缩处理效率提高的技术方法探讨
    三维模型OBJ格式轻量化压缩处理效率提高的技术方法探讨   要提高三维模型OBJ格式轻量化压缩处理的效率,可以采取以下方法:1、优化算法选择:选择合适的优化算法对模型进行轻量化处理。不同的优化算法有不同的时间复杂度和效果。一些常用的优化算法包括网格简化、顶点合并、......
  • 浅析三维模型OBJ格式轻量化压缩文件大小的技术方法
    浅析三维模型OBJ格式轻量化压缩文件大小的技术方法   在减小三维模型OBJ格式轻量化文件大小方面,有许多技术和方法可以使用。下面我将介绍一些常用的方法来减小OBJ文件的大小。1、优化顶点数量:减少OBJ文件中的顶点数量是减小文件大小的一种有效方法。可以使用一些优化算......
  • struts2模型驱动
    和模型驱动的相对应的是属性驱动,虽然名字叫的挺牛的,其实很好理解。属性驱动就是在Action中,定义的是和表单中对应的一个个属性,然后有属性的get/set方法。而模型驱动就是事先定义了一个模型,即Model,将表单传递过来的数据封装成一个对象后,再传递给Action,这和Struts1的这种机制很相似。......
  • 【机器学习 | 数据预处理】 提升模型性能,优化特征表达:数据标准化和归一化的数值处理技
    ......
  • 一种用于预测胰腺癌患者的淋巴结比率和存活率的交互式Bayes模型
    回复我们公众号“1号程序员”的“E006”可以获取原文下载地址。[关注并回复:【E006】] 摘要背景 局部淋巴结状态早已被用于癌症患者临床结果的二分预测。而最近以来,人们对淋巴结比率(LNR)的预后作用,即对量化的检测到的阳性淋巴结比率越来越感兴趣。然而对于淋巴结比率和其对癌症......
  • 生存分析常用的统计模型
    回复我们公众号“1号程序员”的“E001”可以获取《BAT机器学习面试1000题》下载链接。[关注并回复:【E001】] 生存分析,是将观察结局和出现这一结局所经历的时间结合起来分析的一种统计分析方法,已经被广泛地应用于癌症数据分析领域,来揭示疾病特征和预后结局的关系,为临床医生提供预......
  • Stable diffusion webui炼指定的人物模型
    Stablediffusionwebui炼指定的人物模型1.打开自己的sd服务:修改自己的设置我本地的:http://192.168.1.4:7862/?__theme=dark修改设置--->训练:这个推荐勾上,会屏蔽vae文件,不然的话会出现很多问题反推提示词这里,不要勾选按字母排序了,取消勾选deepbooru上面的值选大过滤的标......
  • 1300亿参数,国内首个数学大模型MathGPT上线!多项基准赶超GPT-4
    前言 数学的命运齿轮从此开始转动。国内首个专为数学打造的千亿级大模型MathGPT正式上线,在多项基准测试中碾压GPT-4,刷新SOTA。本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。......
  • GPT人工智能模型的应用与优势
    近年来,GPT(GenerativePre-trainedTransformer)人工智能模型成为了人工智能领域的研究热点。GPT是一种基于自注意力机制的深度学习模型,它通过模拟人类的语言逻辑,可以生成高质量的自然语言文本。本文将详细介绍GPT人工智能模型的概念、工作原理以及在现实生活中的应用场景,带领读者了......
  • 文章学习 | 大模型发展
    嬗变:大语言模型带来的人工智能新纪元|CCCF精选盖茨说:大语言模型创新的影响力可以与20世纪60年代的微处理器、80年代的个人电脑、90年代的互联网和21世纪初的苹果手机媲美。大模型的创新大语言模型是人工智能领域自然语言处理的一部分。在大语言模型出现之前,自然语言处理主......