skip to Main Content

I’m trying to save my model so it can be used in a ASP.NET program, and I think that ONNX is a good way to do so. The problem is that even after checking the docs and googling it all day, I still get the same error raise ValueError('Initial types are required. See usage of ' ValueError: Initial types are required. See usage of convert(...) in skl2onnx.convert for details. I have no idea what’s going on and any help is greatly appreciated!

My Code

import onnxmltools
from skl2onnx import convert
import lightgbm as lgb
import pandas as pd

parameters = {
    'boosting': 'gbdt',
    'feature_fraction': 0.5,
    'bagging_fraction': 0.5,
    'bagging_freq': 20,
    'num_boost_round': 10000,
    'verbose': -1 #maybe?
}


model_lgbm = lgb.train(parameters, train_data, valid_sets = test_data, early_stopping_rounds = 200);

onnx_model = convert.convert_sklearn(model_lgbm, ???);

2

Answers


  1. I think this doc will help you.

    You have to use :
    onnxmltools.convert_lightgbm
    and not
    convert.convert_sklearn

    Login or Signup to reply.
    1. As the other answer mentions: You have to use : onnxmltools.convert_lightgbm and not convert.convert_sklearn

    2. The error would also be caused since you have not defined the initial_types. The inital_types are in the Docs described as follows:

    Example of initial_types: Assume that the specified scikit-learn model takes a heterogeneous list as its input. If the first 5 elements are floats and the last 10 elements are integers, we need to specify initial types as below. The [None] in [None, 5] indicates the batch size here is unknown.

    from skl2onnx.common.data_types import FloatTensorType, Int64TensorType
    initial_type = [('float_input', FloatTensorType([None, 5])),
                    ('int64_input', Int64TensorType([None, 10]))]
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search