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
lightgbm 4.0.0
numpy 1.23.5
onnx 1.15.0
onnxmltools 1.11.2
onnxruntime 1.16.0+cu118
scipy 1.11.1
skl2onnx 1.16.0
sklearn 1.4.dev0
xgboost 1.7.6