我正在尝试检查.onnx模型是否正确,并且需要运行推断以验证相同的输出。
我知道我们可以使用Python中的coremltools在.mlmodel上运行验证-基本上加载模型和输入并获得预测。我正在尝试为.onnx模型做类似的事情。
我找到了MXNet框架,但是我似乎不明白如何导入模型-我只有.onnx文件,并且MXNet除了onnx模型外还需要一些额外的输入。
在Python中还有其他简单的方法吗?我猜这是一个普遍的问题,但似乎找不到任何相关的库/框架像.mlmodel的coremltools一样容易地做到这一点。
我不希望将.onnx转换为另一种类型的模型(例如说PyTorch),因为我想按原样检查.onnx模型,而不用担心转换是否正确。只需一种方法即可加载模型和输入,运行推理并打印输出。
这是我第一次遇到这些格式,因此我们将不胜感激。
谢谢!
答案 0 :(得分:2)
我想出了一种使用Caffe2做到这一点的方法-只是发布以防将来有人尝试做同样的事情。
主要代码段为:
import onnx
import caffe2.python.onnx.backend
from caffe2.python import core, workspace
import numpy as np
# make input Numpy array of correct dimensions and type as required by the model
modelFile = onnx.load('model.onnx')
output = caffe2.python.onnx.backend.run_model(modelFile, inputArray.astype(np.float32))
还要特别注意,run_model
的输入只能是一个numpy数组或字符串。输出将是Backend.Outputs类型的对象。我能够从中提取输出numpy数组。
我能够在CPU上执行推理,因此不需要安装带有GPU的Caffe2(需要CUDA和CDNN)。