sklearn-onnx:将 scikit-learn 模型转换为 ONNX¶
sklearn-onnx 使您能够将 scikit-learn 工具包的模型转换为 ONNX。
问题,疑问
您应该查找现有问题或提交新问题。源代码可在 onnx/sklearn-onnx 上找到。
ONNX 版本
转换器可以为特定版本的 ONNX 转换模型。每个 ONNX 版本都标有一个 opset 号,由函数 onnx_opset_version 返回。如果未在转换模型时指定,此函数将为目标 opset 参数(参数target_opset)返回默认值。每个运算符都有版本。该库为每个运算符选择小于或等于目标 opset 号的最新版本。ONNX 模型为每个运算符域有一个 opset 号,此值是所有 onnx 节点中最大的 opset 号。
<<<
from skl2onnx import __max_supported_opset__, __version__
print("documentation for version:", __version__)
print("Last supported opset:", __max_supported_opset__)
>>>
documentation for version: 1.19.1
Last supported opset: 21
后端
sklearn-onnx 将模型转换为 ONNX 格式,然后您可以使用您选择的后端来计算预测。但是,有一个方法可以使用 onnxruntime、onnxruntime-gpu 自动检查每个转换器。每个转换器都使用此后端进行测试。
入门
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 = X.astype(np.float32)
X_train, X_test, y_train, y_test = train_test_split(X, y)
clr = RandomForestClassifier()
clr.fit(X_train, y_train)
# Convert into ONNX format.
from skl2onnx import to_onnx
onx = to_onnx(clr, X[:1])
with open("rf_iris.onnx", "wb") as f:
f.write(onx.SerializeToString())
# Compute the prediction with onnxruntime.
import onnxruntime as rt
sess = rt.InferenceSession("rf_iris.onnx", providers=["CPUExecutionProvider"])
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 仅转换scikit-learn 的模型。onnxmltools 可用于转换libsvm、lightgbm、xgboost 的模型。其他转换器可以在 github/onnx、torch.onnx、ONNX-MXNet API、Microsoft.ML.Onnx… 上找到。
更改日志
请参阅 CHANGELOGS.md。
鸣谢
该软件包由以下微软工程师和数据科学家于 2017 年冬季开始开发:Zeeshan Ahmed、Wei-Sheng Chin、Aidan Crook、Xavier Dupré、Costin Eseanu、Tom Finley、Lixin Gong、Scott Inglis、Pei Jiang、Ivan Matantsev、Prabhat Roy、M. Zeeshan Siddiqui、Shouheng Yi、Shauheen Zahirazami、Yiwen Zhu、Du Li、Xuan Li、Wenbing Li。
许可证
它根据 Apache License v2.0 获得许可。
旧版本