Py之keras2onnx:keras2onnx库的简介、安装、使用方法之详细攻略
keras2onnx库的简介
keras2onnx模型转换器使用户能够将Keras模型转换为ONNX模型格式。最初,Keras转换器是在onnxmltools项目中开发的。keras2onnx转换器的开发已经移动到一个独立的存储库中,以支持更多种类的Keras模型,并降低混合多个转换器的复杂性。
大多数常见的Keras层都支持转换。有关Keras层的详细信息,请参阅Keras文档或tf.keras文档。
Windows机器学习(WinML)用户可以使用WinMLTools,它将其调用封装在keras2onnx上以转换Keras模型。如果您想使用keras2onnx转换器,请参考WinML发行说明,以确定适用于WinML版本的相应ONNX操作集编号。
keras2onnx已在Python 3.5-3.8上进行了测试,使用tensorflow 1.x/2.0-2.2(CI构建)。它不支持Python 2.x。
目前该项目已经停止了对keras2onnx的主动开发,并将keras2onnx冻结到tf-2.3和onnx-1.10。要转换您的Keras模型,您可以转向tf2onnx,它可以转换Tensorflow、Keras、Tflite和Tensorflow.js模型。所有keras2onnx单元测试已添加到tf2onnx ci管道中,以确保没有可避免的回归。tf2onnx api tf2onnx.convert.from_keras()与keras2onnx api类似,我们希望过渡是无痛的。
GitHub链接:GitHub - onnx/keras-onnx: Convert tf.keras/Keras models to ONNX
keras2onnx库的安装
pip install keras2onnx
pip install -i https://pypi.tuna./simple keras2onnx
keras2onnx库的使用方法
1、基础用法
import onnx
import keras2onnx
# 将Keras模型转换为ONNX模型
onnx_model = keras2onnx.convert_keras(model, model.name)
# 保存ONNX模型
onnx.save_model(onnx_model, 'model.onnx')
import onnxruntime as rt
import numpy as np
# 加载ONNX模型
sess = rt.InferenceSession('model.onnx')
# 对X_val进行预测
X_val_np = np.array(X_val)
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
y_prob = sess.run([output_name], {input_name: X_val_np.astype(np.float32)})[0]
# 对比模型文件导出前后的预测结果
res_df['loaded_model_ONNX_y_prob'] = y_prob
res_df.to_csv('loaded_model_ONNX_y_prob.csv', index=False)
print(res_df)