ONNX Runtime学习之InferenceSession模块

news/2024/9/20 16:17:59 标签: 学习

ONNXRuntime库学习之InferenceSession(模块)

一、简介

onnxruntime.InferenceSession 是 ONNX Runtime 中用于加载和运行 ONNX 模型的核心模块。它提供了一种灵活的方式来在多种硬件设备(如 CPU、GPU)上执行 ONNX 模型推理。通过 InferenceSession,我们可以高效地加载模型并进行推理操作,适合在生产环境中使用。

二、语法和参数

语法
onnxruntime.InferenceSession(path_or_bytes, sess_options=None, providers=None, provider_options=None)
参数
  • path_or_bytes:表示要加载的 ONNX 模型的路径(文件路径)或二进制数据(字节流)。
  • sess_options(可选):SessionOptions 对象,用于配置会话的运行选项。
  • providers(可选):指定模型推理时的硬件提供者列表。例如,['CPUExecutionProvider'] 表示只使用 CPU。
  • provider_options(可选):为每个提供者配置特定的选项。下面列出两个最常用的选项
    • CPUExecutionProvider
    • CUDAExecutionProvider
返回值

返回一个 InferenceSession 对象,代表已加载的 ONNX 模型会话。

三、实例

3.1 加载并使用CPU进行推理
  • 代码
import onnxruntime as ort
import numpy as np

# 加载ONNX模型
session = ort.InferenceSession('model.onnx')

# 创建输入数据
input_data = np.random.rand(1, 3, 224, 224).astype(np.float32)

# 获取输入名称
input_name = session.get_inputs()[0].name

# 执行推理
outputs = session.run(None, {input_name: input_data})

# 打印输出结果
print(outputs)
  • 输出
[array([[0.1, 0.2, 0.7]], dtype=float32)]
3.2 使用GPU进行推理
  • 代码
import onnxruntime as ort
import numpy as np

# 加载ONNX模型并指定GPU提供者
session = ort.InferenceSession('model.onnx', providers=['CUDAExecutionProvider'])

# 创建输入数据
input_data = np.random.rand(1, 3, 224, 224).astype(np.float32)

# 获取输入名称
input_name = session.get_inputs()[0].name

# 执行推理
outputs = session.run(None, {input_name: input_data})

# 打印输出结果
print(outputs)
  • 输出
[array([[0.05, 0.15, 0.8]], dtype=float32)]

四、注意事项

  1. InferenceSession 支持多个硬件提供者(如 CPU、GPU),但需要确保指定的提供者在系统中已正确安装并配置。
  2. 在执行推理时,输入数据的形状和类型必须与模型的输入要求匹配,否则会抛出错误。
  3. 如果模型较大,加载模型可能会消耗较多内存资源,建议根据需要配置硬件提供者。

http://www.niftyadmin.cn/n/5667338.html

相关文章

C语言 | Leetcode C语言题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; bool canPartition(int* nums, int numsSize) {if (numsSize < 2) {return false;}int sum 0, maxNum 0;for (int i 0; i < numsSize; i) {sum nums[i];maxNum fmax(maxNum, nums[i]);}if (sum & 1) {return false;}int tar…

element-plus组件问题汇总

element-plus组件问题汇总 一、el-select 1. 下拉选项实现添加全部 问题描述&#xff1a;value为空时&#xff0c;select框中不显示全部选项&#xff0c;但是下拉列表中全部显示是勾选状态 图片&#xff1a; 解决办法&#xff1a;添加 :empty-values“[null, undefined]” …

第一次安装Pytorch

1、新版本的Anaconda内置的python版本是3.12&#xff0c; 目前 Windows 上的 PyTorch 仅支持 Python 3.8-3.11;不支持 Python 2.x。 1、创建运行环境 在不创建虚拟环境的情况下&#xff0c;不建议使用最新的Python和Anaconda。 在几次失败后&#xff0c;我使用的是Anaconda3-2…

深度学习常见面试题及答案(11~15)

算法学习、4对1辅导、论文辅导或核心期刊以及其他学习资源可以通过公众号滴滴我 文章目录 11. 解释一下神经网络中的反向传播算法的作用。一、计算误差二、误差反向传播三、参数更新 12. 简述深度学习中的过拟合问题及常见的解决方法。一、过拟合问题的表现二、过拟合问题的原因…

云原生信息安全:筑牢数字化时代的安全防线

云原生信息安全&#xff1a;筑牢数字化时代的安全防线 一、云原生信息安全概述 云原生安全包含两层重要含义。一方面&#xff0c;面向云原生环境的安全&#xff0c;目标是防护云原生环境中的基础设施、编排系统和微服务等系统的安全。在云原生内部&#xff0c;安全机制多以云原…

MySQL/Redis集群等数据库的管理、配置、优化、备份恢复、异地同步、数据迁移、安全防护的50道运维面试题

1. 请解释MySQL中的InnoDB和MyISAM存储引擎的区别。 在MySQL数据库中&#xff0c;InnoDB和MyISAM是两种常见的存储引擎&#xff0c;它们各自具有独特的特点和适用场景。以下是对这两种存储引擎的详细比较&#xff1a; 事务支持 InnoDB&#xff1a;支持事务处理&#xff0c;提…

人脸活体检测系统源码分享

人脸活体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

web学习——VUE

VUE&Element 今日目标&#xff1a; 能够使用VUE中常用指令和插值表达式能够使用VUE生命周期函数 mounted能够进行简单的 Element 页面修改能够完成查询所有功能能够完成添加功能 1&#xff0c;VUE 1.1 概述 接下来我们学习一款前端的框架&#xff0c;就是 VUE。 Vue 是…