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.18.0
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。
貢獻者
該套件由以下 Microsoft 工程師和資料科學家於 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 授權。
舊版本