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

.. only:: html

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

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

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

.. _sphx_glr_auto_examples_plot_pipeline.py:


Draw a pipeline
===============

There is no other way to look into one model stored
in ONNX format than looking into its node with
*onnx*. This example demonstrates
how to draw a model and to retrieve it in *json*
format.

.. contents::
    :local:

Retrieve a model in JSON format
+++++++++++++++++++++++++++++++

That's the most simple way.

.. GENERATED FROM PYTHON SOURCE LINES 22-34

.. code-block:: default


    from onnxruntime.datasets import get_example

    example1 = get_example("mul_1.onnx")

    import onnx

    model = onnx.load(example1)  # model is a ModelProto protobuf message

    print(model)






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

 .. code-block:: none

    ir_version: 3
    producer_name: "chenta"
    graph {
      node {
        input: "X"
        input: "W"
        output: "Y"
        name: "mul_1"
        op_type: "Mul"
      }
      name: "mul test"
      initializer {
        dims: 3
        dims: 2
        data_type: 1
        float_data: 1.0
        float_data: 2.0
        float_data: 3.0
        float_data: 4.0
        float_data: 5.0
        float_data: 6.0
        name: "W"
      }
      input {
        name: "X"
        type {
          tensor_type {
            elem_type: 1
            shape {
              dim {
                dim_value: 3
              }
              dim {
                dim_value: 2
              }
            }
          }
        }
      }
      output {
        name: "Y"
        type {
          tensor_type {
            elem_type: 1
            shape {
              dim {
                dim_value: 3
              }
              dim {
                dim_value: 2
              }
            }
          }
        }
      }
    }
    opset_import {
      domain: ""
      version: 7
    }





.. GENERATED FROM PYTHON SOURCE LINES 35-41

Draw a model with ONNX
++++++++++++++++++++++
We use `net_drawer.py <https://github.com/onnx/onnx/blob/main/onnx/tools/net_drawer.py>`_
included in *onnx* package.
We use *onnx* to load the model
in a different way than before.

.. GENERATED FROM PYTHON SOURCE LINES 41-50

.. code-block:: default



    from onnx import ModelProto

    model = ModelProto()
    with open(example1, "rb") as fid:
        content = fid.read()
        model.ParseFromString(content)








.. GENERATED FROM PYTHON SOURCE LINES 51-52

We convert it into a graph.

.. GENERATED FROM PYTHON SOURCE LINES 52-59

.. code-block:: default

    from onnx.tools.net_drawer import GetOpNodeProducer, GetPydotGraph

    pydot_graph = GetPydotGraph(
        model.graph, name=model.graph.name, rankdir="LR", node_producer=GetOpNodeProducer("docstring")
    )
    pydot_graph.write_dot("graph.dot")








.. GENERATED FROM PYTHON SOURCE LINES 60-61

Then into an image

.. GENERATED FROM PYTHON SOURCE LINES 61-65

.. code-block:: default

    import os

    os.system("dot -O -Tpng graph.dot")





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

 .. code-block:: none


    0



.. GENERATED FROM PYTHON SOURCE LINES 66-67

Which we display...

.. GENERATED FROM PYTHON SOURCE LINES 67-71

.. code-block:: default

    import matplotlib.pyplot as plt

    image = plt.imread("graph.dot.png")
    plt.imshow(image)



.. image-sg:: /auto_examples/images/sphx_glr_plot_pipeline_001.png
   :alt: plot pipeline
   :srcset: /auto_examples/images/sphx_glr_plot_pipeline_001.png
   :class: sphx-glr-single-img


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

 .. code-block:: none


    <matplotlib.image.AxesImage object at 0x7f0fecf2bd90>




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

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


.. _sphx_glr_download_auto_examples_plot_pipeline.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_pipeline.py <plot_pipeline.py>`

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

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


.. only:: html

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

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