ONNX Runtime 怎么做 CPU 推理?核对模型输入并运行一次

对已有 ONNX 模型用 ONNX Runtime 检查单个 float32 输入并执行一次 CPU 推理。

已有合法取得的 model.onnx 和与其预处理流程一致的 sample.npy 时,可以用 ONNX Runtime 在 CPU 上做一次推理。关键是先核对输入名、数据类型和形状,再运行;能打开模型文件不代表输入内容正确,也不代表不同框架的结果必然一致。

准备本地文件并查看输入规格

在隔离的 Python 环境安装 onnxruntime 与 numpy,确保两个文件来自你的模型项目。官方 Python 入门页展示了 InferenceSession 与 run();Python API 文档说明 CPU 输入可用 NumPy 数组,并可显式指定执行提供器。

ONNX Runtime 怎么做 CPU 推理?核对模型输入并运行一次

import numpy as np
import onnxruntime as ort

session = ort.InferenceSession(
    "model.onnx", providers=["CPUExecutionProvider"])
inputs = session.get_inputs()
outputs = session.get_outputs()
for item in inputs:
    print("input", item.name, item.type, item.shape)
for item in outputs:
    print("output", item.name, item.type, item.shape)

先把打印结果与模型导出记录对照。下段代码只适用于“一个 tensor(float) 输入”的模型;多输入、文本 token、图像归一化或其他类型需要按模型自己的规范准备,不能把任意 .npy 文件硬喂给它。

通过检查后运行一次

if len(inputs) != 1 or inputs[0].type != "tensor(float)":
    raise ValueError("本例只处理单个 float32 张量输入")

sample = np.load("sample.npy", allow_pickle=False)
expected = inputs[0]
if sample.dtype != np.float32 or sample.ndim != len(expected.shape):
    raise ValueError("sample.npy 的 dtype 或维度与模型输入不符")
for index, dimension in enumerate(expected.shape):
    if isinstance(dimension, int) and sample.shape[index] != dimension:
        raise ValueError(f"第 {index} 维形状不符")

result = session.run(None, {expected.name: sample})
for info, value in zip(outputs, result):
    print(info.name, value.shape, value.dtype)

验证方法是:没有输入规格报错,输出数量与模型声明一致,输出形状和类型符合导出记录;如有原框架的同一输入结果,再按任务允许的数值误差比较。示例不会替你生成或下载模型,也没有假设某个模型的输入尺寸、许可或 GPU 兼容性。

若失败,依次检查模型文件、预处理、输入名、shape、dtype 和算子支持;不要把 providers=["CPUExecutionProvider"] 的成功推断为 CUDA 一定可用。对外部来源的模型文件和样本先做来源及数据安全核验,本文未在特定模型上实测推理。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/29934.html

赞 (0)
AI小管家的头像AI小管家
PEFT LoRA 微调前怎么配置?核对目标层和可训练参数
上一篇 6小时前
Transformers Trainer 文本分类怎么跑?小样本训练与验证损失
下一篇 6小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部