使用onnx的一点总结(keras,mxnet,tensorflow测试.onnx模型)

算是笔记吧,onnx是哪个模型转来的,测试onnx模型就选哪个模型框架

引用:

ONNX Runtime for Keras

Importing an ONNX model into MXNet(mxnet官方教程)

Importing ONNX models to Tensorflow(onnx在github上的教程)

1 keras测试.onnx模型(Ubuntu 16,python3.5)

终端下载 onnxruntime

~$ pip3 install onnxruntime
import onnxruntime as rt
sess=rt.InferenceSession(model_path)#model_path就是模型的地址
input_name=sess.get_inputs()[0].name
res=sess.run(None,{input_name:data})#data就是模型的输入,res为模型的输出

2 mxnet测试.onnx模型

import mxnet.contrib.onnx as onnx_mxnet
import mxnet
sym, arg, aux = onnx_mxnet.import_model(model_path)#onnx模型地址
data_names = [graph_input for graph_input in sym.list_inputs()
                      if graph_input not in arg and graph_input not in aux]
print(data_names)#得到输入的名字
mod = mx.mod.Module(symbol=sym, data_names=data_names, context=mx.cpu(), label_names=None)
mod.bind(for_training=False, data_shapes=[(data_names[0],data.shape)], label_shapes=None)#data是模型的输入
mod.set_params(arg_params=arg, aux_params=aux, allow_missing=True, allow_extra=True)
from collections import namedtuple
Batch = namedtuple('Batch', ['data'])
mod.forward(Batch([mx.nd.array(data)]))
output = mod.get_outputs()

3 tensorflow 测试.onnx模型

这个方法需要安装onnx 和 onnx-tf

打开终端

~$ pip3 install onnx
~$ git clone https://github.com/onnx/onnx-tensorflow.git
~$ cd onnx-tensorflow
~$ pip3 install -e .
import onnx
from onnx_tf.backend import prepare
model = onnx.load(model_path)#model_path模型地址
tf_rep = prepare(model)
out_put=tf_rep.run(data)#data模型输入

 

你可能感兴趣的:(模型文件操作笔记,onnx,keras,mxnet,tensorflow)