Benchmark, comparison sklearn - forward-backward - classification#

The benchmark compares the processing time between scikit-learn and onnxruntime-training on a logistic regression regression and a neural network for classification. It replicates the benchmark implemented in Benchmark, comparison scikit-learn - forward-backward.

First comparison: neural network#

import warnings
import time
import numpy
import matplotlib.pyplot as plt
from pandas import DataFrame
from onnxruntime import get_device
from pyquickhelper.pycode.profiling import profile, profile2graph
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from mlprodict.onnx_conv import to_onnx
from mlprodict.plotting.text_plot import onnx_simple_text_plot
from mlprodict.onnx_tools.onnx_manipulations import select_model_inputs_outputs
from onnxcustom.utils.onnx_helper import onnx_rename_weights
from onnxcustom.training.optimizers_partial import (
    OrtGradientForwardBackwardOptimizer)
from onnxcustom.training.sgd_learning_rate import LearningRateSGDNesterov
from onnxcustom.training.sgd_learning_loss import NegLogLearningLoss
from onnxcustom.training.sgd_learning_penalty import ElasticLearningPenalty


X, y = make_classification(1000, n_features=100, n_classes=2)
X = X.astype(numpy.float32)
y = y.astype(numpy.int64)
X_train, X_test, y_train, y_test = train_test_split(X, y)

Benchmark function.

def benchmark(X, y, skl_model, train_session, name, verbose=True):
    """
    :param skl_model: model from scikit-learn
    :param train_session: instance of OrtGradientForwardBackwardOptimizer
    :param name: experiment name
    :param verbose: to debug
    """
    print(f"[benchmark] {name}")
    begin = time.perf_counter()
    skl_model.fit(X, y)
    duration_skl = time.perf_counter() - begin
    length_skl = len(skl_model.loss_curve_)
    print(
        f"[benchmark] skl={length_skl!r} iterations - {duration_skl!r} seconds")

    begin = time.perf_counter()
    train_session.fit(X, y)
    duration_ort = time.perf_counter() - begin
    length_ort = len(train_session.train_losses_)
    print(
        f"[benchmark] ort={length_ort!r} iteration - {duration_ort!r} seconds")

    return dict(skl=duration_skl, ort=duration_ort, name=name,
                iter_skl=length_skl, iter_ort=length_ort,
                losses_skl=skl_model.loss_curve_,
                losses_ort=train_session.train_losses_)

Common parameters and model

batch_size = 15
max_iter = 100

nn = MLPClassifier(hidden_layer_sizes=(50, 10), max_iter=max_iter,
                   solver='sgd', learning_rate_init=1e-1, alpha=1e-4,
                   n_iter_no_change=max_iter * 3, batch_size=batch_size,
                   nesterovs_momentum=True, momentum=0.9,
                   learning_rate="invscaling")

with warnings.catch_warnings():
    warnings.simplefilter('ignore')
    nn.fit(X_train, y_train)

Conversion to ONNX and trainer initialization It is slightly different from a regression model. Probabilities usually come from raw scores transformed through a function such as the sigmoid function. The gradient of the loss is computed against the raw scores because it is easier to compute than to let onnxruntime do it.

onx = to_onnx(nn, X_train[:1].astype(numpy.float32), target_opset=15,
              options={'zipmap': False})

try:
    print(onnx_simple_text_plot(onx))
except RuntimeError as e:
    print("You should upgrade mlprodict.")
    print(e)
opset: domain='' version=14
opset: domain='ai.onnx.ml' version=1
input: name='X' type=dtype('float32') shape=[None, 100]
init: name='coefficient' type=dtype('float32') shape=(100, 50)
init: name='intercepts' type=dtype('float32') shape=(1, 50)
init: name='coefficient1' type=dtype('float32') shape=(50, 10)
init: name='intercepts1' type=dtype('float32') shape=(1, 10)
init: name='coefficient2' type=dtype('float32') shape=(10, 1)
init: name='intercepts2' type=dtype('float32') shape=(1, 1) -- array([0.04175882], dtype=float32)
init: name='unity' type=dtype('float32') shape=() -- array([1.], dtype=float32)
init: name='classes' type=dtype('int32') shape=(2,) -- array([0, 1], dtype=int32)
init: name='shape_tensor' type=dtype('int64') shape=(1,) -- array([-1])
Cast(X, to=1) -> cast_input
  MatMul(cast_input, coefficient) -> mul_result
    Add(mul_result, intercepts) -> add_result
      Relu(add_result) -> next_activations
        MatMul(next_activations, coefficient1) -> mul_result1
          Add(mul_result1, intercepts1) -> add_result1
            Relu(add_result1) -> next_activations1
              MatMul(next_activations1, coefficient2) -> mul_result2
                Add(mul_result2, intercepts2) -> add_result2
                  Sigmoid(add_result2) -> out_activations_result
                    Sub(unity, out_activations_result) -> negative_class_proba
                    Concat(negative_class_proba, out_activations_result, axis=1) -> probabilities
                      ArgMax(probabilities, axis=1) -> argmax_output
                        ArrayFeatureExtractor(classes, argmax_output) -> array_feature_extractor_result
                          Reshape(array_feature_extractor_result, shape_tensor) -> reshaped_result
                            Cast(reshaped_result, to=7) -> label
output: name='label' type=dtype('int64') shape=[None]
output: name='probabilities' type=dtype('float32') shape=[None, 2]

Raw scores are the input of operator Sigmoid.

onx = select_model_inputs_outputs(
    onx, outputs=["add_result2"], infer_shapes=True)
print(onnx_simple_text_plot(onx))
opset: domain='' version=14
opset: domain='ai.onnx.ml' version=1
input: name='X' type=dtype('float32') shape=[None, 100]
init: name='coefficient' type=dtype('float32') shape=(100, 50)
init: name='intercepts' type=dtype('float32') shape=(1, 50)
init: name='coefficient1' type=dtype('float32') shape=(50, 10)
init: name='intercepts1' type=dtype('float32') shape=(1, 10)
init: name='coefficient2' type=dtype('float32') shape=(10, 1)
init: name='intercepts2' type=dtype('float32') shape=(1, 1) -- array([0.04175882], dtype=float32)
Cast(X, to=1) -> cast_input
  MatMul(cast_input, coefficient) -> mul_result
    Add(mul_result, intercepts) -> add_result
      Relu(add_result) -> next_activations
        MatMul(next_activations, coefficient1) -> mul_result1
          Add(mul_result1, intercepts1) -> add_result1
            Relu(add_result1) -> next_activations1
              MatMul(next_activations1, coefficient2) -> mul_result2
                Add(mul_result2, intercepts2) -> add_result2
output: name='add_result2' type=dtype('float32') shape=['unk__0', 1]

And the names are renamed to have them follow the alphabetical order (see OrtGradientForwardBackward).

onx = onnx_rename_weights(onx)
print(onnx_simple_text_plot(onx))
opset: domain='' version=14
opset: domain='ai.onnx.ml' version=1
input: name='X' type=dtype('float32') shape=[None, 100]
init: name='I0_coefficient' type=dtype('float32') shape=(100, 50)
init: name='I1_intercepts' type=dtype('float32') shape=(1, 50)
init: name='I2_coefficient1' type=dtype('float32') shape=(50, 10)
init: name='I3_intercepts1' type=dtype('float32') shape=(1, 10)
init: name='I4_coefficient2' type=dtype('float32') shape=(10, 1)
init: name='I5_intercepts2' type=dtype('float32') shape=(1, 1) -- array([0.04175882], dtype=float32)
Cast(X, to=1) -> r0
  MatMul(r0, I0_coefficient) -> r1
    Add(r1, I1_intercepts) -> r2
      Relu(r2) -> r3
        MatMul(r3, I2_coefficient1) -> r4
          Add(r4, I3_intercepts1) -> r5
            Relu(r5) -> r6
              MatMul(r6, I4_coefficient2) -> r7
                Add(r7, I5_intercepts2) -> add_result2
output: name='add_result2' type=dtype('float32') shape=['unk__0', 1]

We select the log loss (see NegLogLearningLoss, a simple regularization defined with ElasticLearningPenalty, and the Nesterov algorithm to update the weights with LearningRateSGDNesterov <onnxcustom.training.sgd_learning_rate.LearningRateSGDNesterov>.

train_session = OrtGradientForwardBackwardOptimizer(
    onx, device='cpu', warm_start=False,
    max_iter=max_iter, batch_size=batch_size,
    learning_loss=NegLogLearningLoss(),
    learning_rate=LearningRateSGDNesterov(
        1e-7, nesterov=True, momentum=0.9),
    learning_penalty=ElasticLearningPenalty(l1=0, l2=1e-4))


benches = [benchmark(X_train, y_train, nn, train_session, name='NN-CPU')]
[benchmark] NN-CPU
somewhere/workspace/onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:679: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
  warnings.warn(
[benchmark] skl=100 iterations - 8.830881705041975 seconds
[benchmark] ort=100 iteration - 13.875312836025842 seconds

Profiling#

def clean_name(text):
    pos = text.find('onnxruntime')
    if pos >= 0:
        return text[pos:]
    pos = text.find('sklearn')
    if pos >= 0:
        return text[pos:]
    pos = text.find('onnxcustom')
    if pos >= 0:
        return text[pos:]
    pos = text.find('site-packages')
    if pos >= 0:
        return text[pos:]
    return text


ps = profile(lambda: benchmark(X_train, y_train,
             nn, train_session, name='NN-CPU'))[0]
root, nodes = profile2graph(ps, clean_text=clean_name)
text = root.to_text()
print(text)
[benchmark] NN-CPU
somewhere/workspace/onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:679: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
  warnings.warn(
[benchmark] skl=100 iterations - 9.962370740016922 seconds
[benchmark] ort=100 iteration - 16.305554010090418 seconds
isfunction                                                   --       8       8 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:159:isfunction (isfunction)
name                                                         --     112     112 -- 0.00004 0.00004 -- /usr/local/lib/python3.9/inspect.py:2565:name (name)
kind                                                         --      88      88 -- 0.00003 0.00003 -- /usr/local/lib/python3.9/inspect.py:2577:kind (kind)
parameters                                                   --       8       8 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2882:parameters (parameters)
signature                                                    --       4       4 -- 0.00001 0.00115 -- /usr/local/lib/python3.9/inspect.py:3128:signature (signature)
    from_callable                                            --       4       4 -- 0.00001 0.00114 -- /usr/local/lib/python3.9/inspect.py:2876:from_callable (from_callable)
        _signature_from_callable                             --       4       4 -- 0.00009 0.00113 -- /usr/local/lib/python3.9/inspect.py:2244:_signature_from_callable (_signature_from_callable)
            isfunction                                       --       4       4 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:159:isfunction (isfunction) +++
            unwrap                                           --       4       4 -- 0.00003 0.00004 -- /usr/local/lib/python3.9/inspect.py:494:unwrap (unwrap)
                _is_wrapper                                  --       4       4 -- 0.00000 0.00001 -- /usr/local/lib/python3.9/inspect.py:514:_is_wrapper (_is_wrapper)
            _signature_from_function                         --       4       4 -- 0.00034 0.00098 -- /usr/local/lib/python3.9/inspect.py:2150:_signature_from_function (_signature_from_function)
                isfunction                                   --       4       4 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:159:isfunction (isfunction) +++
                __init__                                     --      38      38 -- 0.00025 0.00044 -- /usr/local/lib/python3.9/inspect.py:2515:__init__ (__init__)
                    __call__                                 --      38      38 -- 0.00010 0.00013 -- /usr/local/lib/python3.9/enum.py:289:__call__ (__call__)
                        __new__                              --      38      38 -- 0.00003 0.00003 -- /usr/local/lib/python3.9/enum.py:580:__new__ (__new__)
                    <method 'isidentifier' of 'str' objects> --      38      38 -- 0.00003 0.00003 -- ~:0:<method 'isidentifier' of 'str' objects> (<method 'isidentifier' of 'str' objects>)
                    <built-in method builtins.isinstance>    --      38      38 -- 0.00002 0.00002 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
                __init__                                     --       4       4 -- 0.00009 0.00015 -- /usr/local/lib/python3.9/inspect.py:2798:__init__ (__init__)
                    <genexpr>                                --      42      42 -- 0.00005 0.00006 -- /usr/local/lib/python3.9/inspect.py:2847:<genexpr> (<genexpr>)
                        name                                 --      38      38 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/inspect.py:2565:name (name) +++
                <method 'append' of 'list' objects>          --      38      38 -- 0.00002 0.00002 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
                <method 'get' of 'dict' objects>             --      66      66 -- 0.00003 0.00003 -- ~:0:<method 'get' of 'dict' objects> (<method 'get' of 'dict' objects>) +++
filter                                                       --      18      18 -- 0.00006 0.00015 -- /usr/local/lib/python3.9/logging/__init__.py:787:filter (filter)
    filter                                                   --      12      12 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:351:filter (filter)
    filter                                                   --       6       6 -- 0.00004 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:484:filter (filter)
        <built-in method builtins.isinstance>                --      18      18 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <built-in method builtins.hasattr>                       --      18      18 -- 0.00002 0.00002 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
acquire                                                      --      30      30 -- 0.00005 0.00009 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire)
    <method 'acquire' of '_thread.RLock' objects>            --      30      30 -- 0.00003 0.00003 -- ~:0:<method 'acquire' of '_thread.RLock' objects> (<method 'acquire' of '_thread.RLock' objects>)
release                                                      --      30      30 -- 0.00005 0.00006 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release)
    <method 'release' of '_thread.RLock' objects>            --      30      30 -- 0.00001 0.00001 -- ~:0:<method 'release' of '_thread.RLock' objects> (<method 'release' of '_thread.RLock' objects>)
emit                                                         --      12      12 -- 0.00007 0.00093 -- /usr/local/lib/python3.9/logging/__init__.py:1067:emit (emit)
    format                                                   --      12      12 -- 0.00003 0.00048 -- /usr/local/lib/python3.9/logging/__init__.py:912:format (format)
        format                                               --      12      12 -- 0.00008 0.00045 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:531:format (format)
            format                                           --      12      12 -- 0.00007 0.00034 -- /usr/local/lib/python3.9/logging/__init__.py:646:format (format)
                usesTime                                     --      12      12 -- 0.00002 0.00007 -- /usr/local/lib/python3.9/logging/__init__.py:624:usesTime (usesTime)
                    usesTime                                 --      12      12 -- 0.00003 0.00005 -- /usr/local/lib/python3.9/logging/__init__.py:417:usesTime (usesTime)
                        <method 'find' of 'str' objects>     --      12      12 -- 0.00002 0.00002 -- ~:0:<method 'find' of 'str' objects> (<method 'find' of 'str' objects>)
                formatMessage                                --      12      12 -- 0.00002 0.00008 -- /usr/local/lib/python3.9/logging/__init__.py:630:formatMessage (formatMessage)
                    format                                   --      12      12 -- 0.00002 0.00006 -- /usr/local/lib/python3.9/logging/__init__.py:428:format (format)
                        _format                              --      12      12 -- 0.00004 0.00004 -- /usr/local/lib/python3.9/logging/__init__.py:425:_format (_format)
                getMessage                                   --      12      12 -- 0.00005 0.00013 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:89:getMessage (getMessage)
                    getMessage                               --      12      12 -- 0.00007 0.00007 -- /usr/local/lib/python3.9/logging/__init__.py:354:getMessage (getMessage)
                    <built-in method builtins.getattr>       --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
            colorize                                         --       2       2 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/console.py:72:colorize (colorize)
                escseq                                       --       4       4 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/console.py:73:escseq (escseq)
            <built-in method builtins.getattr>               --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
    flush                                                    --      12      12 -- 0.00006 0.00032 -- /usr/local/lib/python3.9/logging/__init__.py:1056:flush (flush)
        acquire                                              --      12      12 -- 0.00002 0.00003 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire) +++
        release                                              --      12      12 -- 0.00002 0.00003 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release) +++
        flush                                                --       6       6 -- 0.00002 0.00020 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:557:flush (flush)
            <method 'flush' of '_io.TextIOWrapper' objects>  --       6       6 -- 0.00018 0.00018 -- ~:0:<method 'flush' of '_io.TextIOWrapper' objects> (<method 'flush' of '_io.TextIOWrapper' objects>)
        <built-in method builtins.hasattr>                   --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
    write                                                    --       6       6 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:549:write (write)
    write                                                    --       6       6 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:567:write (write)
isEnabledFor                                                 --      12      12 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:1677:isEnabledFor (isEnabledFor)
inner                                                        --       6       6 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/typing.py:256:inner (inner)
cast                                                         --       6       6 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/typing.py:1326:cast (cast)
simplefilter                                                 --      11      11 -- 0.00004 0.00026 -- /usr/local/lib/python3.9/warnings.py:165:simplefilter (simplefilter)
    _add_filter                                              --      11      11 -- 0.00014 0.00021 -- /usr/local/lib/python3.9/warnings.py:181:_add_filter (_add_filter)
        <method 'insert' of 'list' objects>                  --      11      11 -- 0.00001 0.00001 -- ~:0:<method 'insert' of 'list' objects> (<method 'insert' of 'list' objects>)
        <method 'remove' of 'list' objects>                  --      11      11 -- 0.00005 0.00005 -- ~:0:<method 'remove' of 'list' objects> (<method 'remove' of 'list' objects>)
        <built-in method _warnings._filters_mutated>         --      11      11 -- 0.00000 0.00000 -- ~:0:<built-in method _warnings._filters_mutated> (<built-in method _warnings._filters_mutated>) +++
    <built-in method builtins.isinstance>                    --      11      11 -- 0.00000 0.00000 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
__init__                                                     --       2       2 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:403:__init__ (__init__)
__init__                                                     --      11      11 -- 0.00003 0.00003 -- /usr/local/lib/python3.9/warnings.py:437:__init__ (__init__)
__enter__                                                    --      11      11 -- 0.00007 0.00008 -- /usr/local/lib/python3.9/warnings.py:458:__enter__ (__enter__)
    <built-in method _warnings._filters_mutated>             --      11      11 -- 0.00001 0.00001 -- ~:0:<built-in method _warnings._filters_mutated> (<built-in method _warnings._filters_mutated>) +++
__exit__                                                     --      11      11 -- 0.00005 0.00006 -- /usr/local/lib/python3.9/warnings.py:477:__exit__ (__exit__)
    <built-in method _warnings._filters_mutated>             --      11      11 -- 0.00000 0.00000 -- ~:0:<built-in method _warnings._filters_mutated> (<built-in method _warnings._filters_mutated>) +++
any                                                          --       2       2 -- 0.00002 0.00013 -- <__array_function__ internals>:177:any (any)
    _any_dispatcher                                          --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2328:_any_dispatcher (_any_dispatcher)
    <built-in method numpy.core....implement_array_function> --       2       2 -- 0.00002 0.00011 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
clip                                                         --    5001    5001 -- 0.02569 0.66941 -- <__array_function__ internals>:177:clip (clip)
    _clip_dispatcher                                         --    5001    5001 -- 0.00398 0.00398 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2107:_clip_dispatcher (_clip_dispatcher)
    <built-in method numpy.core....implement_array_function> --    5001    5001 -- 0.06390 0.63975 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
zeros_like                                                   --       7       7 -- 0.00002 0.00030 -- <__array_function__ internals>:177:zeros_like (zeros_like)
    _zeros_like_dispatcher                                   --       7       7 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numeric.py:73:_zeros_like_dispatcher (_zeros_like_dispatcher)
    <built-in method numpy.core....implement_array_function> --       7       7 -- 0.00002 0.00027 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
empty_like                                                   --       8       8 -- 0.00004 0.00009 -- <__array_function__ internals>:177:empty_like (empty_like)
    empty_like                                               --       8       8 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:84:empty_like (empty_like)
unique                                                       --     106     106 -- 0.00051 0.00918 -- <__array_function__ internals>:177:unique (unique)
    _unique_dispatcher                                       --     106     106 -- 0.00008 0.00008 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:133:_unique_dispatcher (_unique_dispatcher)
    <built-in method numpy.core....implement_array_function> --     106     106 -- 0.00063 0.00859 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
<lambda>                                                     --       1       1 -- 0.00000 26.26987 -- onnxcustom/onnxcustom_UT_39_std/_doc/examples/plot_orttraining_benchmark_fwbw_cls.py:168:<lambda> (<lambda>)
    benchmark                                                --       1       1 -- 0.00010 26.26986 -- onnxcustom/onnxcustom_UT_39_std/_doc/examples/plot_orttraining_benchmark_fwbw_cls.py:50:benchmark (benchmark)
        fit                                                  --       1       1 -- 0.00426 16.30552 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:288:fit (fit)
            __init__                                         --       1       1 -- 0.00004 0.00007 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:31:__init__ (__init__)
                get_ort_device                               --       1       1 -- 0.00000 0.00000 -- onnxruntime_helper.py:63:get_ort_device (get_ort_device)
                numpy_to_ort_value                           --       2       2 -- 0.00000 0.00002 -- onnxruntime_helper.py:133:numpy_to_ort_value (numpy_to_ort_value) +++
            needs_grad                                       --       3       3 -- 0.00005 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:104:needs_grad (needs_grad)
                needs_grad                                   --       3       3 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:337:needs_grad (needs_grad)
            get_full_state                                   --     101     101 -- 0.00064 0.00252 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:155:get_full_state (get_full_state) +++
            set_state                                        --       4       4 -- 0.00021 0.00066 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:216:set_state (set_state)
                _get_att_state                               --       4       4 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:147:_get_att_state (_get_att_state) +++
                numpy_to_ort_value                           --      24      24 -- 0.00005 0.00030 -- onnxruntime_helper.py:133:numpy_to_ort_value (numpy_to_ort_value) +++
                <built-in method numpy.zeros>                --      12      12 -- 0.00005 0.00005 -- ~:0:<built-in method numpy.zeros> (<built-in method numpy.zeros>) +++
                <method 'append' of 'list' objects>          --      56      56 -- 0.00002 0.00002 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
                <built-in method builtins.isinstance>        --      24      24 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
            <listcomp>                                       --       1       1 -- 0.00004 0.00212 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:339:<listcomp> (<listcomp>)
                get_initializer                              --       7       7 -- 0.00014 0.00208 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:278:get_initializer (get_initializer) +++
            <listcomp>                                       --       1       1 -- 0.00004 0.00193 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:343:<listcomp> (<listcomp>)
                get_initializer                              --       7       7 -- 0.00013 0.00189 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:278:get_initializer (get_initializer) +++
            _iteration                                       --     100     100 -- 1.35541 16.23786 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:424:_iteration (_iteration)
                iter_ortvalue                                --    5100    5100 -- 0.10012 0.53862 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:147:iter_ortvalue (iter_ortvalue)
                    _next_iter                               --    5000    5000 -- 0.02982 0.28924 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:98:_next_iter (_next_iter)
                        <method 'randint'...mState' objects> --    5000    5000 -- 0.24967 0.24967 -- ~:0:<method 'randint' of 'numpy.random.mtrand.RandomState' objects> (<method 'randint' of 'numpy.random.mtrand.RandomState' objects>)
                        <built-in method builtins.len>       --    5000    5000 -- 0.00579 0.00975 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
                    numpy_to_ort_value                       --   10000   10000 -- 0.02139 0.11698 -- onnxruntime_helper.py:133:numpy_to_ort_value (numpy_to_ort_value) +++
                    <built-in method builtins.len>           --    5200    5200 -- 0.01509 0.03228 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
                forward                                      --    5000    5000 -- 0.90743 1.18365 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:669:forward (forward)
                    input_to_ort                             --    5000    5000 -- 0.16302 0.23270 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:592:input_to_ort (input_to_ort) +++
                    save_for_backward                        --    5000    5000 -- 0.03515 0.03515 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:644:save_for_backward (save_for_backward)
                    <method 'append' of 'list' objects>      --    5000    5000 -- 0.00836 0.00836 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
                backward                                     --    5000    5000 -- 1.26429 1.41726 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:747:backward (backward)
                    input_to_ort                             --    5000    5000 -- 0.10502 0.13915 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:592:input_to_ort (input_to_ort) +++
                    saved_tensors                            --    5000    5000 -- 0.00512 0.00512 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:656:saved_tensors (saved_tensors)
                    <method 'pop' of 'list' objects>         --    5000    5000 -- 0.00870 0.00870 -- ~:0:<method 'pop' of 'list' objects> (<method 'pop' of 'list' objects>)
                loss_gradient                                --    5000    5000 -- 1.32572 2.17794 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_loss.py:61:loss_gradient (loss_gradient)
                    clear_binding_inputs                     --    5000    5000 -- 0.02653 0.04868 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:145:clear_binding_inputs (clear_binding_inputs)
                        _cache_in_clear                      --    5000    5000 -- 0.01598 0.02216 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:134:_cache_in_clear (_cache_in_clear)
                            <built-in method builtins.id>    --    5000    5000 -- 0.00618 0.00618 -- ~:0:<built-in method builtins.id> (<built-in method builtins.id>) +++
                    _bind_input_ortvalue                     --   10000   10000 -- 0.05762 0.24627 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:177:_bind_input_ortvalue (_bind_input_ortvalue) +++
                    _call_iobinding                          --    5000    5000 -- 0.54837 0.54837 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_loss.py:58:_call_iobinding (_call_iobinding)
                    <built-in method builtins.hasattr>       --   10000   10000 -- 0.00889 0.00889 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
                penalty_loss                                 --    5000    5000 -- 0.24526 1.65803 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_penalty.py:168:penalty_loss (penalty_loss)
                    _bind_input_ortvalue                     --   35000   35000 -- 0.13330 0.42374 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:177:_bind_input_ortvalue (_bind_input_ortvalue) +++
                    _bind_output_ortvalue                    --    5000    5000 -- 0.03096 0.11300 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:221:_bind_output_ortvalue (_bind_output_ortvalue) +++
                    _call_iobinding                          --    5000    5000 -- 0.86443 0.86443 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_penalty.py:27:_call_iobinding (_call_iobinding) +++
                    <built-in method builtins.hasattr>       --   10000   10000 -- 0.00833 0.00833 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
                    <built-in method builtins.len>           --   10000   10000 -- 0.00328 0.00328 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
                update_weights                               --   30000   30000 -- 0.63787 2.55345 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_penalty.py:197:update_weights (update_weights)
                    _bind_input_ortvalue                     --   30000   30000 -- 0.11483 0.36200 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:177:_bind_input_ortvalue (_bind_input_ortvalue) +++
                    _bind_output_ortvalue                    --   30000   30000 -- 0.10540 0.32281 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:221:_bind_output_ortvalue (_bind_output_ortvalue) +++
                    _call_iobinding                          --   30000   30000 -- 1.19749 1.19749 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_penalty.py:27:_call_iobinding (_call_iobinding) +++
                    <built-in method builtins.hasattr>       --   60000   60000 -- 0.03328 0.03328 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
                update_weights                               --   30000   30000 -- 1.17967 5.29436 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:392:update_weights (update_weights)
                    _bind_input_ortvalue                     --  150000  150000 -- 0.51036 1.56770 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:177:_bind_input_ortvalue (_bind_input_ortvalue) +++
                    _bind_output_ortvalue                    --   60000   60000 -- 0.19516 0.59829 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:221:_bind_output_ortvalue (_bind_output_ortvalue) +++
                    _call_iobinding                          --   30000   30000 -- 1.32603 1.32603 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:33:_call_iobinding (_call_iobinding)
                    value                                    --   30000   30000 -- 0.02734 0.02734 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:186:value (value) +++
                    <built-in method on...tvalue_from_numpy> --   60000   60000 -- 0.56058 0.56058 -- ~:0:<built-in method onnxruntime.capi.onnxruntime_pybind11_state.ortvalue_from_numpy> (<built-in method onnxruntime.capi.onnxruntime_pybind11_state.ortvalue_from_numpy>) +++
                    <built-in method builtins.hasattr>       --   60000   60000 -- 0.03476 0.03476 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
                <method 'mean' of 'numpy.ndarray' objects>   --     100     100 -- 0.00055 0.01104 -- ~:0:<method 'mean' of 'numpy.ndarray' objects> (<method 'mean' of 'numpy.ndarray' objects>)
                    _mean                                    --     100     100 -- 0.00417 0.01049 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:164:_mean (_mean) +++
                <built-in method numpy.array>                --     100     100 -- 0.00624 0.00624 -- ~:0:<built-in method numpy.array> (<built-in method numpy.array>) +++
                <method 'append' of 'list' objects>          --    5000    5000 -- 0.00484 0.00484 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
                <built-in method builtins.len>               --   30100   30100 -- 0.03701 0.03701 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
            _create_training_session                         --       1       1 -- 0.00002 0.05218 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:659:_create_training_session (_create_training_session)
                __init__                                     --       1       1 -- 0.00013 0.05211 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:59:__init__ (__init__)
                    <listcomp>                               --       1       1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:96:<listcomp> (<listcomp>)
                    <listcomp>                               --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:99:<listcomp> (<listcomp>)
                    <listcomp>                               --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:117:<listcomp> (<listcomp>)
                    _init_next                               --       1       1 -- 0.00015 0.05192 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:169:_init_next (_init_next)
                        <listcomp>                           --       1       1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:179:<listcomp> (<listcomp>)
                        <listcomp>                           --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:181:<listcomp> (<listcomp>)
                        <listcomp>                           --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:184:<listcomp> (<listcomp>)
                        _create_onnx_graphs                  --       1       1 -- 0.00586 0.05174 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:299:_create_onnx_graphs (_create_onnx_graphs)
                            <listcomp>                       --       1       1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:418:<listcomp> (<listcomp>)
                            <listcomp>                       --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:419:<listcomp> (<listcomp>)
                            <listcomp>                       --       1       1 -- 0.00003 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:421:<listcomp> (<listcomp>)
                                _provider_nam..._device_type --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:269:_provider_name_to_device_type (_provider_name_to_device_type) +++
                            <listcomp>                       --       1       1 -- 0.00006 0.00008 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:426:<listcomp> (<listcomp>)
                                _provider_nam..._device_type --       7       7 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:269:_provider_name_to_device_type (_provider_name_to_device_type) +++
                            <listcomp>                       --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:432:<listcomp> (<listcomp>)
                                _provider_nam..._device_type --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:269:_provider_name_to_device_type (_provider_name_to_device_type) +++
                            <listcomp>                       --       1       1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:511:<listcomp> (<listcomp>)
                            <listcomp>                       --       1       1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:512:<listcomp> (<listcomp>)
                            load_model                       --       2       2 -- 0.00001 0.00082 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/__init__.py:116:load_model (load_model)
                                _load_bytes                  --       2       2 -- 0.00004 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/__init__.py:30:_load_bytes (_load_bytes)
                                    inner                    --       4       4 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/typing.py:256:inner (inner) +++
                                    cast                     --       4       4 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/typing.py:1326:cast (cast) +++
                                _get_file_path               --       2       2 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/__init__.py:50:_get_file_path (_get_file_path)
                                load_model_from_string       --       2       2 -- 0.00002 0.00075 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/__init__.py:160:load_model_from_string (load_model_from_string)
                                    _deserialize             --       2       2 -- 0.00003 0.00073 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/__init__.py:89:_deserialize (_deserialize)
                                        inner                --       2       2 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/typing.py:256:inner (inner) +++
                                        cast                 --       2       2 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/typing.py:1326:cast (cast) +++
                                        <method '...objects> --       2       2 -- 0.00069 0.00069 -- ~:0:<method 'ParseFromString' of 'google.protobuf.pyext._message.CMessage' objects> (<method 'ParseFromString' of 'google.protobuf.pyext._message.CMessage' objects>)
                            get_inputs                       --       1       1 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:117:get_inputs (get_inputs)
                            get_outputs                      --       1       1 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:121:get_outputs (get_outputs)
                            __init__                         --       2       2 -- 0.00007 0.04464 -- onnxruntime/capi/onnxruntime_inference_collection.py:308:__init__ (__init__)
                                get                          --       2       2 -- 0.00001 0.00007 -- /usr/local/lib/python3.9/_collections_abc.py:675:get (get)
                                    __getitem__              --       2       2 -- 0.00003 0.00006 -- /usr/local/lib/python3.9/os.py:674:__getitem__ (__getitem__)
                                        encode               --       2       2 -- 0.00002 0.00003 -- /usr/local/lib/python3.9/os.py:754:encode (encode)
                                __init__                     --       2       2 -- 0.00001 0.00001 -- onnxruntime/capi/onnxruntime_inference_collection.py:107:__init__ (__init__)
                                _create_inference_session    --       2       2 -- 0.04430 0.04447 -- onnxruntime/capi/onnxruntime_inference_collection.py:371:_create_inference_session (_create_inference_session)
                                    check_and_n...vider_args --       2       2 -- 0.00008 0.00015 -- onnxruntime/capi/onnxruntime_inference_collection.py:24:check_and_normalize_provider_args (check_and_normalize_provider_args)
                                        set_provider_options --       2       2 -- 0.00002 0.00002 -- onnxruntime/capi/onnxruntime_inference_collection.py:52:set_provider_options (set_provider_options)
                                            <dictcomp>       --       2       2 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:63:<dictcomp> (<dictcomp>)
                                        <listcomp>           --       2       2 -- 0.00001 0.00001 -- onnxruntime/capi/onnxruntime_inference_collection.py:76:<listcomp> (<listcomp>)
                                        <listcomp>           --       2       2 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:79:<listcomp> (<listcomp>)
                            <method 'Serial...sage' objects> --       1       1 -- 0.00019 0.00019 -- ~:0:<method 'SerializeToString' of 'google.protobuf.pyext._message.CMessage' objects> (<method 'SerializeToString' of 'google.protobuf.pyext._message.CMessage' objects>)
                            <built-in method builtins.len>   --      16      16 -- 0.00000 0.00000 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
                new_instance                                 --       1       1 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:217:new_instance (new_instance)
                    __init__                                 --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:536:__init__ (__init__)
                device_to_providers                          --       1       1 -- 0.00004 0.00004 -- onnxruntime_helper.py:149:device_to_providers (device_to_providers)
            value                                            --     100     100 -- 0.00009 0.00009 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:186:value (value) +++
            init_learning_rate                               --       1       1 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:348:init_learning_rate (init_learning_rate)
                init_learning_rate                           --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:205:init_learning_rate (init_learning_rate)
            update_learning_rate                             --     100     100 -- 0.00036 0.00303 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:358:update_learning_rate (update_learning_rate)
                update_learning_rate                         --     100     100 -- 0.00267 0.00267 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:226:update_learning_rate (update_learning_rate)
            proto_type_to_dtype                              --       6       6 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/utils/onnx_helper.py:61:proto_type_to_dtype (proto_type_to_dtype)
            <method 'randn' of 'num....RandomState' objects> --       6       6 -- 0.00055 0.00055 -- ~:0:<method 'randn' of 'numpy.random.mtrand.RandomState' objects> (<method 'randn' of 'numpy.random.mtrand.RandomState' objects>)
            <method 'append' of 'list' objects>              --     107     107 -- 0.00007 0.00007 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
            <built-in method builtins.len>                   --     108     108 -- 0.00005 0.00005 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
        fit                                                  --       1       1 -- 0.00002 9.96236 -- sklearn/neural_network/_multilayer_perceptron.py:723:fit (fit)
            _validate_params                                 --       1       1 -- 0.00001 0.00284 -- sklearn/base.py:562:_validate_params (_validate_params) +++
            _fit                                             --       1       1 -- 0.00010 9.95950 -- sklearn/neural_network/_multilayer_perceptron.py:417:_fit (_fit)
                any                                          --       1       1 -- 0.00001 0.00008 -- <__array_function__ internals>:177:any (any) +++
                _initialize                                  --       1       1 -- 0.00005 0.00049 -- sklearn/neural_network/_multilayer_perceptron.py:357:_initialize (_initialize)
                    is_classifier                            --       1       1 -- 0.00000 0.00000 -- sklearn/base.py:993:is_classifier (is_classifier)
                    _init_coef                               --       3       3 -- 0.00008 0.00044 -- sklearn/neural_network/_multilayer_perceptron.py:400:_init_coef (_init_coef)
                        <method 'uniform'...mState' objects> --       6       6 -- 0.00032 0.00032 -- ~:0:<method 'uniform' of 'numpy.random.mtrand.RandomState' objects> (<method 'uniform' of 'numpy.random.mtrand.RandomState' objects>)
                <listcomp>                                   --       1       1 -- 0.00001 0.00002 -- sklearn/neural_network/_multilayer_perceptron.py:455:<listcomp> (<listcomp>)
                <listcomp>                                   --       1       1 -- 0.00000 0.00001 -- sklearn/neural_network/_multilayer_perceptron.py:460:<listcomp> (<listcomp>)
                _fit_stochastic                              --       1       1 -- 0.22035 9.95414 -- sklearn/neural_network/_multilayer_perceptron.py:540:_fit_stochastic (_fit_stochastic)
                    clip                                     --       1       1 -- 0.00000 0.00016 -- <__array_function__ internals>:177:clip (clip) +++
                    _backprop                                --    5000    5000 -- 0.46445 6.91897 -- sklearn/neural_network/_multilayer_perceptron.py:278:_backprop (_backprop)
                        dot                                  --   15000   15000 -- 0.05139 0.21737 -- <__array_function__ internals>:177:dot (dot)
                            dot                              --   15000   15000 -- 0.00931 0.00931 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:740:dot (dot)
                            <built-in metho...rray_function> --   15000   15000 -- 0.15666 0.15666 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
                        inplace_relu_derivative              --   10000   10000 -- 0.31930 0.31930 -- sklearn/neural_network/_base.py:132:inplace_relu_derivative (inplace_relu_derivative)
                        binary_log_loss                      --    5000    5000 -- 0.53270 1.46457 -- sklearn/neural_network/_base.py:205:binary_log_loss (binary_log_loss)
                            clip                             --    5000    5000 -- 0.02568 0.66925 -- <__array_function__ internals>:177:clip (clip) +++
                            __new__                          --    5000    5000 -- 0.03237 0.03882 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:476:__new__ (__new__)
                                <method 'get'...ct' objects> --    5000    5000 -- 0.00646 0.00646 -- ~:0:<method 'get' of 'dict' objects> (<method 'get' of 'dict' objects>) +++
                            <method 'sum' o...rray' objects> --   10000   10000 -- 0.03206 0.22380 -- ~:0:<method 'sum' of 'numpy.ndarray' objects> (<method 'sum' of 'numpy.ndarray' objects>)
                                _sum                         --   10000   10000 -- 0.01598 0.19174 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:47:_sum (_sum)
                                    <method 're...' objects> --   10000   10000 -- 0.17575 0.17575 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>) +++
                        _forward_pass                        --    5000    5000 -- 0.36675 1.10911 -- sklearn/neural_network/_multilayer_perceptron.py:156:_forward_pass (_forward_pass)
                            inplace_logistic                 --    5000    5000 -- 0.04913 0.04913 -- sklearn/neural_network/_base.py:25:inplace_logistic (inplace_logistic)
                            inplace_relu                     --   10000   10000 -- 0.19027 0.19027 -- sklearn/neural_network/_base.py:47:inplace_relu (inplace_relu)
                            safe_sparse_dot                  --   15000   15000 -- 0.47135 0.50296 -- sklearn/utils/extmath.py:156:safe_sparse_dot (safe_sparse_dot) +++
                        _compute_loss_grad                   --   15000   15000 -- 0.86867 3.07753 -- sklearn/neural_network/_multilayer_perceptron.py:214:_compute_loss_grad (_compute_loss_grad)
                            mean                             --   15000   15000 -- 0.05807 1.67817 -- <__array_function__ internals>:177:mean (mean)
                                _mean_dispatcher             --   15000   15000 -- 0.01038 0.01038 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3340:_mean_dispatcher (_mean_dispatcher)
                                <built-in met...ay_function> --   15000   15000 -- 0.05026 1.60973 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
                            safe_sparse_dot                  --   15000   15000 -- 0.49746 0.53069 -- sklearn/utils/extmath.py:156:safe_sparse_dot (safe_sparse_dot) +++
                        safe_sparse_dot                      --   10000   10000 -- 0.21989 0.24088 -- sklearn/utils/extmath.py:156:safe_sparse_dot (safe_sparse_dot) +++
                        <method 'ravel' o...darray' objects> --   15000   15000 -- 0.02575 0.02575 -- ~:0:<method 'ravel' of 'numpy.ndarray' objects> (<method 'ravel' of 'numpy.ndarray' objects>) +++
                    _update_no_improvement_count             --     100     100 -- 0.00054 0.00054 -- sklearn/neural_network/_multilayer_perceptron.py:694:_update_no_improvement_count (_update_no_improvement_count)
                    update_params                            --    5000    5000 -- 0.26233 2.47465 -- sklearn/neural_network/_stochastic_optimizers.py:29:update_params (update_params)
                        <genexpr>                            --   35000   35000 -- 0.02375 0.02375 -- sklearn/neural_network/_stochastic_optimizers.py:43:<genexpr> (<genexpr>)
                        _get_updates                         --    5000    5000 -- 0.07749 2.18856 -- sklearn/neural_network/_stochastic_optimizers.py:169:_get_updates (_get_updates)
                            <listcomp>                       --    5000    5000 -- 1.07664 1.07664 -- sklearn/neural_network/_stochastic_optimizers.py:183:<listcomp> (<listcomp>)
                            <listcomp>                       --    5000    5000 -- 1.03443 1.03443 -- sklearn/neural_network/_stochastic_optimizers.py:190:<listcomp> (<listcomp>)
                    __init__                                 --       1       1 -- 0.00001 0.00028 -- sklearn/neural_network/_stochastic_optimizers.py:121:__init__ (__init__)
                        __init__                             --       1       1 -- 0.00000 0.00000 -- sklearn/neural_network/_stochastic_optimizers.py:25:__init__ (__init__)
                        <listcomp>                           --       1       1 -- 0.00002 0.00026 -- sklearn/neural_network/_stochastic_optimizers.py:136:<listcomp> (<listcomp>)
                            zeros_like                       --       6       6 -- 0.00002 0.00024 -- <__array_function__ internals>:177:zeros_like (zeros_like) +++
                    iteration_ends                           --     100     100 -- 0.00104 0.00104 -- sklearn/neural_network/_stochastic_optimizers.py:138:iteration_ends (iteration_ends)
                    _safe_indexing                           --    5000    5000 -- 0.04261 0.27960 -- sklearn/utils/__init__.py:285:_safe_indexing (_safe_indexing) +++
                    shuffle                                  --     100     100 -- 0.00094 0.03060 -- sklearn/utils/__init__.py:617:shuffle (shuffle)
                        resample                             --     100     100 -- 0.00240 0.02966 -- sklearn/utils/__init__.py:467:resample (resample)
                            <listcomp>                       --     100     100 -- 0.00033 0.00056 -- sklearn/utils/__init__.py:608:<listcomp> (<listcomp>)
                                isspmatrix                   --     100     100 -- 0.00011 0.00023 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
                            <listcomp>                       --     100     100 -- 0.00030 0.00467 -- sklearn/utils/__init__.py:609:<listcomp> (<listcomp>)
                                _safe_indexing               --     100     100 -- 0.00079 0.00436 -- sklearn/utils/__init__.py:285:_safe_indexing (_safe_indexing) +++
                            check_consistent_length          --     100     100 -- 0.00090 0.01360 -- sklearn/utils/validation.py:383:check_consistent_length (check_consistent_length) +++
                            check_random_state               --     100     100 -- 0.00055 0.00176 -- sklearn/utils/validation.py:1197:check_random_state (check_random_state) +++
                            <method 'shuffl...tate' objects> --     100     100 -- 0.00515 0.00515 -- ~:0:<method 'shuffle' of 'numpy.random.mtrand.RandomState' objects> (<method 'shuffle' of 'numpy.random.mtrand.RandomState' objects>)
                            <built-in method numpy.arange>   --     100     100 -- 0.00125 0.00125 -- ~:0:<built-in method numpy.arange> (<built-in method numpy.arange>) +++
                            <built-in metho...ltins.hasattr> --     100     100 -- 0.00015 0.00015 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
                            <built-in method builtins.len>   --     200     200 -- 0.00012 0.00012 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
                    gen_batches                              --    5100    5100 -- 0.02635 0.02691 -- sklearn/utils/__init__.py:728:gen_batches (gen_batches)
                        <built-in method ...tins.isinstance> --     100     100 -- 0.00023 0.00057 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
                    <method 'append' of 'list' objects>      --     100     100 -- 0.00010 0.00010 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
                    <built-in method _warnings.warn>         --       1       1 -- 0.00006 0.00093 -- ~:0:<built-in method _warnings.warn> (<built-in method _warnings.warn>)
                        _showwarnmsg                         --       1       1 -- 0.00001 0.00086 -- /usr/local/lib/python3.9/warnings.py:96:_showwarnmsg (_showwarnmsg)
                            _showwarning                     --       1       1 -- 0.00001 0.00085 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:557:_showwarning (_showwarning)
                                formatwarning                --       1       1 -- 0.00001 0.00005 -- /usr/local/lib/python3.9/warnings.py:15:formatwarning (formatwarning)
                                    _formatwarnmsg_impl      --       1       1 -- 0.00003 0.00004 -- /usr/local/lib/python3.9/warnings.py:35:_formatwarnmsg_impl (_formatwarnmsg_impl)
                                        getline              --       1       1 -- 0.00000 0.00001 -- /usr/local/lib/python3.9/linecache.py:26:getline (getline)
                                            getlines         --       1       1 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/linecache.py:36:getlines (getlines)
                                    __init__                 --       1       1 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/warnings.py:403:__init__ (__init__) +++
                                write                        --       1       1 -- 0.00002 0.00079 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:83:write (write) +++
                        __init__                             --       1       1 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:403:__init__ (__init__) +++
                _validate_input                              --       1       1 -- 0.00004 0.00440 -- sklearn/neural_network/_multilayer_perceptron.py:1081:_validate_input (_validate_input)
                    _validate_data                           --       1       1 -- 0.00002 0.00087 -- sklearn/base.py:453:_validate_data (_validate_data)
                        _check_n_features                    --       1       1 -- 0.00000 0.00002 -- sklearn/base.py:318:_check_n_features (_check_n_features)
                            _num_features                    --       1       1 -- 0.00001 0.00001 -- sklearn/utils/validation.py:267:_num_features (_num_features)
                        _check_feature_names                 --       1       1 -- 0.00000 0.00001 -- sklearn/base.py:364:_check_feature_names (_check_feature_names)
                            _get_feature_names               --       1       1 -- 0.00000 0.00000 -- sklearn/utils/validation.py:1860:_get_feature_names (_get_feature_names)
                        check_X_y                            --       1       1 -- 0.00001 0.00082 -- sklearn/utils/validation.py:979:check_X_y (check_X_y)
                            check_consistent_length          --       1       1 -- 0.00001 0.00017 -- sklearn/utils/validation.py:383:check_consistent_length (check_consistent_length) +++
                            check_array                      --       1       1 -- 0.00005 0.00046 -- sklearn/utils/validation.py:629:check_array (check_array) +++
                            _check_y                         --       1       1 -- 0.00000 0.00017 -- sklearn/utils/validation.py:1127:_check_y (_check_y)
                                check_array                  --       1       1 -- 0.00003 0.00017 -- sklearn/utils/validation.py:629:check_array (check_array) +++
                    __init__                                 --       1       1 -- 0.00000 0.00000 -- sklearn/preprocessing/_label.py:265:__init__ (__init__)
                    fit                                      --       1       1 -- 0.00002 0.00122 -- sklearn/preprocessing/_label.py:271:fit (fit)
                        isspmatrix                           --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
                        _validate_params                     --       1       1 -- 0.00001 0.00039 -- sklearn/base.py:562:_validate_params (_validate_params) +++
                        unique_labels                        --       1       1 -- 0.00005 0.00051 -- sklearn/utils/multiclass.py:44:unique_labels (unique_labels)
                            asarray                          --       1       1 -- 0.00000 0.00001 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
                            get_namespace                    --       1       1 -- 0.00000 0.00001 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
                            <genexpr>                        --       2       2 -- 0.00000 0.00030 -- sklearn/utils/multiclass.py:81:<genexpr> (<genexpr>)
                                type_of_target               --       1       1 -- 0.00004 0.00029 -- sklearn/utils/multiclass.py:210:type_of_target (type_of_target) +++
                            <genexpr>                        --       2       2 -- 0.00001 0.00010 -- sklearn/utils/multiclass.py:114:<genexpr> (<genexpr>)
                                _unique_multiclass           --       1       1 -- 0.00001 0.00010 -- sklearn/utils/multiclass.py:23:_unique_multiclass (_unique_multiclass)
                                    asarray                  --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
                                    unique_values            --       1       1 -- 0.00000 0.00008 -- sklearn/utils/_array_api.py:83:unique_values (unique_values) +++
                                    get_namespace            --       1       1 -- 0.00000 0.00001 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
                            <genexpr>                        --       3       3 -- 0.00000 0.00001 -- sklearn/utils/multiclass.py:116:<genexpr> (<genexpr>)
                        type_of_target                       --       1       1 -- 0.00005 0.00028 -- sklearn/utils/multiclass.py:210:type_of_target (type_of_target) +++
                        _num_samples                         --       1       1 -- 0.00001 0.00003 -- sklearn/utils/validation.py:320:_num_samples (_num_samples) +++
                    wrapped                                  --       1       1 -- 0.00001 0.00225 -- sklearn/utils/_set_output.py:140:wrapped (wrapped)
                        transform                            --       1       1 -- 0.00002 0.00222 -- sklearn/preprocessing/_label.py:336:transform (transform)
                            label_binarize                   --       1       1 -- 0.00011 0.00192 -- sklearn/preprocessing/_label.py:425:label_binarize (label_binarize)
                                in1d                         --       1       1 -- 0.00000 0.00047 -- <__array_function__ internals>:177:in1d (in1d)
                                    _in1d_dispatcher         --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:519:_in1d_dispatcher (_in1d_dispatcher)
                                    <built-in m..._function> --       1       1 -- 0.00001 0.00046 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
                                hstack                       --       1       1 -- 0.00000 0.00008 -- <__array_function__ internals>:177:hstack (hstack)
                                    _vhstack_dispatcher      --       1       1 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/shape_base.py:218:_vhstack_dispatcher (_vhstack_dispatcher)
                                        _arrays_f...spatcher --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/shape_base.py:207:_arrays_for_stack_dispatcher (_arrays_for_stack_dispatcher)
                                sort                         --       1       1 -- 0.00000 0.00003 -- <__array_function__ internals>:177:sort (sort)
                                    _sort_dispatcher         --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:874:_sort_dispatcher (_sort_dispatcher)
                                searchsorted                 --       1       1 -- 0.00000 0.00004 -- <__array_function__ internals>:177:searchsorted (searchsorted)
                                    _searchsorted_dispatcher --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:1341:_searchsorted_dispatcher (_searchsorted_dispatcher)
                                any                          --       1       1 -- 0.00001 0.00005 -- <__array_function__ internals>:177:any (any) +++
                                cumsum                       --       1       1 -- 0.00000 0.00005 -- <__array_function__ internals>:177:cumsum (cumsum)
                                    _cumsum_dispatcher       --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2519:_cumsum_dispatcher (_cumsum_dispatcher)
                                empty_like                   --       1       1 -- 0.00000 0.00001 -- <__array_function__ internals>:177:empty_like (empty_like) +++
                                isspmatrix                   --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
                                __init__                     --       1       1 -- 0.00004 0.00057 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_compressed.py:26:__init__ (__init__)
                                    isspmatrix               --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
                                    check_format             --       1       1 -- 0.00007 0.00020 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_compressed.py:136:check_format (check_format)
                                        get_shape            --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:119:get_shape (get_shape) +++
                                        prune                --       1       1 -- 0.00002 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_compressed.py:1168:prune (prune)
                                            _prune_array     --       2       2 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/_lib/_util.py:143:_prune_array (_prune_array)
                                            get_shape        --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:119:get_shape (get_shape) +++
                                            nnz              --       4       4 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:291:nnz (nnz)
                                                getnnz       --       4       4 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_compressed.py:108:getnnz (getnnz)
                                            _swap            --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_csr.py:231:_swap (_swap) +++
                                        _swap                --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_csr.py:231:_swap (_swap) +++
                                        to_native            --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:93:to_native (to_native)
                                        get_index_dtype      --       1       1 -- 0.00003 0.00008 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:147:get_index_dtype (get_index_dtype) +++
                                    __init__                 --       1       1 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_data.py:20:__init__ (__init__)
                                        __init__             --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:105:__init__ (__init__)
                                    get_index_dtype          --       1       1 -- 0.00008 0.00024 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:147:get_index_dtype (get_index_dtype) +++
                                    isshape                  --       1       1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:238:isshape (isshape)
                                    check_shape              --       1       1 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:295:check_shape (check_shape)
                                        <genexpr>            --       3       3 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:308:<genexpr> (<genexpr>)
                                toarray                      --       1       1 -- 0.00002 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_compressed.py:1048:toarray (toarray)
                                    get_shape                --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:119:get_shape (get_shape) +++
                                    _process_toarray_args    --       1       1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1287:_process_toarray_args (_process_toarray_args)
                                        get_shape            --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:119:get_shape (get_shape) +++
                                        _get_dtype           --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_data.py:23:_get_dtype (_get_dtype)
                                    tocsr                    --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_csr.py:164:tocsr (tocsr)
                                    _swap                    --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_csr.py:231:_swap (_swap) +++
                                type_of_target               --       1       1 -- 0.00004 0.00023 -- sklearn/utils/multiclass.py:210:type_of_target (type_of_target) +++
                                check_array                  --       1       1 -- 0.00003 0.00015 -- sklearn/utils/validation.py:629:check_array (check_array) +++
                                column_or_1d                 --       1       1 -- 0.00002 0.00007 -- sklearn/utils/validation.py:1150:column_or_1d (column_or_1d)
                                    reshape                  --       1       1 -- 0.00000 0.00003 -- <__array_function__ internals>:177:reshape (reshape)
                                        _reshape_dispatcher  --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:193:_reshape_dispatcher (_reshape_dispatcher)
                                    __getattr__              --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_array_api.py:63:__getattr__ (__getattr__) +++
                                    asarray                  --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
                                    get_namespace            --       1       1 -- 0.00000 0.00001 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
                                    _asarray_with_order      --       1       1 -- 0.00001 0.00001 -- sklearn/utils/_array_api.py:168:_asarray_with_order (_asarray_with_order) +++
                            type_of_target                   --       1       1 -- 0.00004 0.00024 -- sklearn/utils/multiclass.py:210:type_of_target (type_of_target) +++
                            check_is_fitted                  --       1       1 -- 0.00001 0.00004 -- sklearn/utils/validation.py:1312:check_is_fitted (check_is_fitted)
                                isclass                      --       1       1 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:73:isclass (isclass)
                                <listcomp>                   --       1       1 -- 0.00002 0.00002 -- sklearn/utils/validation.py:1375:<listcomp> (<listcomp>)
                        _wrap_data_with_container            --       1       1 -- 0.00000 0.00002 -- sklearn/utils/_set_output.py:99:_wrap_data_with_container (_wrap_data_with_container)
                            _get_output_config               --       1       1 -- 0.00001 0.00002 -- sklearn/utils/_set_output.py:65:_get_output_config (_get_output_config)
                                get_config                   --       1       1 -- 0.00000 0.00001 -- sklearn/_config.py:30:get_config (get_config) +++
                check_random_state                           --       1       1 -- 0.00000 0.00000 -- sklearn/utils/validation.py:1197:check_random_state (check_random_state) +++
                <built-in method builtins.all>               --       1       1 -- 0.00001 0.00023 -- ~:0:<built-in method builtins.all> (<built-in method builtins.all>) +++
        <built-in method builtins.print>                     --       3       3 -- 0.00003 0.00187 -- ~:0:<built-in method builtins.print> (<built-in method builtins.print>)
            write                                            --       6       6 -- 0.00008 0.00184 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:83:write (write) +++
_bio_cache                                                   --  320000  320000 -- 0.78987 0.97760 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:156:_bio_cache (_bio_cache)
    <built-in method builtins.id>                            --  320000  320000 -- 0.18772 0.18772 -- ~:0:<built-in method builtins.id> (<built-in method builtins.id>) +++
_bio_ptr                                                     --  320000  320000 -- 1.18869 1.18869 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:173:_bio_ptr (_bio_ptr)
_bind_input_ortvalue                                         --  225000  225000 -- 0.81610 2.59971 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:177:_bind_input_ortvalue (_bind_input_ortvalue)
    _bio_cache                                               --  225000  225000 -- 0.56011 0.69507 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:156:_bio_cache (_bio_cache) +++
    _bio_do_bind_in                                          --   15619   15619 -- 0.15143 0.15143 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:169:_bio_do_bind_in (_bio_do_bind_in)
    _bio_ptr                                                 --  225000  225000 -- 0.84805 0.84805 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:173:_bio_ptr (_bio_ptr) +++
    <built-in method builtins.isinstance>                    --  225000  225000 -- 0.08907 0.08907 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
_bind_output_ortvalue                                        --   95000   95000 -- 0.33152 1.03410 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:221:_bind_output_ortvalue (_bind_output_ortvalue)
    _bio_cache                                               --   95000   95000 -- 0.22977 0.28253 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:156:_bio_cache (_bio_cache) +++
    _bio_ptr                                                 --   95000   95000 -- 0.34065 0.34065 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:173:_bio_ptr (_bio_ptr) +++
    _bio_do_bind_out                                         --    5018    5018 -- 0.04311 0.04311 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/_base_onnx_function.py:217:_bio_do_bind_out (_bio_do_bind_out)
    <built-in method builtins.isinstance>                    --   95000   95000 -- 0.03629 0.03629 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
_get_att_state                                               --     205     205 -- 0.00018 0.00018 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:147:_get_att_state (_get_att_state)
get_full_state                                               --     101     301 -- 0.00129 0.00252 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:155:get_full_state (get_full_state)
    _get_att_state                                           --     201     201 -- 0.00018 0.00018 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:147:_get_att_state (_get_att_state) +++
    <listcomp>                                               --     100     100 -- 0.00063 0.00183 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:163:<listcomp> (<listcomp>)
        get_full_state                                       --     200     200 -- 0.00065 0.00120 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers_partial.py:155:get_full_state (get_full_state) +++
    <built-in method builtins.getattr>                       --     201     201 -- 0.00009 0.00009 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
    <built-in method builtins.hasattr>                       --     201     201 -- 0.00011 0.00011 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
    <built-in method builtins.isinstance>                    --     301     301 -- 0.00022 0.00022 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
_provider_name_to_device_type                                --       9       9 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:269:_provider_name_to_device_type (_provider_name_to_device_type)
get_initializer                                              --      14      14 -- 0.00027 0.00397 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:278:get_initializer (get_initializer)
    to_array                                                 --      12      12 -- 0.00029 0.00371 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/numpy_helper.py:35:to_array (to_array)
        uses_external_data                                   --      12      12 -- 0.00002 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/external_data_helper.py:273:uses_external_data (uses_external_data)
            <method 'HasField' of '...age.CMessage' objects> --      12      12 -- 0.00003 0.00003 -- ~:0:<method 'HasField' of 'google.protobuf.pyext._message.CMessage' objects> (<method 'HasField' of 'google.protobuf.pyext._message.CMessage' objects>) +++
        tensor_dtype_to_np_dtype                             --      24      24 -- 0.00003 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/helper.py:1137:tensor_dtype_to_np_dtype (tensor_dtype_to_np_dtype)
        tensor_dtype_to_storage_tensor_dtype                 --      12      12 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/helper.py:1147:tensor_dtype_to_storage_tensor_dtype (tensor_dtype_to_storage_tensor_dtype)
        tensor_dtype_to_field                                --      12      12 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/onnx/helper.py:1167:tensor_dtype_to_field (tensor_dtype_to_field)
        <method 'HasField' of 'go...ssage.CMessage' objects> --      24      24 -- 0.00005 0.00005 -- ~:0:<method 'HasField' of 'google.protobuf.pyext._message.CMessage' objects> (<method 'HasField' of 'google.protobuf.pyext._message.CMessage' objects>) +++
        <method 'astype' of 'numpy.ndarray' objects>         --      12      12 -- 0.00007 0.00007 -- ~:0:<method 'astype' of 'numpy.ndarray' objects> (<method 'astype' of 'numpy.ndarray' objects>) +++
        <method 'reshape' of 'numpy.ndarray' objects>        --      12      12 -- 0.00014 0.00014 -- ~:0:<method 'reshape' of 'numpy.ndarray' objects> (<method 'reshape' of 'numpy.ndarray' objects>) +++
        <built-in method numpy.asarray>                      --      12      12 -- 0.00305 0.00305 -- ~:0:<built-in method numpy.asarray> (<built-in method numpy.asarray>) +++
        <built-in method builtins.getattr>                   --      12      12 -- 0.00002 0.00002 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
input_to_ort                                                 --   10000   10000 -- 0.26804 0.37185 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:592:input_to_ort (input_to_ort)
    <built-in method builtins.all>                           --   10000   10000 -- 0.03458 0.06797 -- ~:0:<built-in method builtins.all> (<built-in method builtins.all>) +++
    <built-in method builtins.isinstance>                    --   10000   10000 -- 0.02951 0.02951 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <built-in method builtins.len>                           --   10000   10000 -- 0.00632 0.00632 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
_call_iobinding                                              --   35000   35000 -- 2.06192 2.06192 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_penalty.py:27:_call_iobinding (_call_iobinding)
value                                                        --   30100   30100 -- 0.02743 0.02743 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:186:value (value)
_mean                                                        --   15100   15100 -- 0.55600 1.46617 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:164:_mean (_mean)
    __enter__                                                --   15000   15000 -- 0.03774 0.11744 -- /usr/local/lib/python3.9/contextlib.py:112:__enter__ (__enter__)
        <built-in method builtins.next>                      --   15000   15000 -- 0.01419 0.07969 -- ~:0:<built-in method builtins.next> (<built-in method builtins.next>) +++
    __exit__                                                 --   15000   15000 -- 0.07241 0.15449 -- /usr/local/lib/python3.9/contextlib.py:121:__exit__ (__exit__)
        <built-in method builtins.next>                      --   15000   15000 -- 0.02472 0.08208 -- ~:0:<built-in method builtins.next> (<built-in method builtins.next>) +++
    helper                                                   --   15000   15000 -- 0.05069 0.14379 -- /usr/local/lib/python3.9/contextlib.py:242:helper (helper)
        __init__                                             --   15000   15000 -- 0.07996 0.09310 -- /usr/local/lib/python3.9/contextlib.py:86:__init__ (__init__)
            <built-in method builtins.getattr>               --   15000   15000 -- 0.01314 0.01314 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
    _count_reduce_items                                      --   15100   15100 -- 0.16774 0.19911 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:67:_count_reduce_items (_count_reduce_items)
        <built-in method numpy.co...th.normalize_axis_index> --   15200   15200 -- 0.01716 0.01716 -- ~:0:<built-in method numpy.core._multiarray_umath.normalize_axis_index> (<built-in method numpy.core._multiarray_umath.normalize_axis_index>)
        <built-in method builtins.isinstance>                --   15000   15000 -- 0.01421 0.01421 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <built-in method numpy.asanyarray>                       --   15100   15100 -- 0.00815 0.00815 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>) +++
    <method 'reduce' of 'numpy.ufunc' objects>               --   15100   15100 -- 0.25930 0.25930 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>) +++
    <built-in method builtins.hasattr>                       --     100     100 -- 0.00018 0.00018 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
    <built-in method builtins.isinstance>                    --   15100   15100 -- 0.00820 0.00820 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <built-in method builtins.issubclass>                    --   30200   30200 -- 0.01953 0.01953 -- ~:0:<built-in method builtins.issubclass> (<built-in method builtins.issubclass>) +++
seterr                                                       --       2       2 -- 0.00002 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:33:seterr (seterr)
    geterr                                                   --       2       2 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:132:geterr (geterr)
_wrapfunc                                                    --    5004    5004 -- 0.01848 0.54455 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:51:_wrapfunc (_wrapfunc)
    _wrapit                                                  --       1       1 -- 0.00002 0.00014 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:38:_wrapit (_wrapit)
        <method 'clip' of 'numpy.ndarray' objects>           --       1       1 -- 0.00001 0.00012 -- ~:0:<method 'clip' of 'numpy.ndarray' objects> (<method 'clip' of 'numpy.ndarray' objects>) +++
    <method 'clip' of 'numpy.ndarray' objects>               --    5000    5000 -- 0.02142 0.51866 -- ~:0:<method 'clip' of 'numpy.ndarray' objects> (<method 'clip' of 'numpy.ndarray' objects>) +++
    <built-in method builtins.getattr>                       --    5004    5004 -- 0.00720 0.00720 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
_wrapreduction                                               --       7       7 -- 0.00006 0.00030 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction)
    <dictcomp>                                               --       7       7 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:70:<dictcomp> (<dictcomp>)
    <method 'reduce' of 'numpy.ufunc' objects>               --       7       7 -- 0.00022 0.00022 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>) +++
__init__                                                     --       7       7 -- 0.00007 0.00007 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:668:__init__ (__init__)
min                                                          --       3       3 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:679:min (min)
max                                                          --       4       4 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:692:max (max)
get_shape                                                    --       4       4 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:119:get_shape (get_shape)
isspmatrix                                                   --   45222   45222 -- 0.05155 0.09359 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix)
    <built-in method builtins.isinstance>                    --   45222   45222 -- 0.04205 0.04205 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
_swap                                                        --       5       5 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_csr.py:231:_swap (_swap)
get_index_dtype                                              --       2       2 -- 0.00011 0.00032 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_sputils.py:147:get_index_dtype (get_index_dtype)
    can_cast                                                 --       4       4 -- 0.00001 0.00004 -- <__array_function__ internals>:177:can_cast (can_cast)
        can_cast                                             --       4       4 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:502:can_cast (can_cast)
    __init__                                                 --       4       4 -- 0.00004 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:668:__init__ (__init__) +++
    min                                                      --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:679:min (min) +++
    max                                                      --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:692:max (max) +++
    issubdtype                                               --       2       2 -- 0.00001 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numerictypes.py:356:issubdtype (issubdtype)
        issubclass_                                          --       4       4 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numerictypes.py:282:issubclass_ (issubclass_)
write                                                        --       7       7 -- 0.00010 0.00263 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:83:write (write)
    verbose                                                  --       6       6 -- 0.00004 0.00251 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:128:verbose (verbose)
        log                                                  --       6       6 -- 0.00006 0.00247 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:121:log (log)
            log                                              --       6       6 -- 0.00007 0.00241 -- /usr/local/lib/python3.9/logging/__init__.py:1825:log (log)
                log                                          --       6       6 -- 0.00006 0.00226 -- /usr/local/lib/python3.9/logging/__init__.py:1485:log (log)
                    _log                                     --       6       6 -- 0.00004 0.00219 -- /usr/local/lib/python3.9/logging/__init__.py:1553:_log (_log)
                        findCaller                           --       6       6 -- 0.00008 0.00014 -- /usr/local/lib/python3.9/logging/__init__.py:1502:findCaller (findCaller)
                            <lambda>                         --       6       6 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:156:<lambda> (<lambda>)
                            normcase                         --      12      12 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/posixpath.py:52:normcase (normcase)
                                <built-in met...osix.fspath> --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method posix.fspath> (<built-in method posix.fspath>) +++
                            <built-in metho...ltins.hasattr> --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
                        makeRecord                           --       6       6 -- 0.00005 0.00064 -- /usr/local/lib/python3.9/logging/__init__.py:1538:makeRecord (makeRecord)
                            __init__                         --       6       6 -- 0.00025 0.00059 -- /usr/local/lib/python3.9/logging/__init__.py:278:__init__ (__init__)
                                getLevelName                 --       6       6 -- 0.00004 0.00005 -- /usr/local/lib/python3.9/logging/__init__.py:119:getLevelName (getLevelName)
                                    <method 'ge...' objects> --      12      12 -- 0.00001 0.00001 -- ~:0:<method 'get' of 'dict' objects> (<method 'get' of 'dict' objects>) +++
                                current_process              --       6       6 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/multiprocessing/process.py:37:current_process (current_process)
                                name                         --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/multiprocessing/process.py:189:name (name)
                                splitext                     --       6       6 -- 0.00003 0.00008 -- /usr/local/lib/python3.9/posixpath.py:117:splitext (splitext)
                                    _splitext                --       6       6 -- 0.00003 0.00004 -- /usr/local/lib/python3.9/genericpath.py:121:_splitext (_splitext)
                                        <method '...objects> --      12      12 -- 0.00001 0.00001 -- ~:0:<method 'rfind' of 'str' objects> (<method 'rfind' of 'str' objects>) +++
                                basename                     --       6       6 -- 0.00004 0.00007 -- /usr/local/lib/python3.9/posixpath.py:140:basename (basename)
                                    _get_sep                 --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/posixpath.py:41:_get_sep (_get_sep)
                                name                         --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/threading.py:1053:name (name)
                                current_thread               --       6       6 -- 0.00001 0.00002 -- /usr/local/lib/python3.9/threading.py:1318:current_thread (current_thread)
                        handle                               --       6       6 -- 0.00002 0.00137 -- /usr/local/lib/python3.9/logging/__init__.py:1579:handle (handle)
                            filter                           --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/logging/__init__.py:787:filter (filter) +++
                            callHandlers                     --       6       6 -- 0.00006 0.00133 -- /usr/local/lib/python3.9/logging/__init__.py:1633:callHandlers (callHandlers)
                                handle                       --      12      12 -- 0.00006 0.00127 -- /usr/local/lib/python3.9/logging/__init__.py:935:handle (handle)
                                    filter                   --      12      12 -- 0.00005 0.00014 -- /usr/local/lib/python3.9/logging/__init__.py:787:filter (filter) +++
                                    acquire                  --      12      12 -- 0.00003 0.00005 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire) +++
                                    release                  --      12      12 -- 0.00001 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release) +++
                                    emit                     --       6       6 -- 0.00003 0.00031 -- /usr/local/lib/python3.9/logging/__init__.py:1067:emit (emit) +++
                                    emit                     --       6       6 -- 0.00005 0.00070 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:151:emit (emit)
                                        acquire              --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire) +++
                                        release              --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release) +++
                                        emit                 --       6       6 -- 0.00004 0.00063 -- /usr/local/lib/python3.9/logging/__init__.py:1067:emit (emit) +++
                    isEnabledFor                             --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/logging/__init__.py:1677:isEnabledFor (isEnabledFor) +++
                isEnabledFor                                 --       6       6 -- 0.00002 0.00003 -- /usr/local/lib/python3.9/logging/__init__.py:1834:isEnabledFor (isEnabledFor)
                    isEnabledFor                             --       6       6 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/logging/__init__.py:1677:isEnabledFor (isEnabledFor) +++
                process                                      --       6       6 -- 0.00004 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:131:process (process)
numpy_to_ort_value                                           --   10026   10026 -- 0.02144 0.11730 -- onnxruntime_helper.py:133:numpy_to_ort_value (numpy_to_ort_value)
    <built-in method onnxruntim...state.ortvalue_from_numpy> --   10026   10026 -- 0.09586 0.09586 -- ~:0:<built-in method onnxruntime.capi.onnxruntime_pybind11_state.ortvalue_from_numpy> (<built-in method onnxruntime.capi.onnxruntime_pybind11_state.ortvalue_from_numpy>) +++
get_config                                                   --      21      21 -- 0.00005 0.00012 -- sklearn/_config.py:30:get_config (get_config)
    _get_threadlocal_config                                  --      21      21 -- 0.00002 0.00005 -- sklearn/_config.py:22:_get_threadlocal_config (_get_threadlocal_config)
        <built-in method builtins.hasattr>                   --      21      21 -- 0.00002 0.00002 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
    <method 'copy' of 'dict' objects>                        --      21      21 -- 0.00002 0.00002 -- ~:0:<method 'copy' of 'dict' objects> (<method 'copy' of 'dict' objects>)
_validate_params                                             --       2       2 -- 0.00003 0.00322 -- sklearn/base.py:562:_validate_params (_validate_params)
    get_params                                               --       2       2 -- 0.00004 0.00108 -- sklearn/base.py:153:get_params (get_params)
        _get_param_names                                     --       2       2 -- 0.00009 0.00103 -- sklearn/base.py:122:_get_param_names (_get_param_names)
            kind                                             --      26      26 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:2577:kind (kind) +++
            parameters                                       --       2       2 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2882:parameters (parameters) +++
            signature                                        --       2       2 -- 0.00001 0.00082 -- /usr/local/lib/python3.9/inspect.py:3128:signature (signature) +++
            <listcomp>                                       --       2       2 -- 0.00005 0.00007 -- sklearn/base.py:136:<listcomp> (<listcomp>)
                name                                         --      28      28 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:2565:name (name) +++
                kind                                         --      26      26 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:2577:kind (kind) +++
            <listcomp>                                       --       2       2 -- 0.00002 0.00003 -- sklearn/base.py:151:<listcomp> (<listcomp>)
                name                                         --      26      26 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:2565:name (name) +++
        <built-in method builtins.getattr>                   --      26      26 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>) +++
    validate_parameter_constraints                           --       2       2 -- 0.00017 0.00212 -- sklearn/utils/_param_validation.py:28:validate_parameter_constraints (validate_parameter_constraints) +++
_safe_indexing                                               --    5100    5100 -- 0.04340 0.28396 -- sklearn/utils/__init__.py:285:_safe_indexing (_safe_indexing)
    _array_indexing                                          --    5100    5100 -- 0.12440 0.13391 -- sklearn/utils/__init__.py:179:_array_indexing (_array_indexing)
        isspmatrix                                           --    5100    5100 -- 0.00405 0.00751 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
        <built-in method builtins.isinstance>                --    5100    5100 -- 0.00201 0.00201 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    _determine_key_type                                      --    5100    5100 -- 0.07509 0.09663 -- sklearn/utils/__init__.py:215:_determine_key_type (_determine_key_type)
        <method 'keys' of 'dict' objects>                    --    5100    5100 -- 0.00464 0.00464 -- ~:0:<method 'keys' of 'dict' objects> (<method 'keys' of 'dict' objects>)
        <built-in method builtins.hasattr>                   --    5100    5100 -- 0.00300 0.00300 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
        <built-in method builtins.isinstance>                --   15300   15300 -- 0.01390 0.01390 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <built-in method builtins.hasattr>                       --   10200   10200 -- 0.01002 0.01002 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
__getattr__                                                  --       7       7 -- 0.00001 0.00001 -- sklearn/utils/_array_api.py:63:__getattr__ (__getattr__)
asarray                                                      --      18      18 -- 0.00003 0.00005 -- sklearn/utils/_array_api.py:70:asarray (asarray)
    <built-in method numpy.asarray>                          --      18      18 -- 0.00002 0.00002 -- ~:0:<built-in method numpy.asarray> (<built-in method numpy.asarray>) +++
unique_values                                                --       5       5 -- 0.00002 0.00044 -- sklearn/utils/_array_api.py:83:unique_values (unique_values)
    unique                                                   --       5       5 -- 0.00002 0.00043 -- <__array_function__ internals>:177:unique (unique) +++
get_namespace                                                --      17      17 -- 0.00004 0.00014 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace)
    get_config                                               --      17      17 -- 0.00004 0.00010 -- sklearn/_config.py:30:get_config (get_config) +++
_asarray_with_order                                          --       4       4 -- 0.00004 0.00006 -- sklearn/utils/_array_api.py:168:_asarray_with_order (_asarray_with_order)
    __getattr__                                              --       4       4 -- 0.00000 0.00001 -- sklearn/utils/_array_api.py:63:__getattr__ (__getattr__) +++
    asarray                                                  --       4       4 -- 0.00001 0.00001 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
validate_parameter_constraints                               --       2       4 -- 0.00022 0.00212 -- sklearn/utils/_param_validation.py:28:validate_parameter_constraints (validate_parameter_constraints)
    <listcomp>                                               --      26      34 -- 0.00006 0.00137 -- sklearn/utils/_param_validation.py:74:<listcomp> (<listcomp>)
        make_constraint                                      --      29      45 -- 0.00016 0.00132 -- sklearn/utils/_param_validation.py:103:make_constraint (make_constraint)
            __init__                                         --       5       5 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:226:__init__ (__init__) +++
            __init__                                         --      12      12 -- 0.00004 0.00006 -- sklearn/utils/_param_validation.py:258:__init__ (__init__) +++
            __init__                                         --       1       1 -- 0.00002 0.00050 -- sklearn/utils/_param_validation.py:505:__init__ (__init__)
                wrapper                                      --       1       1 -- 0.00003 0.00047 -- sklearn/utils/_param_validation.py:169:wrapper (wrapper) +++
                __init__                                     --       2       2 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:226:__init__ (__init__) +++
                __init__                                     --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:258:__init__ (__init__) +++
            __init__                                         --       5       5 -- 0.00006 0.00011 -- sklearn/utils/_param_validation.py:530:__init__ (__init__)
                __init__                                     --       5       5 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:226:__init__ (__init__) +++
                __init__                                     --      15      15 -- 0.00004 0.00005 -- sklearn/utils/_param_validation.py:258:__init__ (__init__) +++
            __init__                                         --       1       1 -- 0.00002 0.00044 -- sklearn/utils/_param_validation.py:563:__init__ (__init__)
                wrapper                                      --       1       1 -- 0.00003 0.00041 -- sklearn/utils/_param_validation.py:169:wrapper (wrapper) +++
                __init__                                     --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:226:__init__ (__init__) +++
                __init__                                     --       2       2 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:258:__init__ (__init__) +++
            <built-in method builtins.isinstance>            --     206     206 -- 0.00012 0.00019 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    is_satisfied_by                                          --       9       9 -- 0.00001 0.00006 -- sklearn/utils/_param_validation.py:262:is_satisfied_by (is_satisfied_by) +++
    is_satisfied_by                                          --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:272:is_satisfied_by (is_satisfied_by) +++
    is_satisfied_by                                          --       6       6 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:328:is_satisfied_by (is_satisfied_by)
    is_satisfied_by                                          --      13      13 -- 0.00003 0.00039 -- sklearn/utils/_param_validation.py:450:is_satisfied_by (is_satisfied_by) +++
    is_satisfied_by                                          --       1       1 -- 0.00000 0.00003 -- sklearn/utils/_param_validation.py:471:is_satisfied_by (is_satisfied_by)
        _is_arraylike_not_scalar                             --       1       1 -- 0.00001 0.00002 -- sklearn/utils/validation.py:262:_is_arraylike_not_scalar (_is_arraylike_not_scalar)
            isscalar                                         --       1       1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numeric.py:1878:isscalar (isscalar)
            _is_arraylike                                    --       1       1 -- 0.00000 0.00000 -- sklearn/utils/validation.py:257:_is_arraylike (_is_arraylike)
    is_satisfied_by                                          --       1       1 -- 0.00001 0.00002 -- sklearn/utils/_param_validation.py:513:is_satisfied_by (is_satisfied_by)
        <genexpr>                                            --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:514:<genexpr> (<genexpr>) +++
    is_satisfied_by                                          --       5       5 -- 0.00004 0.00009 -- sklearn/utils/_param_validation.py:538:is_satisfied_by (is_satisfied_by)
        <genexpr>                                            --       5       5 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:547:<genexpr> (<genexpr>) +++
    is_satisfied_by                                          --       1       1 -- 0.00001 0.00003 -- sklearn/utils/_param_validation.py:571:is_satisfied_by (is_satisfied_by)
        <genexpr>                                            --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:572:<genexpr> (<genexpr>) +++
wrapper                                                      --       2       2 -- 0.00006 0.00088 -- sklearn/utils/_param_validation.py:169:wrapper (wrapper)
    apply_defaults                                           --       2       2 -- 0.00003 0.00004 -- /usr/local/lib/python3.9/inspect.py:2718:apply_defaults (apply_defaults)
        parameters                                           --       2       2 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2882:parameters (parameters) +++
    parameters                                               --       2       2 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2882:parameters (parameters) +++
    bind                                                     --       2       2 -- 0.00001 0.00013 -- /usr/local/lib/python3.9/inspect.py:3057:bind (bind)
        _bind                                                --       2       2 -- 0.00009 0.00012 -- /usr/local/lib/python3.9/inspect.py:2926:_bind (_bind)
            name                                             --      20      20 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:2565:name (name) +++
            kind                                             --      26      26 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/inspect.py:2577:kind (kind) +++
            __init__                                         --       2       2 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2657:__init__ (__init__)
            parameters                                       --       2       2 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2882:parameters (parameters) +++
            <built-in method builtins.next>                  --      20      20 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.next> (<built-in method builtins.next>) +++
    signature                                                --       2       2 -- 0.00000 0.00033 -- /usr/local/lib/python3.9/inspect.py:3128:signature (signature) +++
    validate_parameter_constraints                           --       2       2 -- 0.00005 0.00025 -- sklearn/utils/_param_validation.py:28:validate_parameter_constraints (validate_parameter_constraints) +++
    <listcomp>                                               --       2       2 -- 0.00002 0.00002 -- sklearn/utils/_param_validation.py:179:<listcomp> (<listcomp>)
        kind                                                 --      10      10 -- 0.00000 0.00000 -- /usr/local/lib/python3.9/inspect.py:2577:kind (kind) +++
    <dictcomp>                                               --       2       2 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:185:<dictcomp> (<dictcomp>)
    __init__                                                 --       2       2 -- 0.00001 0.00004 -- sklearn/utils/_param_validation.py:395:__init__ (__init__)
        __init__                                             --       2       2 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:226:__init__ (__init__) +++
        _check_params                                        --       2       2 -- 0.00001 0.00003 -- sklearn/utils/_param_validation.py:412:_check_params (_check_params)
__init__                                                     --      45      45 -- 0.00005 0.00005 -- sklearn/utils/_param_validation.py:226:__init__ (__init__)
__init__                                                     --      30      30 -- 0.00009 0.00012 -- sklearn/utils/_param_validation.py:258:__init__ (__init__)
    __init__                                                 --      30      30 -- 0.00003 0.00003 -- sklearn/utils/_param_validation.py:226:__init__ (__init__) +++
is_satisfied_by                                              --      15      15 -- 0.00001 0.00007 -- sklearn/utils/_param_validation.py:262:is_satisfied_by (is_satisfied_by)
    <built-in method builtins.isinstance>                    --      15      15 -- 0.00002 0.00005 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
is_satisfied_by                                              --       2       2 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:272:is_satisfied_by (is_satisfied_by)
is_satisfied_by                                              --      15      15 -- 0.00003 0.00042 -- sklearn/utils/_param_validation.py:450:is_satisfied_by (is_satisfied_by)
    __contains__                                             --      14      14 -- 0.00024 0.00026 -- sklearn/utils/_param_validation.py:434:__contains__ (__contains__)
        <built-in method _operator.lt>                       --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method _operator.lt> (<built-in method _operator.lt>)
        <built-in method _operator.ge>                       --      13      13 -- 0.00001 0.00001 -- ~:0:<built-in method _operator.ge> (<built-in method _operator.ge>)
    <built-in method builtins.isinstance>                    --      15      15 -- 0.00003 0.00012 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<genexpr>                                                    --       4       4 -- 0.00001 0.00001 -- sklearn/utils/_param_validation.py:514:<genexpr> (<genexpr>)
    is_satisfied_by                                          --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:262:is_satisfied_by (is_satisfied_by) +++
    is_satisfied_by                                          --       1       1 -- 0.00000 0.00000 -- sklearn/utils/_param_validation.py:272:is_satisfied_by (is_satisfied_by) +++
    is_satisfied_by                                          --       1       1 -- 0.00000 0.00001 -- sklearn/utils/_param_validation.py:450:is_satisfied_by (is_satisfied_by) +++
<genexpr>                                                    --      10      10 -- 0.00001 0.00002 -- sklearn/utils/_param_validation.py:547:<genexpr> (<genexpr>)
    is_satisfied_by                                          --       5       5 -- 0.00000 0.00001 -- sklearn/utils/_param_validation.py:262:is_satisfied_by (is_satisfied_by) +++
<genexpr>                                                    --       2       2 -- 0.00000 0.00003 -- sklearn/utils/_param_validation.py:572:<genexpr> (<genexpr>)
    is_satisfied_by                                          --       1       1 -- 0.00000 0.00002 -- sklearn/utils/_param_validation.py:450:is_satisfied_by (is_satisfied_by) +++
safe_sparse_dot                                              --   40000   40000 -- 1.18870 1.27453 -- sklearn/utils/extmath.py:156:safe_sparse_dot (safe_sparse_dot)
    isspmatrix                                               --   40000   40000 -- 0.04736 0.08583 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
type_of_target                                               --       4       4 -- 0.00016 0.00104 -- sklearn/utils/multiclass.py:210:type_of_target (type_of_target)
    simplefilter                                             --       4       4 -- 0.00001 0.00006 -- /usr/local/lib/python3.9/warnings.py:165:simplefilter (simplefilter) +++
    __init__                                                 --       4       4 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:437:__init__ (__init__) +++
    __enter__                                                --       4       4 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/warnings.py:458:__enter__ (__enter__) +++
    __exit__                                                 --       4       4 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/warnings.py:477:__exit__ (__exit__) +++
    isspmatrix                                               --      16      16 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
    asarray                                                  --       4       4 -- 0.00001 0.00001 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
    unique_values                                            --       4       4 -- 0.00001 0.00037 -- sklearn/utils/_array_api.py:83:unique_values (unique_values) +++
    get_namespace                                            --       4       4 -- 0.00001 0.00003 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
    is_multilabel                                            --       4       4 -- 0.00007 0.00030 -- sklearn/utils/multiclass.py:126:is_multilabel (is_multilabel)
        simplefilter                                         --       4       4 -- 0.00002 0.00013 -- /usr/local/lib/python3.9/warnings.py:165:simplefilter (simplefilter) +++
        __init__                                             --       4       4 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:437:__init__ (__init__) +++
        __enter__                                            --       4       4 -- 0.00002 0.00003 -- /usr/local/lib/python3.9/warnings.py:458:__enter__ (__enter__) +++
        __exit__                                             --       4       4 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/warnings.py:477:__exit__ (__exit__) +++
        asarray                                              --       4       4 -- 0.00001 0.00001 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
        get_namespace                                        --       4       4 -- 0.00001 0.00003 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
_num_samples                                                 --     106     106 -- 0.00219 0.00389 -- sklearn/utils/validation.py:320:_num_samples (_num_samples)
    <built-in method builtins.hasattr>                       --     318     318 -- 0.00037 0.00037 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
    <built-in method builtins.isinstance>                    --     106     106 -- 0.00023 0.00128 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <built-in method builtins.len>                           --     106     106 -- 0.00005 0.00005 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
check_consistent_length                                      --     101     101 -- 0.00091 0.01378 -- sklearn/utils/validation.py:383:check_consistent_length (check_consistent_length)
    unique                                                   --     101     101 -- 0.00050 0.00875 -- <__array_function__ internals>:177:unique (unique) +++
    <listcomp>                                               --     101     101 -- 0.00030 0.00407 -- sklearn/utils/validation.py:394:<listcomp> (<listcomp>)
        _num_samples                                         --     102     102 -- 0.00213 0.00378 -- sklearn/utils/validation.py:320:_num_samples (_num_samples) +++
    <built-in method builtins.len>                           --     101     101 -- 0.00005 0.00005 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
check_array                                                  --       3       3 -- 0.00012 0.00078 -- sklearn/utils/validation.py:629:check_array (check_array)
    simplefilter                                             --       3       3 -- 0.00001 0.00007 -- /usr/local/lib/python3.9/warnings.py:165:simplefilter (simplefilter) +++
    __init__                                                 --       3       3 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:437:__init__ (__init__) +++
    __enter__                                                --       3       3 -- 0.00003 0.00003 -- /usr/local/lib/python3.9/warnings.py:458:__enter__ (__enter__) +++
    __exit__                                                 --       3       3 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/warnings.py:477:__exit__ (__exit__) +++
    isspmatrix                                               --       3       3 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1301:isspmatrix (isspmatrix) +++
    get_namespace                                            --       3       3 -- 0.00001 0.00004 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
    _asarray_with_order                                      --       3       3 -- 0.00003 0.00005 -- sklearn/utils/_array_api.py:168:_asarray_with_order (_asarray_with_order) +++
    _assert_all_finite                                       --       3       3 -- 0.00009 0.00032 -- sklearn/utils/validation.py:96:_assert_all_finite (_assert_all_finite)
        sum                                                  --       1       1 -- 0.00000 0.00012 -- <__array_function__ internals>:177:sum (sum)
            _sum_dispatcher                                  --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2183:_sum_dispatcher (_sum_dispatcher)
            <built-in method numpy....lement_array_function> --       1       1 -- 0.00000 0.00011 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
        __init__                                             --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:426:__init__ (__init__)
        __enter__                                            --       1       1 -- 0.00001 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:430:__enter__ (__enter__)
            seterr                                           --       1       1 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:33:seterr (seterr) +++
        __exit__                                             --       1       1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:435:__exit__ (__exit__)
            seterr                                           --       1       1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:33:seterr (seterr) +++
        get_config                                           --       3       3 -- 0.00001 0.00001 -- sklearn/_config.py:30:get_config (get_config) +++
        __getattr__                                          --       2       2 -- 0.00000 0.00000 -- sklearn/utils/_array_api.py:63:__getattr__ (__getattr__) +++
        asarray                                              --       3       3 -- 0.00000 0.00001 -- sklearn/utils/_array_api.py:70:asarray (asarray) +++
        get_namespace                                        --       3       3 -- 0.00001 0.00002 -- sklearn/utils/_array_api.py:90:get_namespace (get_namespace) +++
    _num_samples                                             --       3       3 -- 0.00004 0.00009 -- sklearn/utils/validation.py:320:_num_samples (_num_samples) +++
    _ensure_no_complex_data                                  --       3       3 -- 0.00001 0.00001 -- sklearn/utils/validation.py:571:_ensure_no_complex_data (_ensure_no_complex_data)
    _check_estimator_name                                    --       3       3 -- 0.00000 0.00001 -- sklearn/utils/validation.py:581:_check_estimator_name (_check_estimator_name)
    <built-in method builtins.hasattr>                       --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
check_random_state                                           --     101     101 -- 0.00056 0.00176 -- sklearn/utils/validation.py:1197:check_random_state (check_random_state)
    <built-in method builtins.isinstance>                    --     200     200 -- 0.00045 0.00121 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<built-in method builtins.len>                               --   60985   60985 -- 0.06785 0.08899 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>)
    __len__                                                  --   10200   10200 -- 0.02114 0.02114 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:94:__len__ (__len__)
<method 'astype' of 'numpy.ndarray' objects>                 --      26      26 -- 0.00018 0.00018 -- ~:0:<method 'astype' of 'numpy.ndarray' objects> (<method 'astype' of 'numpy.ndarray' objects>)
<method 'append' of 'list' objects>                          --   10331   10331 -- 0.01342 0.01342 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>)
<built-in method builtins.hasattr>                           --  156164  156164 -- 0.09923 0.09923 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>)
<built-in method builtins.isinstance>                        --  476882  476882 -- 0.25178 0.25423 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>)
    __instancecheck__                                        --     383     383 -- 0.00039 0.00245 -- /usr/local/lib/python3.9/abc.py:96:__instancecheck__ (__instancecheck__)
        <built-in method _abc._abc_instancecheck>            --     383     383 -- 0.00147 0.00205 -- ~:0:<built-in method _abc._abc_instancecheck> (<built-in method _abc._abc_instancecheck>)
            __subclasscheck__                                --     127     127 -- 0.00015 0.00058 -- /usr/local/lib/python3.9/abc.py:100:__subclasscheck__ (__subclasscheck__)
                <built-in method _abc._abc_subclasscheck>    --     127     127 -- 0.00043 0.00043 -- ~:0:<built-in method _abc._abc_subclasscheck> (<built-in method _abc._abc_subclasscheck>)
<built-in method numpy.array>                                --     104     104 -- 0.00627 0.00627 -- ~:0:<built-in method numpy.array> (<built-in method numpy.array>)
<built-in method builtins.all>                               --   10007   10007 -- 0.03460 0.06822 -- ~:0:<built-in method builtins.all> (<built-in method builtins.all>)
    <lambda>                                                 --   40000   40000 -- 0.02468 0.03339 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/ortgradient.py:612:<lambda> (<lambda>)
        <built-in method builtins.isinstance>                --   40000   40000 -- 0.00871 0.00871 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
    <genexpr>                                                --       3       3 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:630:<genexpr> (<genexpr>)
    <genexpr>                                                --       7       7 -- 0.00009 0.00022 -- sklearn/neural_network/_multilayer_perceptron.py:485:<genexpr> (<genexpr>)
        <method 'all' of 'numpy.ndarray' objects>            --       6       6 -- 0.00002 0.00013 -- ~:0:<method 'all' of 'numpy.ndarray' objects> (<method 'all' of 'numpy.ndarray' objects>)
            _all                                             --       6       6 -- 0.00001 0.00011 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:61:_all (_all)
                <method 'reduce' of 'numpy.ufunc' objects>   --       6       6 -- 0.00010 0.00010 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>) +++
<built-in method numpy.zeros>                                --      21      21 -- 0.00008 0.00008 -- ~:0:<built-in method numpy.zeros> (<built-in method numpy.zeros>)
<built-in method builtins.getattr>                           --   20298   20298 -- 0.02051 0.02051 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>)
<method 'reshape' of 'numpy.ndarray' objects>                --      17      17 -- 0.00016 0.00016 -- ~:0:<method 'reshape' of 'numpy.ndarray' objects> (<method 'reshape' of 'numpy.ndarray' objects>)
<built-in method numpy.empty>                                --     112     112 -- 0.00049 0.00049 -- ~:0:<built-in method numpy.empty> (<built-in method numpy.empty>)
<built-in method numpy.arange>                               --     101     101 -- 0.00126 0.00126 -- ~:0:<built-in method numpy.arange> (<built-in method numpy.arange>)
<built-in method numpy.core._...th.implement_array_function> --   35127   45150 -- 0.32272 2.41587 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>)
    reshape                                                  --       1       1 -- 0.00000 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:198:reshape (reshape)
        _wrapfunc                                            --       1       1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:51:_wrapfunc (_wrapfunc) +++
    sort                                                     --       1       1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:878:sort (sort)
    searchsorted                                             --       1       1 -- 0.00000 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:1345:searchsorted (searchsorted)
        _wrapfunc                                            --       1       1 -- 0.00001 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:51:_wrapfunc (_wrapfunc) +++
    clip                                                     --    5001    5001 -- 0.03138 0.57585 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2111:clip (clip)
        _wrapfunc                                            --    5001    5001 -- 0.01846 0.54447 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:51:_wrapfunc (_wrapfunc) +++
    sum                                                      --       1       1 -- 0.00001 0.00011 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2188:sum (sum)
        _wrapreduction                                       --       1       1 -- 0.00001 0.00010 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction) +++
    any                                                      --       2       2 -- 0.00001 0.00009 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2333:any (any)
        _wrapreduction                                       --       2       2 -- 0.00002 0.00008 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction) +++
    cumsum                                                   --       1       1 -- 0.00000 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2523:cumsum (cumsum)
        _wrapfunc                                            --       1       1 -- 0.00001 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:51:_wrapfunc (_wrapfunc) +++
    amax                                                     --       2       2 -- 0.00001 0.00006 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2703:amax (amax)
        _wrapreduction                                       --       2       2 -- 0.00001 0.00005 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction) +++
    amin                                                     --       2       2 -- 0.00001 0.00008 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2829:amin (amin)
        _wrapreduction                                       --       2       2 -- 0.00002 0.00007 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction) +++
    ndim                                                     --   10002   10002 -- 0.01164 0.01164 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3152:ndim (ndim)
    mean                                                     --   15000   15000 -- 0.10378 1.55946 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3345:mean (mean)
        _mean                                                --   15000   15000 -- 0.55183 1.45569 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:164:_mean (_mean) +++
    zeros_like                                               --       7       7 -- 0.00006 0.00025 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numeric.py:77:zeros_like (zeros_like)
        empty_like                                           --       7       7 -- 0.00003 0.00009 -- <__array_function__ internals>:177:empty_like (empty_like) +++
        copyto                                               --       7       7 -- 0.00003 0.00008 -- <__array_function__ internals>:177:copyto (copyto)
            copyto                                           --       7       7 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:1079:copyto (copyto)
    atleast_1d                                               --       1       1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/shape_base.py:23:atleast_1d (atleast_1d)
    hstack                                                   --       1       1 -- 0.00001 0.00006 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/shape_base.py:299:hstack (hstack)
        atleast_1d                                           --       1       1 -- 0.00000 0.00003 -- <__array_function__ internals>:177:atleast_1d (atleast_1d)
            _atleast_1d_dispatcher                           --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/shape_base.py:19:_atleast_1d_dispatcher (_atleast_1d_dispatcher)
        concatenate                                          --       1       1 -- 0.00001 0.00002 -- <__array_function__ internals>:177:concatenate (concatenate)
            concatenate                                      --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:152:concatenate (concatenate)
    unique                                                   --     106     106 -- 0.00084 0.00796 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:138:unique (unique)
        _unpack_tuple                                        --     106     106 -- 0.00020 0.00026 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:125:_unpack_tuple (_unpack_tuple)
            <built-in method builtins.len>                   --     106     106 -- 0.00006 0.00006 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
        _unique1d                                            --     106     106 -- 0.00459 0.00604 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:323:_unique1d (_unique1d)
            <method 'flatten' of 'numpy.ndarray' objects>    --     106     106 -- 0.00070 0.00070 -- ~:0:<method 'flatten' of 'numpy.ndarray' objects> (<method 'flatten' of 'numpy.ndarray' objects>)
            <method 'sort' of 'numpy.ndarray' objects>       --     106     106 -- 0.00023 0.00023 -- ~:0:<method 'sort' of 'numpy.ndarray' objects> (<method 'sort' of 'numpy.ndarray' objects>) +++
            <built-in method numpy.asanyarray>               --     106     106 -- 0.00004 0.00004 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>) +++
            <built-in method numpy.empty>                    --     106     106 -- 0.00048 0.00048 -- ~:0:<built-in method numpy.empty> (<built-in method numpy.empty>) +++
        <built-in method numpy.asanyarray>                   --     106     106 -- 0.00082 0.00082 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>) +++
    in1d                                                     --       1       1 -- 0.00018 0.00046 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:524:in1d (in1d)
        zeros_like                                           --       1       1 -- 0.00001 0.00006 -- <__array_function__ internals>:177:zeros_like (zeros_like) +++
        amax                                                 --       2       2 -- 0.00001 0.00007 -- <__array_function__ internals>:177:amax (amax)
            _amax_dispatcher                                 --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2698:_amax_dispatcher (_amax_dispatcher)
        amin                                                 --       2       2 -- 0.00001 0.00009 -- <__array_function__ internals>:177:amin (amin)
            _amin_dispatcher                                 --       2       2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2824:_amin_dispatcher (_amin_dispatcher)
        __init__                                             --       3       3 -- 0.00003 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:668:__init__ (__init__) +++
        min                                                  --       1       1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:679:min (min) +++
        max                                                  --       2       2 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/getlimits.py:692:max (max) +++
<method 'items' of 'dict' objects>                           --      15      15 -- 0.00001 0.00001 -- ~:0:<method 'items' of 'dict' objects> (<method 'items' of 'dict' objects>)
<built-in method onnxruntime....1_state.ortvalue_from_numpy> --   70026   70026 -- 0.65643 0.65643 -- ~:0:<built-in method onnxruntime.capi.onnxruntime_pybind11_state.ortvalue_from_numpy> (<built-in method onnxruntime.capi.onnxruntime_pybind11_state.ortvalue_from_numpy>)
<built-in method builtins.id>                                --  325005  325005 -- 0.19391 0.19391 -- ~:0:<built-in method builtins.id> (<built-in method builtins.id>)
<method 'ravel' of 'numpy.ndarray' objects>                  --   15002   15002 -- 0.02575 0.02575 -- ~:0:<method 'ravel' of 'numpy.ndarray' objects> (<method 'ravel' of 'numpy.ndarray' objects>)
<method 'get' of 'dict' objects>                             --    5100    5100 -- 0.00650 0.00650 -- ~:0:<method 'get' of 'dict' objects> (<method 'get' of 'dict' objects>)
<method 'HasField' of 'google...._message.CMessage' objects> --      36      36 -- 0.00007 0.00007 -- ~:0:<method 'HasField' of 'google.protobuf.pyext._message.CMessage' objects> (<method 'HasField' of 'google.protobuf.pyext._message.CMessage' objects>)
<built-in method numpy.asarray>                              --      46      46 -- 0.00310 0.00310 -- ~:0:<built-in method numpy.asarray> (<built-in method numpy.asarray>)
<built-in method numpy.asanyarray>                           --   15315   15315 -- 0.00901 0.00901 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>)
<method 'reduce' of 'numpy.ufunc' objects>                   --   25117   25117 -- 0.43544 0.43544 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>)
<built-in method builtins.issubclass>                        --   30206   30206 -- 0.01953 0.01953 -- ~:0:<built-in method builtins.issubclass> (<built-in method builtins.issubclass>)
<method 'sort' of 'numpy.ndarray' objects>                   --     107     107 -- 0.00024 0.00024 -- ~:0:<method 'sort' of 'numpy.ndarray' objects> (<method 'sort' of 'numpy.ndarray' objects>)
<built-in method builtins.next>                              --   30020   30020 -- 0.03892 0.16178 -- ~:0:<built-in method builtins.next> (<built-in method builtins.next>)
    _no_nep50_warning                                        --   30000   30000 -- 0.05932 0.12286 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_ufunc_config.py:452:_no_nep50_warning (_no_nep50_warning)
        <method 'set' of 'ContextVar' objects>               --   15000   15000 -- 0.03507 0.03507 -- ~:0:<method 'set' of 'ContextVar' objects> (<method 'set' of 'ContextVar' objects>)
        <method 'reset' of 'ContextVar' objects>             --   15000   15000 -- 0.02847 0.02847 -- ~:0:<method 'reset' of 'ContextVar' objects> (<method 'reset' of 'ContextVar' objects>)
<built-in method _warnings._filters_mutated>                 --      33      33 -- 0.00001 0.00001 -- ~:0:<built-in method _warnings._filters_mutated> (<built-in method _warnings._filters_mutated>)
<method 'clip' of 'numpy.ndarray' objects>                   --    5001    5001 -- 0.02142 0.51878 -- ~:0:<method 'clip' of 'numpy.ndarray' objects> (<method 'clip' of 'numpy.ndarray' objects>)
    _clip                                                    --    5001    5001 -- 0.06062 0.49736 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:127:_clip (_clip)
        _clip_dep_is_scalar_nan                              --   10002   10002 -- 0.21161 0.31138 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:93:_clip_dep_is_scalar_nan (_clip_dep_is_scalar_nan)
            ndim                                             --   10002   10002 -- 0.03100 0.09976 -- <__array_function__ internals>:177:ndim (ndim)
                _ndim_dispatcher                             --   10002   10002 -- 0.00609 0.00609 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3148:_ndim_dispatcher (_ndim_dispatcher)
                <built-in method nump...ment_array_function> --   10002   10002 -- 0.05103 0.06267 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
        _clip_dep_is_byte_swapped                            --   10002   10002 -- 0.01921 0.02559 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:103:_clip_dep_is_byte_swapped (_clip_dep_is_byte_swapped)
            <built-in method builtins.isinstance>            --   10002   10002 -- 0.00638 0.00638 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
        _clip_dep_invoke_with_casting                        --    5001    5001 -- 0.09978 0.09978 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:108:_clip_dep_invoke_with_casting (_clip_dep_invoke_with_casting)
<built-in method posix.fspath>                               --      24      24 -- 0.00001 0.00001 -- ~:0:<built-in method posix.fspath> (<built-in method posix.fspath>)
<built-in method _thread.get_ident>                          --      12      12 -- 0.00001 0.00001 -- ~:0:<built-in method _thread.get_ident> (<built-in method _thread.get_ident>)
<method 'rfind' of 'str' objects>                            --      18      18 -- 0.00003 0.00003 -- ~:0:<method 'rfind' of 'str' objects> (<method 'rfind' of 'str' objects>)

if GPU is available#

if get_device().upper() == 'GPU':

    train_session = OrtGradientForwardBackwardOptimizer(
        onx, device='cuda', warm_start=False,
        max_iter=max_iter, batch_size=batch_size,
        learning_loss=NegLogLearningLoss(),
        learning_rate=LearningRateSGDNesterov(
            1e-7, nesterov=False, momentum=0.9),
        learning_penalty=ElasticLearningPenalty(l1=0, l2=1e-4))

    benches.append(benchmark(X_train, y_train, nn,
                   train_session, name='NN-GPU'))

A simple linear layer#

nn = MLPClassifier(hidden_layer_sizes=tuple(), max_iter=max_iter,
                   solver='sgd', learning_rate_init=1e-1, alpha=1e-4,
                   n_iter_no_change=max_iter * 3, batch_size=batch_size,
                   nesterovs_momentum=True, momentum=0.9,
                   learning_rate="invscaling", activation='identity')


with warnings.catch_warnings():
    warnings.simplefilter('ignore')
    nn.fit(X_train, y_train)

onx = to_onnx(nn, X_train[:1].astype(numpy.float32), target_opset=15,
              options={'zipmap': False, 'nocl': True})
onx = select_model_inputs_outputs(
    onx, outputs=["add_result"], infer_shapes=True)
onx = onnx_rename_weights(onx)

try:
    print(onnx_simple_text_plot(onx))
except RuntimeError as e:
    print("You should upgrade mlprodict.")
    print(e)

train_session = OrtGradientForwardBackwardOptimizer(
    onx, device='cpu', warm_start=False,
    max_iter=max_iter, batch_size=batch_size,
    learning_loss=NegLogLearningLoss(),
    learning_rate=LearningRateSGDNesterov(
        1e-5, nesterov=True, momentum=0.9),
    learning_penalty=ElasticLearningPenalty(l1=0, l2=1e-4))


benches.append(benchmark(X_train, y_train, nn, train_session, name='LR-CPU'))

if get_device().upper() == 'GPU':

    train_session = OrtGradientForwardBackwardOptimizer(
        onx, device='cuda', warm_start=False,
        max_iter=max_iter, batch_size=batch_size,
        learning_loss=NegLogLearningLoss(),
        learning_rate=LearningRateSGDNesterov(
            1e-5, nesterov=False, momentum=0.9),
        learning_penalty=ElasticLearningPenalty(l1=0, l2=1e-4))

    benches.append(benchmark(X_train, y_train, nn,
                   train_session, name='LR-GPU'))
opset: domain='' version=13
opset: domain='ai.onnx.ml' version=1
input: name='X' type=dtype('float32') shape=[None, 100]
init: name='I0_coefficient' type=dtype('float32') shape=(100, 1)
init: name='I1_intercepts' type=dtype('float32') shape=(1, 1) -- array([0.11812365], dtype=float32)
Cast(X, to=1) -> r0
  MatMul(r0, I0_coefficient) -> r1
    Add(r1, I1_intercepts) -> add_result
output: name='add_result' type=dtype('float32') shape=['unk__0', 1]
[benchmark] LR-CPU
somewhere/workspace/onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:679: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
  warnings.warn(
[benchmark] skl=100 iterations - 3.581063647987321 seconds
[benchmark] ort=100 iteration - 7.235444816062227 seconds

Graphs#

Dataframe first.

df = DataFrame(benches).set_index('name')
df
skl ort iter_skl iter_ort losses_skl losses_ort
name
NN-CPU 8.830882 13.875313 100 100 [0.45664845795519804, 0.32200212867664463, 0.2... [4.9747844, 4.772807, 4.6129127, 4.469839, 5.0...
LR-CPU 3.581064 7.235445 100 100 [0.4444687701347008, 0.24818000527383044, 0.23... [1.9282205, 1.7486064, 1.7160951, 1.6049799, 1...


text output

print(df)
             skl  ...                                         losses_ort
name              ...
NN-CPU  8.830882  ...  [4.9747844, 4.772807, 4.6129127, 4.469839, 5.0...
LR-CPU  3.581064  ...  [1.9282205, 1.7486064, 1.7160951, 1.6049799, 1...

[2 rows x 6 columns]

Graphs.

fig, ax = plt.subplots(1, 2, figsize=(10, 4))
df[['skl', 'ort']].plot.bar(title="Processing time", ax=ax[0])
ax[0].tick_params(axis='x', rotation=30)
for bench in benches:
    ax[1].plot(bench['losses_skl'][1:], label='skl-' + bench['name'])
    ax[1].plot(bench['losses_ort'][1:], label='ort-' + bench['name'])
ax[1].set_yscale('log')
ax[1].set_title("Losses")
ax[1].legend()
Processing time, Losses
<matplotlib.legend.Legend object at 0x7faf8793b280>

The gradient update are not exactly the same. It should be improved for a fair comprison.

fig.savefig("plot_orttraining_benchmark_fwbw_cls.png")
# plt.show()

Total running time of the script: ( 1 minutes 14.521 seconds)

Gallery generated by Sphinx-Gallery