Source code for mlprodict.onnxrt.validate._validate_problems_helper

"""
Validates runtime for many :scikit-learn: operators.
The submodule relies on :epkg:`onnxconverter_common`,
:epkg:`sklearn-onnx`.


:githublink:`%|py|7`
"""
import numpy
from skl2onnx.common.data_types import (
    FloatTensorType, DoubleTensorType)


text_alpha_num = [
    ('zero', 0),
    ('one', 1),
    ('two', 2),
    ('three', 3),
    ('four', 4),
    ('five', 5),
    ('six', 6),
    ('seven', 7),
    ('eight', 8),
    ('nine', 9),
    ('dix', 10),
    ('eleven', 11),
    ('twelve', 12),
    ('thirteen', 13),
    ('fourteen', 14),
    ('fifteen', 15),
    ('sixteen', 16),
    ('seventeen', 17),
    ('eighteen', 18),
    ('nineteen', 19),
    ('twenty', 20),
    ('twenty one', 21),
    ('twenty two', 22),
    ('twenty three', 23),
    ('twenty four', 24),
    ('twenty five', 25),
    ('twenty six', 26),
    ('twenty seven', 27),
    ('twenty eight', 28),
    ('twenty nine', 29),
]


[docs]def _guess_noshape(obj, shape): if isinstance(obj, numpy.ndarray): if obj.dtype == numpy.float32: return FloatTensorType(shape) # pragma: no cover if obj.dtype == numpy.float64: return DoubleTensorType(shape) raise NotImplementedError( # pragma: no cover "Unable to process object(1) [{}].".format(obj)) raise NotImplementedError( # pragma: no cover "Unable to process object(2) [{}].".format(obj))
[docs]def _noshapevar(fct): def process_itt(itt, Xort): if isinstance(itt, tuple): return (process_itt(itt[0], Xort), itt[1]) # name = "V%s_" % str(id(Xort))[:5] new_itt = [] for a, b in itt: # shape = [name + str(i) for s in b.shape] shape = [None for s in b.shape] new_itt.append((a, _guess_noshape(b, shape))) return new_itt def new_fct(**kwargs): X, y, itt, meth, mo, Xort = fct(**kwargs) new_itt = process_itt(itt, Xort) return X, y, new_itt, meth, mo, Xort return new_fct
[docs]def _1d_problem(fct): def new_fct(**kwargs): n_features = kwargs.get('n_features', None) if n_features not in (None, 1): raise RuntimeError( # pragma: no cover "Misconfiguration: the number of features must not be " "specified for a 1D problem.") X, y, itt, meth, mo, Xort = fct(**kwargs) new_itt = itt # process_itt(itt, Xort) X = X[:, 0] return X, y, new_itt, meth, mo, Xort return new_fct