.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/plot_convert_model.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_plot_convert_model.py: .. _l-rf-iris-example: Train, convert and predict a model ================================== Train and deploy a model usually involves the three following steps: * train a pipeline with *scikit-learn*, * convert it into *ONNX* with *sklearn-onnx*, * predict with *onnxruntime*. .. contents:: :local: Train a model +++++++++++++ A very basic example using random forest and the iris dataset. .. GENERATED FROM PYTHON SOURCE LINES 26-45 .. code-block:: default import skl2onnx import onnx import sklearn from sklearn.linear_model import LogisticRegression import numpy import onnxruntime as rt from skl2onnx.common.data_types import FloatTensorType from skl2onnx import convert_sklearn 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) print(clr) .. rst-class:: sphx-glr-script-out .. code-block:: none RandomForestClassifier() .. GENERATED FROM PYTHON SOURCE LINES 46-48 Convert a model into ONNX +++++++++++++++++++++++++ .. GENERATED FROM PYTHON SOURCE LINES 48-56 .. code-block:: default initial_type = [('float_input', FloatTensorType([None, 4]))] onx = convert_sklearn(clr, initial_types=initial_type, target_opset=12) with open("rf_iris.onnx", "wb") as f: f.write(onx.SerializeToString()) .. GENERATED FROM PYTHON SOURCE LINES 57-59 Compute the prediction with ONNX Runtime ++++++++++++++++++++++++++++++++++++++++ .. GENERATED FROM PYTHON SOURCE LINES 59-66 .. code-block:: default 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(numpy.float32)})[0] print(pred_onx) .. rst-class:: sphx-glr-script-out .. code-block:: none [2 2 2 1 2 0 2 2 2 2 2 0 2 1 1 2 0 1 0 1 0 0 0 1 0 2 1 1 1 2 2 0 2 2 0 1 2 2] .. GENERATED FROM PYTHON SOURCE LINES 67-68 Full example with a logistic regression .. GENERATED FROM PYTHON SOURCE LINES 68-85 .. code-block:: default clr = LogisticRegression() clr.fit(X_train, y_train) initial_type = [('float_input', FloatTensorType([None, X_train.shape[1]]))] onx = convert_sklearn(clr, initial_types=initial_type, target_opset=12) with open("logreg_iris.onnx", "wb") as f: f.write(onx.SerializeToString()) sess = rt.InferenceSession("logreg_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(numpy.float32)})[0] print(pred_onx) .. rst-class:: sphx-glr-script-out .. code-block:: none [2 2 2 1 2 0 2 2 2 2 2 0 2 1 1 2 0 1 0 1 0 0 0 1 0 2 1 1 1 2 2 0 2 2 0 1 2 2] .. GENERATED FROM PYTHON SOURCE LINES 86-87 **Versions used for this example** .. GENERATED FROM PYTHON SOURCE LINES 87-93 .. code-block:: default print("numpy:", numpy.__version__) print("scikit-learn:", sklearn.__version__) print("onnx: ", onnx.__version__) print("onnxruntime: ", rt.__version__) print("skl2onnx: ", skl2onnx.__version__) .. rst-class:: sphx-glr-script-out .. code-block:: none numpy: 1.23.5 scikit-learn: 1.2.2 onnx: 1.13.1 onnxruntime: 1.14.1 skl2onnx: 1.14.0 .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 1.340 seconds) .. _sphx_glr_download_auto_examples_plot_convert_model.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_convert_model.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_convert_model.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_