我想验证我的.onnx模型是否正确,需要运行推理来检查输出是否一致。
我知道我们可以使用Python中的coremltools对.mlmodel进行验证——基本上是加载模型和输入,然后获取预测结果。我试图对.onnx模型做类似的事情。
我找到了MXNet框架,但似乎无法理解如何导入模型——我只有.onnx文件,而MXNet需要除了onnx模型之外的其他输入。
在Python中还有其他简单的方法可以做到这一点吗?我猜这是一个常见的问题,但似乎找不到任何相关的库/框架可以像coremltools对.mlmodel那样轻松地做到这一点。
我不希望将.onnx转换为其他类型的模型(比如PyTorch),因为我想检查.onnx模型本身,而不担心转换是否正确。只需要一种方法来加载模型和输入,运行推理并打印输出。
这是我第一次遇到这些格式,所以任何帮助或见解都将不胜感激。
谢谢!
回答:
我找到了一种使用Caffe2的方法来做到这一点——只是以防将来有人试图做同样的事情而发布在这里。
主要代码片段是:
import onnx
import caffe2.python.onnx.backend
from caffe2.python import core, workspace
import numpy as np
# 制作符合模型要求的正确维度和类型的输入Numpy数组
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)。