Onnx以及Onnx runtime

一、ONNX简介

它是微软和Facebook提出的一种表示深度学习模型的开放格式,定义了一套独立于环境和平台的标准格式。

二、ONNX作用

无论你使用什么样的训练框架来训练模型(比如TensorFlow/Pytorch/OneFlow/Paddle),你都可以在训练后将这些框架的模型统一转为ONNX存储。 ONNX文件不仅存储了神经网络模型的权重,还存储了模型的结构信息、网络中各层的输入输出等一些信息。 实际中将转换后的ONNX模型,转换成我们需要使用不同框架部署的类型,通俗来说ONNX相当于一个翻译。

三、常见使用场景
• Pytorch -> ONNX -> TensorRT
• Pytorch -> ONNX -> TVM
• TF – onnx – ncnn

四、Onnx runtime简介

ONNXRuntime是微软推出的一款推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。可以说ONNXRuntime是对ONNX模型最原生的支持。

虽然大家用ONNX时更多的是作为一个中间表示,从pytorch转到onnx后直接喂到TensorRT或MNN等各种后端框架了= =,但这并不能否认ONNXRuntime是一款非常优秀的推理框架(微软出品,必属精品)。而且由于其自身只包含推理功能(1.2版本,最新的ONNXRuntime甚至已经可以训练,可见微软在其上面的野心还是有的),对比主流框架源码看起来没有那么复杂难懂,通过阅读其源码可以非常清晰的理解深度学习框架的一些核心功能原理(op注册,内存管理,运行逻辑等)。接下来的一系列文章尝试对ONNXRuntime的源码进行阅读学习,对理解深度学习框架的工作原理还是很有帮助的。

参考博文:

  1. https://zhuanlan.zhihu.com/p/346544539
  2. https://blog.csdn.net/m0_46579823/article/details/127889230
ONNXRuntime是微软推出的一款优秀的推理框架,它支持多种后端包括CPU、GPU、TensorRT和DML等,可以方便地运行ONNX模型。用户可以使用C、Python、Java等多种编程语言进行编写,并且提供了简单易用的API,使得使用者可以方便地进行模型推理。如果你想使用Python进行ONNXRuntime的模型推理,可以按照以下步骤进行操作: 1. 首先,你需要安装ONNXRuntime。可以通过pip命令来安装,例如在命令行中执行以下命令: ``` pip install onnxruntime ``` 2. 安装完成后,你可以导入ONNXRuntime库并加载你的ONNX模型。例如,在Python中执行以下代码: ```python import onnxruntime # 加载ONNX模型 model = onnxruntime.InferenceSession('your_model.onnx') ``` 3. 接下来,你可以准备输入数据并进行推理。例如,如果你的模型接受一个输入张量`input_data`,你可以执行以下代码进行推理: ```python import numpy as np # 准备输入数据 input_data = np.random.randn(1, 3, 224, 224).astype(np.float32) # 进行推理 output = model.run(None, {'input': input_data}) ``` 这里的`'input'`是你模型的输入名称,你需要根据你的模型进行相应的修改。 4. 最后,你可以获取推理结果并进行后续处理。例如,如果你的模型输出一个张量`output`,你可以执行以下代码获取结果: ```python # 获取推理结果 result = output[0] # 进行后续处理 # ... ``` 这里的`output[0]`表示获取第一个输出张量,你可以根据你的模型进行相应的修改。 通过以上步骤,你可以使用ONNXRuntime进行ONNX模型的推理。希望对你有帮助![1][2][3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值