Tutorial#
The tutorial goes from a simple example which converts a pipeline to a more complex example involving operator not actually implemented in ONNX operators or ONNX ML operators.
- The easy case
- Train and deploy a scikit-learn pipeline
- Benchmark ONNX conversion
- What is the opset number?
- One model, many possible conversions with options
- Choose appropriate output of a classifier
- Black list operators when converting
- Issues when switching to float
- Intermediate results and investigation
- Store arrays in one onnx graph
- Dataframe as an input
- Modify the ONNX graph
- Using converters from other libraries
- A custom converter for a custom model
- Advanced scenarios
- Write converters for other libraries
The tutorial was tested with following version:
<<<
import catboost
import numpy
import scipy
import sklearn
import lightgbm
import onnx
import onnxmltools
import onnxruntime
import xgboost
import skl2onnx
mods = [
numpy,
scipy,
sklearn,
lightgbm,
xgboost,
catboost,
onnx,
onnxmltools,
onnxruntime,
skl2onnx,
]
mods = [(m.__name__, m.__version__) for m in mods]
mx = max(len(_[0]) for _ in mods) + 1
for name, vers in sorted(mods):
print("%s%s%s" % (name, " " * (mx - len(name)), vers))
>>>
<frozen importlib._bootstrap>:241: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 232 from PyObject
catboost 1.2.2
lightgbm 4.2.0
numpy 1.26.2
onnx 1.16.0
onnxmltools 1.13.0
onnxruntime 1.17.0+cu118
scipy 1.11.3
skl2onnx 1.17.0
sklearn 1.5.dev0
xgboost 2.0.3