项目介绍:sklearn-onnx
什么是 sklearn-onnx?
sklearn-onnx 是一个用于将 scikit-learn 模型转换为 ONNX 格式的项目。ONNX,即开放神经网络交换格式,是一种允许跨不同框架和工具共享模型的开放格式。通过这个项目,用户可以将 scikit-learn 模型转换为 ONNX 格式,之后可以使用如 ONNX Runtime 的工具进行高效的模型评估。
功能特点
-
格式转换:sklearn-onnx 提供了将各种 scikit-learn 模型(包括管道和外部库的转换器)转换为 ONNX 格式的功能。所有的转换工具都经过 onnxruntime 的测试,以确保转换后的模型能够高效地运行。
-
高性能评分:转换为 ONNX 格式后,模型可以通过 ONNX Runtime 进行高性能的评分和预测计算。
-
扩展性:除了内置转换器外,sklearn-onnx 还支持注册外部转换器,从而能够处理来自外部库的模型或转换器。
安装方法
用户可以通过 PyPi 进行简单安装:
pip install skl2onnx
或者从源码安装最新的版本:
pip install git+https://github.com/onnx/sklearn-onnx.git
快速开始指南
以下是一个简单的使用示例:
-
训练模型:使用 scikit-learn 训练一个分类模型,例如随机森林。
import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier iris = load_iris() X, y = iris.data, iris.target X_train, X_test, y_train, y_test = train_test_split(X, y) clr = RandomForestClassifier() clr.fit(X_train, y_train)
-
转换为 ONNX 格式:使用 skl2onnx 将训练好的模型转换为 ONNX 格式。
from skl2onnx import to_onnx onx = to_onnx(clr, X[:1]) with open("rf_iris.onnx", "wb") as f: f.write(onx.SerializeToString())
-
使用 ONNX Runtime 进行预测:加载转换后的模型,并进行预测。
import onnxruntime as rt sess = rt.InferenceSession("rf_iris.onnx") input_name = sess.get_inputs()[0].name label_name = sess.get_outputs()[0].name pred_onx = sess.run([label_name], {input_name: X_test.astype(np.float32)})[0]
贡献与协作
sklearn-onnx 项目欢迎各种形式的贡献,无论是反馈、创意还是代码贡献。感兴趣的开发者可以深入项目的源码,为其功能扩展和完善提供帮助。
许可证
sklearn-onnx 遵循 Apache License v2.0 开源许可证协议,这意味着用户可以自由地使用、修改和分发该项目,只需遵循相应的许可证条款。
通过 sklearn-onnx,开发者可以轻松地将 scikit-learn 中的模型转换为 ONNX 格式,充分利用 ONNX Runtime 等工具的强大性能,从而实现更高效的模型部署与应用。