ONNX转换器公共库教程
onnxconverter-common项目地址:https://gitcode.com/gh_mirrors/on/onnxconverter-common
1. 项目介绍
onnxconverter-common
是一个由Microsoft维护的开源项目,它提供了一组用于从各种人工智能框架(如scikit-learn和xgboost)到ONNX模型的转换工具的通用功能。该项目旨在简化混合框架模型的转换,例如在一个scikit-learn管道中嵌入xgboost模型。通过这个库,不同的转换器可以协同工作,使得跨框架的数据处理和模型整合变得更加便捷。
许可证: 该项目遵循MIT许可。
源码地址: https://github.com/microsoft/onnxconverter-common
2. 项目快速启动
要安装onnxconverter-common
,首先确保已安装了conda
。然后,运行以下命令来安装:
conda install -c conda-forge onnxconverter-common
一旦安装完成,你可以导入库并在你的Python脚本中使用它:
import onnxconverter_common as oc
接下来,你可以选择一个支持的AI框架转换器,如sklearn-onnx
,并使用onnxconverter-common
的辅助函数进行转换:
from skl2onnx import to_onnx
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
# 加载数据和训练模型
iris = load_iris()
model = RandomForestClassifier()
model.fit(iris.data, iris.target)
# 转换模型至ONNX
onnx_model = to_onnx(model, iris.data[:1].tolist(), target_opset=oc.get_opset_number_for_onnx())
3. 应用案例和最佳实践
案例一:混合框架转换
假设你有一个包含了不同框架构建组件的复杂流程,例如一个在scikit-learn中的预处理器后面跟着一个Keras的神经网络层。onnxconverter-common
可以帮助你将这些组件串联起来并转化为单一的ONNX模型。
# 假设你已经有了preprocessor(scikit-learn)和keras_model(Keras)
from skl2onnx.common.datacontainer import DataContainer
from onnxconverter_common.registration import register_converter
# 自定义Keras模型转换器
def convert_keras_to_onnx(keras_model, name):
# 实现转换逻辑
...
register_converter('MyKerasModel', convert_keras_to_onnx)
# 构建ONNX模型
pipeline_onnx = oc.convert_sklearn(preprocessor, 'preproc', inputs=[DataContainer(iris.data)])
pipeline_onnx.extend(convert_keras_to_onnx(keras_model, 'keras_layer'))
# 保存ONNX模型
onnx.save(pipeline_onnx.model_proto, "mixed_framework_model.onnx")
最佳实践
- 使用最新版本的
onnxconverter-common
以获取最新的特性和支持。 - 在转换前测试模型,确保转换后的ONNX模型能够正确预测。
- 监控ONNX操作集(Opset),确保所有使用的操作都有对应的ONNX实现。
4. 典型生态项目
- ONNX: 开放式标准模型交换格式,使各种工具、框架和云之间的AI模型可互操作。
- ** skl2onnx **: 将scikit-learn模型转换成ONNX模型的库。
- onnxmltools: 提供工具帮助将scikit-learn和其他模型转换成ONNX。
- PyTorch: 支持ONNX导出的深度学习框架。
- TensorFlow-on-ONNX: 用于将TensorFlow模型转换成ONNX的工具。
了解更多的生态项目以及如何将它们集成到你的工作中,可以访问ONNX的官方网站和相关社区资源。
onnxconverter-common项目地址:https://gitcode.com/gh_mirrors/on/onnxconverter-common