Note
Click here to download the full example code
Benchmark, comparison scikit-learn - onnxruntime-training¶
The benchmark compares the processing time between scikit-learn and onnxruntime-training on a linear regression and a neural network. It uses the model trained in Train a scikit-learn neural network with onnxruntime-training on GPU.
First comparison: neural network¶
import warnings
from pprint import pprint
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_regression
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
from mlprodict.onnx_conv import to_onnx
from onnxcustom.utils.orttraining_helper import (
add_loss_output, get_train_initializer)
from onnxcustom.training.optimizers import OrtGradientOptimizer
X, y = make_regression(1000, n_features=100, bias=2)
X = X.astype(numpy.float32)
y = y.astype(numpy.float32)
X_train, X_test, y_train, y_test = train_test_split(X, y)
Benchmark function.
def benchmark(skl_model, train_session, name, verbose=True):
"""
:param skl_model: model from scikit-learn
:param train_session: instance of OrtGradientOptimizer
:param name: experiment name
:param verbose: to debug
"""
print("[benchmark] %s" % name)
begin = time.perf_counter()
skl_model.fit(X, y)
duration_skl = time.perf_counter() - begin
length_skl = len(skl_model.loss_curve_)
print("[benchmark] skl=%r iterations - %r seconds" % (
length_skl, duration_skl))
begin = time.perf_counter()
train_session.fit(X, y)
duration_ort = time.perf_counter() - begin
length_ort = len(train_session.train_losses_)
print("[benchmark] ort=%r iterations - %r seconds" % (
length_ort, duration_ort))
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 = MLPRegressor(hidden_layer_sizes=(50, 10), max_iter=max_iter,
solver='sgd', learning_rate_init=5e-4, alpha=0,
n_iter_no_change=max_iter * 3, batch_size=batch_size,
nesterovs_momentum=False, momentum=0,
learning_rate='invscaling')
with warnings.catch_warnings():
warnings.simplefilter('ignore')
nn.fit(X_train, y_train)
Conversion to ONNX and trainer initialization
onx = to_onnx(nn, X_train[:1].astype(numpy.float32), target_opset=15)
onx_train = add_loss_output(onx)
weights = get_train_initializer(onx)
pprint(list((k, v[0].shape) for k, v in weights.items()))
train_session = OrtGradientOptimizer(
onx_train, list(weights), device='cpu', learning_rate=1e-5,
warm_start=False, max_iter=max_iter, batch_size=batch_size)
benches = [benchmark(nn, train_session, name='NN-CPU')]
Out:
[('coefficient', (100, 50)),
('intercepts', (1, 50)),
('coefficient1', (50, 10)),
('intercepts1', (1, 10)),
('coefficient2', (10, 1)),
('intercepts2', (1, 1))]
[benchmark] NN-CPU
/var/lib/jenkins/workspace/onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:692: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
warnings.warn(
[benchmark] skl=100 iterations - 13.335429698228836 seconds
[benchmark] ort=100 iterations - 4.608651174232364 seconds
Profiling¶
def clean_name(text):
pos = text.find('onnxruntime')
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(nn, train_session, name='NN-CPU'))[0]
root, nodes = profile2graph(ps, clean_text=clean_name)
text = root.to_text()
print(text)
Out:
[benchmark] NN-CPU
/var/lib/jenkins/workspace/onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:692: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
warnings.warn(
[benchmark] skl=100 iterations - 15.15220940951258 seconds
[benchmark] ort=100 iterations - 4.6757753398269415 seconds
filter -- 18 18 -- 0.00007 0.00018 -- /usr/local/lib/python3.9/logging/__init__.py:787:filter (filter)
filter -- 12 12 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:358:filter (filter)
filter -- 6 6 -- 0.00005 0.00007 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:491: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.00007 0.00012 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire)
<method 'acquire' of '_thread.RLock' objects> -- 30 30 -- 0.00005 0.00005 -- ~:0:<method 'acquire' of '_thread.RLock' objects> (<method 'acquire' of '_thread.RLock' objects>)
release -- 30 30 -- 0.00007 0.00008 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release)
<method 'release' of '_thread.RLock' objects> -- 30 30 -- 0.00002 0.00002 -- ~:0:<method 'release' of '_thread.RLock' objects> (<method 'release' of '_thread.RLock' objects>)
emit -- 12 12 -- 0.00009 0.00114 -- /usr/local/lib/python3.9/logging/__init__.py:1067:emit (emit)
format -- 12 12 -- 0.00004 0.00059 -- /usr/local/lib/python3.9/logging/__init__.py:912:format (format)
format -- 12 12 -- 0.00010 0.00055 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:536:format (format)
format -- 12 12 -- 0.00008 0.00040 -- /usr/local/lib/python3.9/logging/__init__.py:646:format (format)
usesTime -- 12 12 -- 0.00003 0.00009 -- /usr/local/lib/python3.9/logging/__init__.py:624:usesTime (usesTime)
usesTime -- 12 12 -- 0.00004 0.00006 -- /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.00009 -- /usr/local/lib/python3.9/logging/__init__.py:630:formatMessage (formatMessage)
format -- 12 12 -- 0.00002 0.00007 -- /usr/local/lib/python3.9/logging/__init__.py:428:format (format)
_format -- 12 12 -- 0.00005 0.00005 -- /usr/local/lib/python3.9/logging/__init__.py:425:_format (_format)
getMessage -- 12 12 -- 0.00007 0.00014 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:96:getMessage (getMessage)
getMessage -- 12 12 -- 0.00006 0.00006 -- /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.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/console.py:85:colorize (colorize)
escseq -- 4 4 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/console.py:86: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.00007 0.00039 -- /usr/local/lib/python3.9/logging/__init__.py:1056:flush (flush)
acquire -- 12 12 -- 0.00002 0.00004 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire) +++
release -- 12 12 -- 0.00003 0.00004 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release) +++
flush -- 6 6 -- 0.00003 0.00023 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:562:flush (flush)
<method 'flush' of '_io.TextIOWrapper' objects> -- 6 6 -- 0.00020 0.00020 -- ~: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:554:write (write)
write -- 6 6 -- 0.00003 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:572:write (write)
isEnabledFor -- 12 12 -- 0.00002 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:1677:isEnabledFor (isEnabledFor)
__init__ -- 2 2 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:403:__init__ (__init__)
<lambda> -- 1 1 -- 0.00001 19.83039 -- onnxcustom/onnxcustom_UT_39_std/_doc/examples/plot_orttraining_benchmark.py:124:<lambda> (<lambda>)
benchmark -- 1 1 -- 0.00014 19.83039 -- onnxcustom/onnxcustom_UT_39_std/_doc/examples/plot_orttraining_benchmark.py:46:benchmark (benchmark)
fit -- 1 1 -- 0.00750 4.67572 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:79:fit (fit)
__init__ -- 1 1 -- 0.00005 0.00011 -- 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.00001 0.00004 -- onnxruntime_helper.py:134:numpy_to_ort_value (numpy_to_ort_value) +++
<listcomp> -- 1 1 -- 0.00003 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:96:<listcomp> (<listcomp>)
<listcomp> -- 1 1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:131:<listcomp> (<listcomp>)
<listcomp> -- 1 1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:132:<listcomp> (<listcomp>)
_iteration -- 100 100 -- 3.83724 4.64225 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:195:_iteration (_iteration)
iter_bind -- 6800 6800 -- 0.06661 0.76275 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:188:iter_bind (iter_bind)
_next_iter -- 6700 6700 -- 0.03668 0.35510 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:98:_next_iter (_next_iter)
<method 'randint'...mState' objects> -- 6700 6700 -- 0.30146 0.30146 -- ~:0:<method 'randint' of 'numpy.random.mtrand.RandomState' objects> (<method 'randint' of 'numpy.random.mtrand.RandomState' objects>)
<built-in method builtins.len> -- 6700 6700 -- 0.01080 0.01696 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
local_bind -- 6700 6700 -- 0.29926 0.29926 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:209:local_bind (local_bind)
<built-in method builtins.len> -- 7100 7100 -- 0.02404 0.04177 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
_bind_input_ortvalue -- 100 100 -- 0.00175 0.00185 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:167:_bind_input_ortvalue (_bind_input_ortvalue)
<built-in method builtins.isinstance> -- 200 200 -- 0.00010 0.00010 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<method 'mean' of 'numpy.ndarray' objects> -- 100 100 -- 0.00077 0.01698 -- ~:0:<method 'mean' of 'numpy.ndarray' objects> (<method 'mean' of 'numpy.ndarray' objects>) +++
<built-in method numpy.array> -- 100 100 -- 0.01601 0.01601 -- ~:0:<built-in method numpy.array> (<built-in method numpy.array>) +++
<method 'append' of 'list' objects> -- 6700 6700 -- 0.00740 0.00740 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
_create_training_session -- 1 1 -- 0.00021 0.01715 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:277:_create_training_session (_create_training_session)
<dictcomp> -- 1 1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:325:<dictcomp> (<dictcomp>)
<dictcomp> -- 1 1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:327:<dictcomp> (<dictcomp>)
__init__ -- 1 1 -- 0.01649 0.01659 -- onnxruntime/capi/training/training_session.py:15:__init__ (__init__)
check_and_normalize_provider_args -- 1 1 -- 0.00005 0.00009 -- onnxruntime/capi/onnxruntime_inference_collection.py:25:check_and_normalize_provider_args (check_and_normalize_provider_args)
set_provider_options -- 1 1 -- 0.00001 0.00002 -- onnxruntime/capi/onnxruntime_inference_collection.py:53:set_provider_options (set_provider_options)
<dictcomp> -- 1 1 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:62:<dictcomp> (<dictcomp>)
__init__ -- 1 1 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:101:__init__ (__init__)
device_to_providers -- 1 1 -- 0.00002 0.00002 -- onnxruntime_helper.py:150:device_to_providers (device_to_providers)
<method 'SerializeToS...e.CMessage' objects> -- 1 1 -- 0.00031 0.00031 -- ~:0:<method 'SerializeToString' of 'google.protobuf.pyext._message.CMessage' objects> (<method 'SerializeToString' of 'google.protobuf.pyext._message.CMessage' objects>)
get_state -- 1 1 -- 0.00001 0.00029 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:342:get_state (get_state)
get_state -- 1 1 -- 0.00027 0.00027 -- onnxruntime/capi/training/training_session.py:47:get_state (get_state) +++
set_state -- 1 1 -- 0.00001 0.00010 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/optimizers.py:374:set_state (set_state)
load_state -- 1 1 -- 0.00009 0.00009 -- onnxruntime/capi/training/training_session.py:59:load_state (load_state)
value -- 101 101 -- 0.00016 0.00016 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:186:value (value)
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.00339 0.00339 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/sgd_learning_rate.py:226:update_learning_rate (update_learning_rate)
get_inputs -- 1 1 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:111:get_inputs (get_inputs)
get_outputs -- 1 1 -- 0.00000 0.00000 -- onnxruntime/capi/onnxruntime_inference_collection.py:115:get_outputs (get_outputs)
io_binding -- 1 1 -- 0.00001 0.00002 -- onnxruntime/capi/onnxruntime_inference_collection.py:265:io_binding (io_binding)
__init__ -- 1 1 -- 0.00002 0.00002 -- onnxruntime/capi/onnxruntime_inference_collection.py:416:__init__ (__init__)
__del__ -- 1 1 -- 0.00001 0.00001 -- onnxruntime/capi/training/training_session.py:43:__del__ (__del__)
get_state -- 1 1 -- 0.00010 0.00010 -- onnxruntime/capi/training/training_session.py:47:get_state (get_state) +++
numpy_to_ort_value -- 100 100 -- 0.00053 0.00262 -- onnxruntime_helper.py:134:numpy_to_ort_value (numpy_to_ort_value) +++
<method 'randn' of 'num....RandomState' objects> -- 6 6 -- 0.00078 0.00078 -- ~:0:<method 'randn' of 'numpy.random.mtrand.RandomState' objects> (<method 'randn' of 'numpy.random.mtrand.RandomState' objects>)
<built-in method numpy.array> -- 100 100 -- 0.00102 0.00102 -- ~:0:<built-in method numpy.array> (<built-in method numpy.array>) +++
<method 'append' of 'list' objects> -- 100 100 -- 0.00009 0.00009 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
fit -- 1 1 -- 0.00002 15.15220 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:735:fit (fit)
_fit -- 1 1 -- 0.00016 15.15217 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:376:_fit (_fit)
any -- 1 1 -- 0.00002 0.00011 -- <__array_function__ internals>:177:any (any)
_any_dispatcher -- 1 1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2300:_any_dispatcher (_any_dispatcher)
_initialize -- 1 1 -- 0.00006 0.00066 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:319:_initialize (_initialize)
is_classifier -- 1 1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/base.py:960:is_classifier (is_classifier)
_init_coef -- 3 3 -- 0.00011 0.00059 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:359:_init_coef (_init_coef)
<method 'uniform'...mState' objects> -- 6 6 -- 0.00041 0.00041 -- ~:0:<method 'uniform' of 'numpy.random.mtrand.RandomState' objects> (<method 'uniform' of 'numpy.random.mtrand.RandomState' objects>)
<listcomp> -- 1 1 -- 0.00001 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:416:<listcomp> (<listcomp>)
<listcomp> -- 1 1 -- 0.00001 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:421:<listcomp> (<listcomp>)
_validate_hyperparameters -- 1 1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:445:_validate_hyperparameters (_validate_hyperparameters)
_fit_stochastic -- 1 1 -- 0.38009 15.14973 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:553:_fit_stochastic (_fit_stochastic)
clip -- 1 1 -- 0.00001 0.00022 -- <__array_function__ internals>:177:clip (clip)
_clip_dispatcher -- 1 1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2079:_clip_dispatcher (_clip_dispatcher)
<built-in method ..._array_function> -- 1 1 -- 0.00000 0.00021 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
_backprop -- 6700 6700 -- 0.82448 10.51713 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:240:_backprop (_backprop)
dot -- 20100 20100 -- 0.09415 0.39232 -- <__array_function__ internals>:177:dot (dot)
dot -- 20100 20100 -- 0.01701 0.01701 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:736:dot (dot)
<built-in metho...rray_function> -- 20100 20100 -- 0.28116 0.28116 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
inplace_relu_derivative -- 13400 13400 -- 0.58063 0.58063 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_base.py:132:inplace_relu_derivative (inplace_relu_derivative)
squared_loss -- 6700 6700 -- 0.34088 1.20022 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_base.py:158:squared_loss (squared_loss)
<method 'mean' ...rray' objects> -- 6700 6700 -- 0.03826 0.85934 -- ~:0:<method 'mean' of 'numpy.ndarray' objects> (<method 'mean' of 'numpy.ndarray' objects>) +++
_forward_pass -- 6700 6700 -- 0.67786 2.05249 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:118:_forward_pass (_forward_pass)
inplace_identity -- 6700 6700 -- 0.00638 0.00638 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_base.py:13:inplace_identity (inplace_identity)
inplace_relu -- 13400 13400 -- 0.45201 0.45201 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_base.py:47:inplace_relu (inplace_relu)
safe_sparse_dot -- 20100 20100 -- 0.85704 0.91624 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/extmath.py:120:safe_sparse_dot (safe_sparse_dot) +++
_compute_loss_grad -- 20100 20100 -- 1.75325 4.98714 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:176:_compute_loss_grad (_compute_loss_grad)
mean -- 20100 20100 -- 0.10212 2.28254 -- <__array_function__ internals>:177:mean (mean)
_mean_dispatcher -- 20100 20100 -- 0.01921 0.01921 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3351:_mean_dispatcher (_mean_dispatcher)
<built-in met...ay_function> -- 20100 20100 -- 0.09088 2.16122 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
safe_sparse_dot -- 20100 20100 -- 0.89182 0.95134 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/extmath.py:120:safe_sparse_dot (safe_sparse_dot) +++
safe_sparse_dot -- 13400 13400 -- 0.39417 0.43325 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/extmath.py:120:safe_sparse_dot (safe_sparse_dot) +++
<method 'ravel' o...darray' objects> -- 20100 20100 -- 0.04660 0.04660 -- ~:0:<method 'ravel' of 'numpy.ndarray' objects> (<method 'ravel' of 'numpy.ndarray' objects>)
_update_no_improvement_count -- 100 100 -- 0.00078 0.00078 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:706:_update_no_improvement_count (_update_no_improvement_count)
update_params -- 6700 6700 -- 0.61115 2.75446 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:29:update_params (update_params)
<genexpr> -- 46900 46900 -- 0.04511 0.04511 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:43:<genexpr> (<genexpr>)
_get_updates -- 6700 6700 -- 0.09547 2.09821 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:169:_get_updates (_get_updates)
<listcomp> -- 6700 6700 -- 2.00274 2.00274 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:183:<listcomp> (<listcomp>)
__init__ -- 1 1 -- 0.00002 0.00042 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:121:__init__ (__init__)
__init__ -- 1 1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:25:__init__ (__init__)
<listcomp> -- 1 1 -- 0.00003 0.00040 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:136:<listcomp> (<listcomp>)
zeros_like -- 6 6 -- 0.00002 0.00037 -- <__array_function__ internals>:177:zeros_like (zeros_like)
_zeros_like_dispatcher -- 6 6 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numeric.py:72:_zeros_like_dispatcher (_zeros_like_dispatcher)
<built-in met...ay_function> -- 6 6 -- 0.00003 0.00035 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
iteration_ends -- 100 100 -- 0.00116 0.00116 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_stochastic_optimizers.py:138:iteration_ends (iteration_ends)
_safe_indexing -- 6700 6700 -- 0.07372 1.37448 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:307:_safe_indexing (_safe_indexing) +++
shuffle -- 100 100 -- 0.00118 0.05485 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:602:shuffle (shuffle)
resample -- 100 100 -- 0.00322 0.05367 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:452:resample (resample)
<listcomp> -- 100 100 -- 0.00040 0.00072 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:593:<listcomp> (<listcomp>)
isspmatrix -- 100 100 -- 0.00016 0.00032 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1291:isspmatrix (isspmatrix) +++
<listcomp> -- 100 100 -- 0.00037 0.01977 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:594:<listcomp> (<listcomp>)
_safe_indexing -- 100 100 -- 0.00102 0.01939 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:307:_safe_indexing (_safe_indexing) +++
check_consistent_length -- 100 100 -- 0.00117 0.01697 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:318:check_consistent_length (check_consistent_length) +++
check_random_state -- 100 100 -- 0.00092 0.00245 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:1043:check_random_state (check_random_state) +++
<method 'shuffl...tate' objects> -- 100 100 -- 0.00785 0.00785 -- ~: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.00229 0.00229 -- ~:0:<built-in method numpy.arange> (<built-in method numpy.arange>) +++
<built-in metho...ltins.hasattr> -- 100 100 -- 0.00023 0.00023 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
<built-in method builtins.len> -- 200 200 -- 0.00016 0.00016 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
gen_batches -- 6800 6800 -- 0.06366 0.06472 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:712:gen_batches (gen_batches)
<built-in method ...tins.isinstance> -- 100 100 -- 0.00034 0.00105 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<method 'append' of 'list' objects> -- 100 100 -- 0.00019 0.00019 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>) +++
<built-in method _warnings.warn> -- 1 1 -- 0.00007 0.00122 -- ~:0:<built-in method _warnings.warn> (<built-in method _warnings.warn>)
_showwarnmsg -- 1 1 -- 0.00006 0.00114 -- /usr/local/lib/python3.9/warnings.py:96:_showwarnmsg (_showwarnmsg)
_showwarning -- 1 1 -- 0.00001 0.00108 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:473:_showwarning (_showwarning)
formatwarning -- 1 1 -- 0.00001 0.00006 -- /usr/local/lib/python3.9/warnings.py:15:formatwarning (formatwarning)
_formatwarnmsg_impl -- 1 1 -- 0.00004 0.00005 -- /usr/local/lib/python3.9/warnings.py:35:_formatwarnmsg_impl (_formatwarnmsg_impl)
getline -- 1 1 -- 0.00001 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.00100 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:81:write (write) +++
__init__ -- 1 1 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:403:__init__ (__init__) +++
_validate_input -- 1 1 -- 0.00002 0.00140 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:1588:_validate_input (_validate_input)
_validate_data -- 1 1 -- 0.00003 0.00138 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/base.py:495:_validate_data (_validate_data)
_check_n_features -- 1 1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/base.py:359:_check_n_features (_check_n_features)
_num_features -- 1 1 -- 0.00001 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:201:_num_features (_num_features)
_check_feature_names -- 1 1 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/base.py:405:_check_feature_names (_check_feature_names)
_get_feature_names -- 1 1 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:1653:_get_feature_names (_get_feature_names)
check_X_y -- 1 1 -- 0.00001 0.00132 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:845:check_X_y (check_X_y)
check_consistent_length -- 1 1 -- 0.00001 0.00021 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:318:check_consistent_length (check_consistent_length) +++
check_array -- 1 1 -- 0.00007 0.00074 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:494:check_array (check_array) +++
_check_y -- 1 1 -- 0.00001 0.00035 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:986:_check_y (_check_y)
check_array -- 1 1 -- 0.00004 0.00035 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:494:check_array (check_array) +++
check_random_state -- 1 1 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:1043:check_random_state (check_random_state) +++
<built-in method builtins.print> -- 3 3 -- 0.00004 0.00232 -- ~:0:<built-in method builtins.print> (<built-in method builtins.print>)
write -- 6 6 -- 0.00010 0.00228 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:81:write (write) +++
_mean -- 26900 26900 -- 1.35147 2.70723 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:162:_mean (_mean)
_count_reduce_items -- 26900 26900 -- 0.51890 0.59270 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:66:_count_reduce_items (_count_reduce_items)
<built-in method numpy.co...th.normalize_axis_index> -- 33800 33800 -- 0.04794 0.04794 -- ~: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> -- 20100 20100 -- 0.02586 0.02586 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<built-in method numpy.asanyarray> -- 26900 26900 -- 0.01911 0.01911 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>) +++
<method 'reduce' of 'numpy.ufunc' objects> -- 26900 26900 -- 0.65834 0.65834 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>) +++
<built-in method builtins.hasattr> -- 6800 6800 -- 0.01237 0.01237 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
<built-in method builtins.isinstance> -- 26900 26900 -- 0.02541 0.02541 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<built-in method builtins.issubclass> -- 53800 53800 -- 0.04783 0.04783 -- ~:0:<built-in method builtins.issubclass> (<built-in method builtins.issubclass>) +++
_wrapreduction -- 3 3 -- 0.00005 0.00050 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction)
<dictcomp> -- 3 3 -- 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> -- 3 3 -- 0.00043 0.00043 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>) +++
isspmatrix -- 60502 60502 -- 0.09729 0.17483 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1291:isspmatrix (isspmatrix)
<built-in method builtins.isinstance> -- 60502 60502 -- 0.07754 0.07754 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
_safe_indexing -- 6800 6800 -- 0.07474 1.39388 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:307:_safe_indexing (_safe_indexing)
_array_indexing -- 6800 6800 -- 0.27545 1.13973 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:193:_array_indexing (_array_indexing)
isspmatrix -- 6800 6800 -- 0.00942 0.01670 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1291:isspmatrix (isspmatrix) +++
parse -- 6800 6800 -- 0.03466 0.81449 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:65:parse (parse)
__init__ -- 6800 6800 -- 0.31266 0.77983 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:284:__init__ (__init__)
<lambda> -- 6800 6800 -- 0.01784 0.03354 -- <string>:1:<lambda> (<lambda>)
<built-in method __...at 0x7f5da6713960> -- 6800 6800 -- 0.01569 0.01569 -- ~:0:<built-in method __new__ of type object at 0x7f5da6713960> (<built-in method __new__ of type object at 0x7f5da6713960>)
<genexpr> -- 20400 20400 -- 0.05236 0.05236 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:294:<genexpr> (<genexpr>)
_parse_letter_version -- 20400 20400 -- 0.01680 0.01680 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:416:_parse_letter_version (_parse_letter_version)
_parse_local_version -- 6800 6800 -- 0.00480 0.00480 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:455:_parse_local_version (_parse_local_version)
_cmpkey -- 6800 6800 -- 0.11322 0.12058 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:467:_cmpkey (_cmpkey)
<lambda> -- 6800 6800 -- 0.00736 0.00736 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:482:<lambda> (<lambda>)
<method 'split' of 'str' objects> -- 6800 6800 -- 0.01606 0.01606 -- ~:0:<method 'split' of 'str' objects> (<method 'split' of 'str' objects>)
<method 'group' of 're.Match' objects> -- 68000 68000 -- 0.07561 0.07561 -- ~:0:<method 'group' of 're.Match' objects> (<method 'group' of 're.Match' objects>)
<method 'search' of 're.Pattern' objects> -- 6800 6800 -- 0.14744 0.14744 -- ~:0:<method 'search' of 're.Pattern' objects> (<method 'search' of 're.Pattern' objects>)
__lt__ -- 6800 6800 -- 0.02356 0.02935 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/externals/_packaging/version.py:92:__lt__ (__lt__)
<built-in method builtins.isinstance> -- 6800 6800 -- 0.00578 0.00578 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<built-in method builtins.isinstance> -- 6800 6800 -- 0.00374 0.00374 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
_determine_key_type -- 6800 6800 -- 0.12544 0.16181 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/__init__.py:237:_determine_key_type (_determine_key_type)
<method 'keys' of 'dict' objects> -- 6800 6800 -- 0.00749 0.00749 -- ~:0:<method 'keys' of 'dict' objects> (<method 'keys' of 'dict' objects>)
<built-in method builtins.hasattr> -- 6800 6800 -- 0.00554 0.00554 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
<built-in method builtins.isinstance> -- 20400 20400 -- 0.02334 0.02334 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<built-in method builtins.hasattr> -- 13600 13600 -- 0.01760 0.01760 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
safe_sparse_dot -- 53600 53600 -- 2.14302 2.30083 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/extmath.py:120:safe_sparse_dot (safe_sparse_dot)
isspmatrix -- 53600 53600 -- 0.08771 0.15780 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1291:isspmatrix (isspmatrix) +++
_num_samples -- 104 104 -- 0.00235 0.00453 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:254:_num_samples (_num_samples)
<built-in method builtins.hasattr> -- 312 312 -- 0.00052 0.00052 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>) +++
<built-in method builtins.isinstance> -- 104 104 -- 0.00031 0.00159 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
<built-in method builtins.len> -- 104 104 -- 0.00006 0.00006 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
check_consistent_length -- 101 101 -- 0.00118 0.01719 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:318:check_consistent_length (check_consistent_length)
unique -- 101 101 -- 0.00056 0.01111 -- <__array_function__ internals>:177:unique (unique)
_unique_dispatcher -- 101 101 -- 0.00010 0.00010 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:133:_unique_dispatcher (_unique_dispatcher)
<built-in method numpy.co...mplement_array_function> -- 101 101 -- 0.00073 0.01046 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>) +++
<listcomp> -- 101 101 -- 0.00040 0.00483 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:329:<listcomp> (<listcomp>)
_num_samples -- 102 102 -- 0.00231 0.00443 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:254:_num_samples (_num_samples) +++
<built-in method builtins.len> -- 101 101 -- 0.00006 0.00006 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
check_array -- 2 2 -- 0.00011 0.00109 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:494:check_array (check_array)
simplefilter -- 2 2 -- 0.00001 0.00007 -- /usr/local/lib/python3.9/warnings.py:165:simplefilter (simplefilter)
_add_filter -- 2 2 -- 0.00003 0.00005 -- /usr/local/lib/python3.9/warnings.py:181:_add_filter (_add_filter)
__init__ -- 2 2 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:437:__init__ (__init__)
__enter__ -- 2 2 -- 0.00003 0.00003 -- /usr/local/lib/python3.9/warnings.py:458:__enter__ (__enter__)
__exit__ -- 2 2 -- 0.00001 0.00001 -- /usr/local/lib/python3.9/warnings.py:477:__exit__ (__exit__)
isspmatrix -- 2 2 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/scipy/sparse/_base.py:1291:isspmatrix (isspmatrix) +++
_assert_all_finite -- 2 2 -- 0.00012 0.00072 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:90:_assert_all_finite (_assert_all_finite)
get_config -- 2 2 -- 0.00001 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/_config.py:24:get_config (get_config)
_get_threadlocal_config -- 2 2 -- 0.00000 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/_config.py:16:_get_threadlocal_config (_get_threadlocal_config)
_safe_accumulator_op -- 2 2 -- 0.00003 0.00055 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/extmath.py:869:_safe_accumulator_op (_safe_accumulator_op)
sum -- 2 2 -- 0.00001 0.00048 -- <__array_function__ internals>:177:sum (sum)
_sum_dispatcher -- 2 2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2155:_sum_dispatcher (_sum_dispatcher)
<built-in method nump...ment_array_function> -- 2 2 -- 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>) +++
issubdtype -- 2 2 -- 0.00002 0.00004 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numerictypes.py:356:issubdtype (issubdtype)
issubclass_ -- 4 4 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numerictypes.py:282:issubclass_ (issubclass_)
_num_samples -- 2 2 -- 0.00004 0.00010 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:254:_num_samples (_num_samples) +++
_ensure_no_complex_data -- 2 2 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:484:_ensure_no_complex_data (_ensure_no_complex_data)
check_random_state -- 101 101 -- 0.00093 0.00246 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/utils/validation.py:1043:check_random_state (check_random_state)
<built-in method builtins.isinstance> -- 200 200 -- 0.00063 0.00153 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>) +++
write -- 7 7 -- 0.00012 0.00328 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx_gallery/gen_rst.py:81:write (write)
verbose -- 6 6 -- 0.00005 0.00314 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:135:verbose (verbose)
log -- 6 6 -- 0.00008 0.00309 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:128:log (log)
log -- 6 6 -- 0.00009 0.00300 -- /usr/local/lib/python3.9/logging/__init__.py:1825:log (log)
log -- 6 6 -- 0.00008 0.00282 -- /usr/local/lib/python3.9/logging/__init__.py:1485:log (log)
_log -- 6 6 -- 0.00006 0.00273 -- /usr/local/lib/python3.9/logging/__init__.py:1553:_log (_log)
findCaller -- 6 6 -- 0.00010 0.00017 -- /usr/local/lib/python3.9/logging/__init__.py:1502:findCaller (findCaller)
<lambda> -- 6 6 -- 0.00002 0.00003 -- /usr/local/lib/python3.9/logging/__init__.py:156:<lambda> (<lambda>)
normcase -- 12 12 -- 0.00002 0.00003 -- /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.00006 0.00080 -- /usr/local/lib/python3.9/logging/__init__.py:1538:makeRecord (makeRecord)
__init__ -- 6 6 -- 0.00032 0.00074 -- /usr/local/lib/python3.9/logging/__init__.py:278:__init__ (__init__)
getLevelName -- 6 6 -- 0.00005 0.00006 -- /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.00001 0.00001 -- /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.00010 -- /usr/local/lib/python3.9/posixpath.py:117:splitext (splitext)
_splitext -- 6 6 -- 0.00004 0.00006 -- /usr/local/lib/python3.9/genericpath.py:121:_splitext (_splitext)
<method '...objects> -- 12 12 -- 0.00002 0.00002 -- ~:0:<method 'rfind' of 'str' objects> (<method 'rfind' of 'str' objects>) +++
basename -- 6 6 -- 0.00005 0.00009 -- /usr/local/lib/python3.9/posixpath.py:140:basename (basename)
_get_sep -- 6 6 -- 0.00001 0.00002 -- /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.00002 0.00002 -- /usr/local/lib/python3.9/threading.py:1318:current_thread (current_thread)
handle -- 6 6 -- 0.00003 0.00169 -- /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.00007 0.00166 -- /usr/local/lib/python3.9/logging/__init__.py:1633:callHandlers (callHandlers)
handle -- 12 12 -- 0.00008 0.00158 -- /usr/local/lib/python3.9/logging/__init__.py:935:handle (handle)
filter -- 12 12 -- 0.00006 0.00017 -- /usr/local/lib/python3.9/logging/__init__.py:787:filter (filter) +++
acquire -- 12 12 -- 0.00004 0.00006 -- /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) +++
emit -- 6 6 -- 0.00004 0.00041 -- /usr/local/lib/python3.9/logging/__init__.py:1067:emit (emit) +++
emit -- 6 6 -- 0.00006 0.00083 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:158:emit (emit)
acquire -- 6 6 -- 0.00001 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:892:acquire (acquire) +++
release -- 6 6 -- 0.00001 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:899:release (release) +++
emit -- 6 6 -- 0.00005 0.00073 -- /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.00002 0.00002 -- /usr/local/lib/python3.9/logging/__init__.py:1677:isEnabledFor (isEnabledFor) +++
process -- 6 6 -- 0.00005 0.00006 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sphinx/util/logging.py:138:process (process)
get_state -- 2 2 -- 0.00037 0.00037 -- onnxruntime/capi/training/training_session.py:47:get_state (get_state)
numpy_to_ort_value -- 102 102 -- 0.00054 0.00267 -- onnxruntime_helper.py:134:numpy_to_ort_value (numpy_to_ort_value)
<built-in method onnxruntim...state.ortvalue_from_numpy> -- 102 102 -- 0.00213 0.00213 -- ~: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.len> -- 14329 14329 -- 0.03522 0.05911 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>)
__len__ -- 13600 13600 -- 0.02389 0.02389 -- onnxcustom/onnxcustom_UT_39_std/_doc/sphinxdoc/source/onnxcustom/training/data_loader.py:94:__len__ (__len__)
<method 'astype' of 'numpy.ndarray' objects> -- 12 12 -- 0.00014 0.00014 -- ~:0:<method 'astype' of 'numpy.ndarray' objects> (<method 'astype' of 'numpy.ndarray' objects>)
<built-in method numpy.array> -- 201 201 -- 0.01705 0.01705 -- ~:0:<built-in method numpy.array> (<built-in method numpy.array>)
<method 'append' of 'list' objects> -- 6906 6906 -- 0.00768 0.00768 -- ~:0:<method 'append' of 'list' objects> (<method 'append' of 'list' objects>)
<built-in method builtins.hasattr> -- 27687 27687 -- 0.03634 0.03634 -- ~:0:<built-in method builtins.hasattr> (<built-in method builtins.hasattr>)
<method 'mean' of 'numpy.ndarray' objects> -- 6800 6800 -- 0.03903 0.87632 -- ~:0:<method 'mean' of 'numpy.ndarray' objects> (<method 'mean' of 'numpy.ndarray' objects>)
_mean -- 6800 6800 -- 0.41926 0.83729 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:162:_mean (_mean) +++
<built-in method numpy.empty> -- 107 107 -- 0.00062 0.00062 -- ~:0:<built-in method numpy.empty> (<built-in method numpy.empty>)
<built-in method builtins.isinstance> -- 142177 142177 -- 0.16314 0.16609 -- ~:0:<built-in method builtins.isinstance> (<built-in method builtins.isinstance>)
__instancecheck__ -- 311 311 -- 0.00049 0.00295 -- /usr/local/lib/python3.9/abc.py:96:__instancecheck__ (__instancecheck__)
<built-in method _abc._abc_instancecheck> -- 311 311 -- 0.00183 0.00247 -- ~:0:<built-in method _abc._abc_instancecheck> (<built-in method _abc._abc_instancecheck>)
__subclasscheck__ -- 104 104 -- 0.00017 0.00064 -- /usr/local/lib/python3.9/abc.py:100:__subclasscheck__ (__subclasscheck__)
<built-in method _abc._abc_subclasscheck> -- 104 104 -- 0.00047 0.00047 -- ~:0:<built-in method _abc._abc_subclasscheck> (<built-in method _abc._abc_subclasscheck>)
<built-in method numpy.arange> -- 101 101 -- 0.00231 0.00231 -- ~:0:<built-in method numpy.arange> (<built-in method numpy.arange>)
<built-in method numpy.core._...th.implement_array_function> -- 40311 40325 -- 0.37295 2.45395 -- ~:0:<built-in method numpy.core._multiarray_umath.implement_array_function> (<built-in method numpy.core._multiarray_umath.implement_array_function>)
clip -- 1 1 -- 0.00001 0.00021 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2083:clip (clip)
_wrapfunc -- 1 1 -- 0.00001 0.00020 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:51:_wrapfunc (_wrapfunc)
_wrapit -- 1 1 -- 0.00002 0.00019 -- 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.00016 -- ~:0:<method 'clip' of 'numpy.ndarray' objects> (<method 'clip' of 'numpy.ndarray' objects>)
_clip -- 1 1 -- 0.00002 0.00015 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:125:_clip (_clip)
_clip_dep_is_scalar_nan -- 2 2 -- 0.00006 0.00011 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:91:_clip_dep_is_scalar_nan (_clip_dep_is_scalar_nan)
ndim -- 2 2 -- 0.00001 0.00005 -- <__array_function__ internals>:177:ndim (ndim)
_ndim_dispatcher -- 2 2 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3160:_ndim_dispatcher (_ndim_dispatcher)
_clip_dep_is_byte_swapped -- 2 2 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:101:_clip_dep_is_byte_swapped (_clip_dep_is_byte_swapped)
_clip_dep_invoke_with_casting -- 1 1 -- 0.00002 0.00002 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:106:_clip_dep_invoke_with_casting (_clip_dep_invoke_with_casting)
sum -- 2 2 -- 0.00002 0.00045 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2160:sum (sum)
_wrapreduction -- 2 2 -- 0.00003 0.00043 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction) +++
any -- 1 1 -- 0.00001 0.00008 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:2305:any (any)
_wrapreduction -- 1 1 -- 0.00002 0.00007 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:69:_wrapreduction (_wrapreduction) +++
ndim -- 2 2 -- 0.00002 0.00003 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3164:ndim (ndim)
mean -- 20100 20100 -- 0.20040 2.07034 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3356:mean (mean)
_mean -- 20100 20100 -- 0.93221 1.86994 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/_methods.py:162:_mean (_mean) +++
zeros_like -- 6 6 -- 0.00007 0.00032 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/numeric.py:76:zeros_like (zeros_like)
empty_like -- 6 6 -- 0.00004 0.00010 -- <__array_function__ internals>:177:empty_like (empty_like)
empty_like -- 6 6 -- 0.00000 0.00000 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:80:empty_like (empty_like)
copyto -- 6 6 -- 0.00004 0.00010 -- <__array_function__ internals>:177:copyto (copyto)
copyto -- 6 6 -- 0.00001 0.00001 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/core/multiarray.py:1071:copyto (copyto)
unique -- 101 101 -- 0.00100 0.00973 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:138:unique (unique)
_unpack_tuple -- 101 101 -- 0.00025 0.00032 -- 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> -- 101 101 -- 0.00007 0.00007 -- ~:0:<built-in method builtins.len> (<built-in method builtins.len>) +++
_unique1d -- 101 101 -- 0.00583 0.00743 -- onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/numpy/lib/arraysetops.py:320:_unique1d (_unique1d)
<method 'flatten' of 'numpy.ndarray' objects> -- 101 101 -- 0.00079 0.00079 -- ~:0:<method 'flatten' of 'numpy.ndarray' objects> (<method 'flatten' of 'numpy.ndarray' objects>)
<method 'sort' of 'numpy.ndarray' objects> -- 101 101 -- 0.00018 0.00018 -- ~:0:<method 'sort' of 'numpy.ndarray' objects> (<method 'sort' of 'numpy.ndarray' objects>)
<built-in method numpy.asanyarray> -- 101 101 -- 0.00005 0.00005 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>) +++
<built-in method numpy.empty> -- 101 101 -- 0.00058 0.00058 -- ~:0:<built-in method numpy.empty> (<built-in method numpy.empty>) +++
<built-in method numpy.asanyarray> -- 101 101 -- 0.00098 0.00098 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>) +++
<built-in method builtins.getattr> -- 41 41 -- 0.00004 0.00004 -- ~:0:<built-in method builtins.getattr> (<built-in method builtins.getattr>)
<method 'get' of 'dict' objects> -- 33 33 -- 0.00003 0.00003 -- ~:0:<method 'get' of 'dict' objects> (<method 'get' of 'dict' objects>)
<built-in method numpy.asanyarray> -- 27104 27104 -- 0.02014 0.02014 -- ~:0:<built-in method numpy.asanyarray> (<built-in method numpy.asanyarray>)
<method 'reduce' of 'numpy.ufunc' objects> -- 26903 26903 -- 0.65877 0.65877 -- ~:0:<method 'reduce' of 'numpy.ufunc' objects> (<method 'reduce' of 'numpy.ufunc' objects>)
<built-in method builtins.issubclass> -- 53806 53806 -- 0.04784 0.04784 -- ~:0:<built-in method builtins.issubclass> (<built-in method builtins.issubclass>)
<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 = OrtGradientOptimizer(
onx_train, list(weights), device='cuda', learning_rate=5e-4,
warm_start=False, max_iter=200, batch_size=batch_size)
benches.append(benchmark(nn, train_session, name='NN-GPU'))
Linear Regression¶
lr = MLPRegressor(hidden_layer_sizes=tuple(), max_iter=max_iter,
solver='sgd', learning_rate_init=5e-2, alpha=0,
n_iter_no_change=max_iter * 3, batch_size=batch_size,
nesterovs_momentum=False, momentum=0,
learning_rate='invscaling')
with warnings.catch_warnings():
warnings.simplefilter('ignore')
lr.fit(X, y)
onx = to_onnx(nn, X_train[:1].astype(numpy.float32), target_opset=15)
onx_train = add_loss_output(onx)
inits = get_train_initializer(onx)
weights = {k: v for k, v in inits.items() if k != "shape_tensor"}
pprint(list((k, v[0].shape) for k, v in weights.items()))
train_session = OrtGradientOptimizer(
onx_train, list(weights), device='cpu', learning_rate=1e-4,
warm_start=False, max_iter=max_iter, batch_size=batch_size)
benches.append(benchmark(lr, train_session, name='LR-CPU'))
if get_device().upper() == 'GPU':
train_session = OrtGradientOptimizer(
onx_train, list(weights), device='cuda', learning_rate=1e-4,
warm_start=False, max_iter=200, batch_size=batch_size)
benches.append(benchmark(nn, train_session, name='LR-GPU'))
Out:
[('coefficient', (100, 50)),
('intercepts', (1, 50)),
('coefficient1', (50, 10)),
('intercepts1', (1, 10)),
('coefficient2', (10, 1)),
('intercepts2', (1, 1))]
[benchmark] LR-CPU
/var/lib/jenkins/workspace/onnxcustom/onnxcustom_UT_39_std/_venv/lib/python3.9/site-packages/sklearn/neural_network/_multilayer_perceptron.py:692: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.
warnings.warn(
[benchmark] skl=100 iterations - 5.121225359849632 seconds
[benchmark] ort=100 iterations - 4.571064034476876 seconds
GPU profiling¶
if get_device().upper() == 'GPU':
ps = profile(lambda: benchmark(nn, train_session, name='LR-GPU'))[0]
root, nodes = profile2graph(ps, clean_text=clean_name)
text = root.to_text()
print(text)
Graphs¶
Dataframe first.
df = DataFrame(benches).set_index('name')
df
text output
print(df)
Out:
skl ... losses_ort
name ...
NN-CPU 13.335430 ... [39370.234, 30754.566, 27981.418, 24108.654, 1...
LR-CPU 5.121225 ... [30004.059, 6631.8145, 3842.7864, 2075.2715, 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_title("Losses")
ax[1].set_yscale('log')
ax[1].legend()
Out:
<matplotlib.legend.Legend object at 0x7f5cc3f39790>
The gradient update are not exactly the same. It should be improved for a fair comprison.
# plt.show()
Total running time of the script: ( 1 minutes 4.261 seconds)