
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_examples/plot_backend.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        Click :ref:`here <sphx_glr_download_auto_examples_plot_backend.py>`
        to download the full example code

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_examples_plot_backend.py:


.. _l-example-backend-api:

ONNX Runtime Backend for ONNX
=============================

*ONNX Runtime* extends the
`onnx backend API <https://github.com/onnx/onnx/blob/main/docs/ImplementingAnOnnxBackend.md>`_
to run predictions using this runtime.
Let's use the API to compute the prediction
of a simple logistic regression model.

.. GENERATED FROM PYTHON SOURCE LINES 17-22

.. code-block:: default

    import numpy as np
    from onnx import load

    import onnxruntime.backend as backend








.. GENERATED FROM PYTHON SOURCE LINES 23-25

The device depends on how the package was compiled,
GPU or CPU.

.. GENERATED FROM PYTHON SOURCE LINES 25-42

.. code-block:: default

    from onnxruntime import datasets, get_device
    from onnxruntime.capi.onnxruntime_pybind11_state import InvalidArgument

    device = get_device()

    name = datasets.get_example("logreg_iris.onnx")
    model = load(name)

    rep = backend.prepare(model, device)
    x = np.array([[-1.0, -2.0]], dtype=np.float32)
    try:
        label, proba = rep.run(x)
        print("label={}".format(label))
        print("probabilities={}".format(proba))
    except (RuntimeError, InvalidArgument) as e:
        print(e)





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Got invalid dimensions for input: float_input for the following indices
     index: 0 Got: 1 Expected: 3
     Please fix either the inputs or the model.




.. GENERATED FROM PYTHON SOURCE LINES 43-45

The backend can also directly load the model
without using *onnx*.

.. GENERATED FROM PYTHON SOURCE LINES 45-55

.. code-block:: default


    rep = backend.prepare(name, device)
    x = np.array([[-1.0, -2.0]], dtype=np.float32)
    try:
        label, proba = rep.run(x)
        print("label={}".format(label))
        print("probabilities={}".format(proba))
    except (RuntimeError, InvalidArgument) as e:
        print(e)





.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Got invalid dimensions for input: float_input for the following indices
     index: 0 Got: 1 Expected: 3
     Please fix either the inputs or the model.




.. GENERATED FROM PYTHON SOURCE LINES 56-59

The backend API is implemented by other frameworks
and makes it easier to switch between multiple runtimes
with the same API.


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** ( 0 minutes  0.014 seconds)


.. _sphx_glr_download_auto_examples_plot_backend.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example


    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_backend.py <plot_backend.py>`

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_backend.ipynb <plot_backend.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
