diff --git a/.buildinfo b/.buildinfo index 08e5b4c4754c642bf36a90f681b27a80b0a63d43..23c30fa9c605552db9e448239e140e108ca4f4ff 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: ed03d611f501ce7058a4e46dadc74e81 +config: 8d1fcf3d875ea72934b940f39cb9e632 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/_images/TRT_worklfow.png b/_images/TRT_worklfow.png new file mode 100644 index 0000000000000000000000000000000000000000..effd74fcd09fb1b93576586e740decc88b8194df Binary files /dev/null and b/_images/TRT_worklfow.png differ diff --git a/_images/dino_sim.png b/_images/dino_sim.png new file mode 100644 index 0000000000000000000000000000000000000000..32b5f3fdffc78c547bd6dc9cb336859a6f3d0c91 Binary files /dev/null and b/_images/dino_sim.png differ diff --git a/_images/source_Tutorial_static_analysis_14_0.png b/_images/source_Tutorial_static_analysis_14_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7d2e26772eee801b1f56428f3feb9778b7a8555b Binary files /dev/null and b/_images/source_Tutorial_static_analysis_14_0.png differ diff --git a/_images/source_Tutorial_static_analysis_20_0.png b/_images/source_Tutorial_static_analysis_20_0.png new file mode 100644 index 0000000000000000000000000000000000000000..724af920803f612c3ceab26f441fd2964cbc650f Binary files /dev/null and b/_images/source_Tutorial_static_analysis_20_0.png differ diff --git a/_images/source_Tutorial_static_analysis_22_0.png b/_images/source_Tutorial_static_analysis_22_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7b22014b836cef26eb8daeece79db3ef7d4315 Binary files /dev/null and b/_images/source_Tutorial_static_analysis_22_0.png differ diff --git a/_sources/source/API/Core/operator.rst.txt b/_sources/source/API/Core/operator.rst.txt index e7ba01a39b2d85e1d953ea361aca81e445eb6c45..0867a8873db8e7c98266be53e808b3e36d3ed854 100644 --- a/_sources/source/API/Core/operator.rst.txt +++ b/_sources/source/API/Core/operator.rst.txt @@ -150,7 +150,7 @@ Average Pooling .. tab-item:: C++ :sync: cpp - .. doxygenfunction:: Aidge::AvgPooling(const std::array<DimSize_t, DIM> &kernel_dims, const std::string& name = "", const std::array<DimSize_t, DIM> &stride_dims = create_array<DimSize_t,DIM>(1), const std::array<DimSize_t, DIM> &dilations = create_array<DimSize_t,DIM>(1), bool ceil_mode=false) + .. doxygenfunction:: Aidge::AvgPooling(const std::array<DimSize_t, DIM> &kernel_dims, const std::string& name = "", const std::array<DimSize_t, DIM> &stride_dims = create_array<DimSize_t,DIM>(1), const std::array<DimSize_t, DIM> &dilations = create_array<DimSize_t,DIM>(1), bool ceil_mode=false, RoundingMode roundingMode = RoundingMode::HalfAwayFromZero) BatchNorm @@ -564,22 +564,6 @@ Reshape .. doxygenfunction:: Aidge::Reshape -Scaling -~~~~~~~ - -.. tab-set:: - :sync-group: language - - .. tab-item:: Python - :sync: python - - Not available yet ! - - .. tab-item:: C++ - :sync: cpp - - .. doxygenfunction:: Aidge::Scaling - Sigmoid ~~~~~~~ diff --git a/_sources/source/Tutorial/backend_cuda.nblink.txt b/_sources/source/Tutorial/backend_cuda.nblink.txt new file mode 100644 index 0000000000000000000000000000000000000000..d457654a050aec458b38f8cb14542bbe6ebda12e --- /dev/null +++ b/_sources/source/Tutorial/backend_cuda.nblink.txt @@ -0,0 +1,3 @@ +{ + "path": "../../../examples/tutorials/Backend_cuda_tutorial/Backend_cuda.ipynb" +} \ No newline at end of file diff --git a/_sources/source/Tutorial/export_cpp_add_impl.nblink.txt b/_sources/source/Tutorial/export_cpp_add_impl.nblink.txt new file mode 100644 index 0000000000000000000000000000000000000000..a0a53e7eb63c4d592182e175e8900adcc78db987 --- /dev/null +++ b/_sources/source/Tutorial/export_cpp_add_impl.nblink.txt @@ -0,0 +1,3 @@ +{ + "path": "../../../examples/tutorials/export/aidge_to_cpp/add_custom_operator/add_custom_operator.ipynb" +} \ No newline at end of file diff --git a/_sources/source/Tutorial/export_cpp_quant.nblink.txt b/_sources/source/Tutorial/export_cpp_quant.nblink.txt new file mode 100644 index 0000000000000000000000000000000000000000..3d316e30649f09d27a9d3e958d1757c575907022 --- /dev/null +++ b/_sources/source/Tutorial/export_cpp_quant.nblink.txt @@ -0,0 +1,3 @@ +{ + "path": "../../../examples/tutorials/export/aidge_to_cpp/export_LeNet/export_lenet_int8.ipynb" +} \ No newline at end of file diff --git a/_sources/source/Tutorial/export_stm32.nblink.txt b/_sources/source/Tutorial/export_stm32.nblink.txt new file mode 100644 index 0000000000000000000000000000000000000000..ca8c663986f09bac8008b6ed63de7e81df51d4ac --- /dev/null +++ b/_sources/source/Tutorial/export_stm32.nblink.txt @@ -0,0 +1,4 @@ + +{ + "path": "../../../examples/tutorials/export/aidge_to_STM32/export_LeNet/export_lenet_fp32.ipynb" +} \ No newline at end of file diff --git a/_sources/source/Tutorial/export_trt.nblink.txt b/_sources/source/Tutorial/export_trt.nblink.txt new file mode 100644 index 0000000000000000000000000000000000000000..e1c4e64d2b4252c4ff51a7257dcc834e18a67e76 --- /dev/null +++ b/_sources/source/Tutorial/export_trt.nblink.txt @@ -0,0 +1,6 @@ +{ + "path": "../../../examples/tutorials/TRT_Quantization_tutorial/tuto.ipynb", + "extra-media": [ + "../../../examples/tutorials/TRT_Quantization_tutorial/static/" + ] +} \ No newline at end of file diff --git a/_sources/source/Tutorial/index.rst.txt b/_sources/source/Tutorial/index.rst.txt index 9fa153c66e58fbc85942e41828ac71b0e2f0d64a..7d5bee76def1868499db910a3b4ff1780b9769ad 100644 --- a/_sources/source/Tutorial/index.rst.txt +++ b/_sources/source/Tutorial/index.rst.txt @@ -1,8 +1,8 @@ Tutorials ========= -Aidge 101 ---------- + +If you encounter any difficulty with the Tutorials, please create an issue `here <https://gitlab.eclipse.org/groups/eclipse/aidge/-/issues>`_. To get started with Aidge, please follow the Aidge demonstration tutorial. This tutorial demonstrates the basic features of the Aidge Framework, importing an ONNX, transforming a neural network graph, performing inference and a cpp export. @@ -11,13 +11,8 @@ This tutorial demonstrates the basic features of the Aidge Framework, importing 101_first_step.nblink -Aidge DNN fonctionnalities --------------------------- - -- Manipulating databases and creating batches of data -- Train a Deep Neural Network -- Provide an operator implementation using Python or meta-operators -- Perform advanced graph matching with the Graph Regular Expression tool +🛠Aidge functionalities +------------------------ .. nbgallery:: database.nblink @@ -25,33 +20,31 @@ Aidge DNN fonctionnalities scheduling.nblink learning.nblink ONNX.nblink + static_analysis.nblink + backend_cuda.nblink -DNN Optimization ----------------- - -- Perform post Training Quantization -- Perform Convolution tiling +âš™ï¸ Optimization tutorials +------------------------- .. nbgallery:: ptq.nblink tiling.nblink -DNN export ----------- +🚀 Export tutorials +-------------------- .. nbgallery:: export_cpp.nblink + export_cpp_quant.nblink + export_cpp_add_impl.nblink + export_trt.nblink + export_stm32.nblink -- `Exercise on adding a custom implementation for a cpp export <https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/export/aidge_to_cpp/add_custom_operator/add_custom_operator.ipynb?ref_type=heads>`_ -- `Export your DNN with TensorRT <https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/TRT_Quantization_tutorial/tuto.ipynb?ref_type=heads>`_ -- `Export your DNN for an STM32 <https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/export/aidge_to_STM32/export_LeNet/export_lenet_fp32.ipynb?ref_type=heads>`_ - -Tutorial on adding the C++ Aidge --------------------------------- +.. Tutorial on adding the C++ Aidge +.. -------------------------------- -You can extend our operator coverage by adding an operator and its implementation in the C++ Aidge library. -The `Add an operator and its implementation Tutorial <https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/Hardmax_operator/operator_adding.ipynb?ref_type=heads>`_ details the steps to follow. +.. You can extend our operator coverage by adding an operator and its implementation in the C++ Aidge library. +.. The `Add an operator and its implementation Tutorial <https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/Hardmax_operator/operator_adding.ipynb?ref_type=heads>`_ details the steps to follow. -For more information on contributing to Aidge, please refer to the `wiki <https://gitlab.eclipse.org/groups/eclipse/aidge/-/wikis/Contributing>`_. +.. For more information on contributing to Aidge, please refer to the `wiki <https://gitlab.eclipse.org/groups/eclipse/aidge/-/wikis/Contributing>`_. -If you encounter any difficulty with the Tutorials, please create an issue `here <https://gitlab.eclipse.org/groups/eclipse/aidge/-/issues>`_. diff --git a/_sources/source/Tutorial/static_analysis.nblink.txt b/_sources/source/Tutorial/static_analysis.nblink.txt new file mode 100644 index 0000000000000000000000000000000000000000..63144992471d8d1b4b12e86bbe24ac849cec81eb --- /dev/null +++ b/_sources/source/Tutorial/static_analysis.nblink.txt @@ -0,0 +1,7 @@ +{ + "path": "../../../examples/tutorials/analysis/dinov2.ipynb", + "extra-media": [ + "../../../examples/tutorials/analysis/static/" + ] + +} \ No newline at end of file diff --git a/_static/Tuto101.PNG b/_static/Tuto101.PNG new file mode 100644 index 0000000000000000000000000000000000000000..84bd1199f3f3ff8e1d6ac768047e80dc7c7caaff Binary files /dev/null and b/_static/Tuto101.PNG differ diff --git a/_static/TutoDatabase.PNG b/_static/TutoDatabase.PNG new file mode 100644 index 0000000000000000000000000000000000000000..3384244f425826eadea425b956737b7d563f45ee Binary files /dev/null and b/_static/TutoDatabase.PNG differ diff --git a/_static/TutoExport101.PNG b/_static/TutoExport101.PNG new file mode 100644 index 0000000000000000000000000000000000000000..fef08dd9ee1cb5ebbb9f0a0aa3688d141ac1de32 Binary files /dev/null and b/_static/TutoExport101.PNG differ diff --git a/_static/TutoExportCpp.PNG b/_static/TutoExportCpp.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e474e6b2be1c207f14cd1251947755a7d7c92c3c Binary files /dev/null and b/_static/TutoExportCpp.PNG differ diff --git a/_static/TutoExportSTM32.PNG b/_static/TutoExportSTM32.PNG new file mode 100644 index 0000000000000000000000000000000000000000..091a9550a1c377f930fb41260f2cc06873a75b0f Binary files /dev/null and b/_static/TutoExportSTM32.PNG differ diff --git a/_static/TutoExportTRT.PNG b/_static/TutoExportTRT.PNG new file mode 100644 index 0000000000000000000000000000000000000000..066dceeb4b7aca2f2022b40d30b82a02ff3a351c Binary files /dev/null and b/_static/TutoExportTRT.PNG differ diff --git a/_static/TutoGraphMatching.PNG b/_static/TutoGraphMatching.PNG new file mode 100644 index 0000000000000000000000000000000000000000..fee3b896c2c65da93b9f883d3cb3307d378395e2 Binary files /dev/null and b/_static/TutoGraphMatching.PNG differ diff --git a/_static/TutoLearning.PNG b/_static/TutoLearning.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2815e428b94a4a6f77625f00682337c2bbb823f3 Binary files /dev/null and b/_static/TutoLearning.PNG differ diff --git a/_static/TutoONNX.PNG b/_static/TutoONNX.PNG new file mode 100644 index 0000000000000000000000000000000000000000..91da28ec5de5c3ba7194221ff6fd5d4dc92964f7 Binary files /dev/null and b/_static/TutoONNX.PNG differ diff --git a/_static/TutoPTQ.png b/_static/TutoPTQ.png new file mode 100644 index 0000000000000000000000000000000000000000..c591aef1e41b09a0f79fa1d18311de1b4d8fcf7a Binary files /dev/null and b/_static/TutoPTQ.png differ diff --git a/_static/TutoScheduling.PNG b/_static/TutoScheduling.PNG new file mode 100644 index 0000000000000000000000000000000000000000..259be16229813c792cff0f257d83fdbebedd5113 Binary files /dev/null and b/_static/TutoScheduling.PNG differ diff --git a/genindex.html b/genindex.html index d470e472a11182d7d15fad930ef402b81bed81de..5bc79ae9d51a81c074c582439b5e9f1dbe1d7d89 100644 --- a/genindex.html +++ b/genindex.html @@ -65,7 +65,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="search" title="Search" href="search.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -451,7 +451,7 @@ window.addEventListener("load", () => mermaid.run()); </li> <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge3AddERKNSt6stringE">Aidge::Add (C++ function)</a> </li> - <li><a href="source/API/Core/operator.html#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb">Aidge::AvgPooling (C++ function)</a> + <li><a href="source/API/Core/operator.html#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode">Aidge::AvgPooling (C++ function)</a> </li> <li><a href="source/API/Core/operator.html#_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE">Aidge::BatchNorm (C++ function)</a> </li> @@ -519,7 +519,7 @@ window.addEventListener("load", () => mermaid.run()); </li> <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge3ErfERKNSt6stringE">Aidge::Erf (C++ function)</a> </li> - <li><a href="source/API/Core/recipes.html#_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb">Aidge::expandMetaOps (C++ function)</a> + <li><a href="source/API/Core/recipes.html#_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb">Aidge::expandMetaOps (C++ function)</a> </li> <li><a href="source/API/Core/recipes.html#_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE">Aidge::explicitCastMove (C++ function)</a> </li> @@ -832,8 +832,6 @@ window.addEventListener("load", () => mermaid.run()); <li><a href="source/API/Core/operator.html#_CPPv4NK5Aidge8Operator20getAvailableBackendsEv">Aidge::Operator::getAvailableBackends (C++ function)</a> </li> <li><a href="source/API/Core/operator.html#_CPPv4NK5Aidge8Operator7getImplEv">Aidge::Operator::getImpl (C++ function)</a> -</li> - <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge8Operator13getInputsNameEv">Aidge::Operator::getInputsName (C++ function)</a> </li> <li><a href="source/API/Core/operator.html#_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t">Aidge::Operator::getNbConsumedData (C++ function)</a> </li> @@ -842,8 +840,6 @@ window.addEventListener("load", () => mermaid.run()); <li><a href="source/API/Core/operator.html#_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t">Aidge::Operator::getNbRequiredData (C++ function)</a> </li> <li><a href="source/API/Core/operator.html#_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t">Aidge::Operator::getNbRequiredProtected (C++ function)</a> -</li> - <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge8Operator14getOutputsNameEv">Aidge::Operator::getOutputsName (C++ function)</a> </li> <li><a href="source/API/Core/operator.html#_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t">Aidge::Operator::getRawInput (C++ function)</a> </li> @@ -963,7 +959,7 @@ window.addEventListener("load", () => mermaid.run()); </li> <li><a href="source/API/Core/operator.html#_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb">Aidge::Producer (C++ function)</a>, <a href="source/API/Core/operator.html#_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb">[1]</a> </li> - <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE">Aidge::ReduceMean (C++ function)</a> + <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE">Aidge::ReduceMean (C++ function)</a> </li> <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge4ReLUERKNSt6stringE">Aidge::ReLU (C++ function)</a> </li> @@ -974,8 +970,6 @@ window.addEventListener("load", () => mermaid.run()); <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE">Aidge::Reshape (C++ function)</a> </li> <li><a href="source/API/Core/graph.html#_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE">Aidge::Residual (C++ function)</a> -</li> - <li><a href="source/API/Core/operator.html#_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE">Aidge::Scaling (C++ function)</a> </li> <li><a href="source/API/Core/scheduler.html#_CPPv4N5Aidge9SchedulerE">Aidge::Scheduler (C++ class)</a> </li> @@ -1305,7 +1299,7 @@ window.addEventListener("load", () => mermaid.run()); </li> <li><a href="source/API/Core/data.html#_CPPv4NK5Aidge6Tensor7stridesEv">Aidge::Tensor::strides (C++ function)</a> </li> - <li><a href="source/API/Core/data.html#_CPPv4I00EN5Aidge6Tensor6TensorE1T">Aidge::Tensor::Tensor (C++ function)</a>, <a href="source/API/Core/data.html#_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE">[1]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E">[2]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E">[3]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E">[4]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E">[5]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat">[6]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorERK6Tensor">[7]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE">[8]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorERR6Tensor">[9]</a> + <li><a href="source/API/Core/data.html#_CPPv4I00EN5Aidge6Tensor6TensorE1T">Aidge::Tensor::Tensor (C++ function)</a>, <a href="source/API/Core/data.html#_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE">[1]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E">[2]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E">[3]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E">[4]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E">[5]</a>, <a href="source/API/Core/data.html#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E">[6]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat">[7]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorERK6Tensor">[8]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE">[9]</a>, <a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor6TensorERR6Tensor">[10]</a> </li> <li><a href="source/API/Core/data.html#_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE">Aidge::Tensor::toCoord (C++ function)</a> </li> @@ -2036,6 +2030,10 @@ window.addEventListener("load", () => mermaid.run()); <li><a href="source/API/Core/data.html#aidge_core.Tensor.sqrt">sqrt() (aidge_core.Tensor method)</a> </li> <li><a href="source/API/Core/operator.html#aidge_core.Sqrt">Sqrt() (in module aidge_core)</a> +</li> + <li><a href="source/API/Core/data.html#aidge_core.Tensor.stride">stride() (aidge_core.Tensor method)</a> +</li> + <li><a href="source/API/Core/data.html#aidge_core.Tensor.strides">strides() (aidge_core.Tensor method)</a> </li> <li><a href="source/API/Core/operator.html#aidge_core.Sub">Sub() (in module aidge_core)</a> </li> diff --git a/index.html b/index.html index 6d7c109b42d641ad188eca0b37c824a003292209..eaeea425e784795e743b31f3814aa9adf0af6007 100644 --- a/index.html +++ b/index.html @@ -61,7 +61,7 @@ <link rel="next" title="Get Started" href="source/GetStarted/index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -360,10 +360,10 @@ <h1>Aidge<a class="headerlink" href="#aidge" title="Link to this heading">#</a></h1> <dl class="field-list simple"> <dt class="field-odd">Release<span class="colon">:</span></dt> -<dd class="field-odd"><p>0.6.0</p> +<dd class="field-odd"><p>0.6.1</p> </dd> <dt class="field-even">Date<span class="colon">:</span></dt> -<dd class="field-even"><p>May 11, 2025</p> +<dd class="field-even"><p>May 19, 2025</p> </dd> </dl> <div class="sd-container-fluid sd-sphinx-override sd-mt-4 sd-mb-4 sd-ml-0 sd-mr-0 docutils"> diff --git a/objects.inv b/objects.inv index 5bbbd5e1b311251b9eb12c3b826a377e05357465..9acbc50b8a3eb705773f299eeb65ff87fae297a1 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/search.html b/search.html index 394238eb2a1b86a013ef3ed8d6ffb89c4edf1b26..e74236366cc0600fc9bdf0cdb089cf0bcb1c94a8 100644 --- a/search.html +++ b/search.html @@ -67,7 +67,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="search" title="Search" href="#" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/searchindex.js b/searchindex.js index 63718642e2b11eef17ead0d037fb293ee3f29697..8e40a0d3cc0086660e7aeea713083d779d152f63 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"(Optional) Generate an input file for tests": [[19, "(Optional)-Generate-an-input-file-for-tests"]], "(if needed) Download the model": [[19, "(if-needed)-Download-the-model"], [26, "(if-needed)-Download-the-model"]], "API": [[14, null]], "Adapt to backend": [[10, "adapt-to-backend"]], "Add": [[9, "add"]], "Add extra files to complete the export": [[34, "add-extra-files-to-complete-the-export"]], "Advanced usage": [[23, "Advanced-usage"]], "Aggregate KPI from a subgraph": [[42, "aggregate-kpi-from-a-subgraph"]], "Aidge": [[0, null]], "Aidge 101": [[24, "aidge-101"]], "Aidge DNN fonctionnalities": [[24, "aidge-dnn-fonctionnalities"]], "Aidge Export TensorRT API": [[12, null]], "Aidge ONNX API": [[13, null]], "Aidge ONNX tutorial": [[20, null]], "Aidge backend CPU": [[1, null]], "Aidge backend OpenCV API": [[2, null]], "Aidge core API": [[8, null]], "Aidge database": [[25, "Aidge-database"]], "Aidge demonstration": [[19, null]], "Aidge tiling demonstration": [[28, null]], "Applying the PTQ to the model \u2026": [[26, "Applying-the-PTQ-to-the-model-..."]], "Average Pooling": [[9, "average-pooling"]], "Backend": [[3, null]], "Base Matching Rules": [[23, "Base-Matching-Rules"]], "BatchNorm": [[9, "batchnorm"]], "Benchmark neural network model": [[30, null]], "Build on Linux": [[16, "build-on-linux"]], "C++ Compilation": [[16, "c-compilation"]], "Cast": [[9, "cast"]], "Change topology (model isomorphism)": [[41, "change-topology-model-isomorphism"]], "Clone a graph": [[40, "clone-a-graph"]], "Compilation options": [[16, "compilation-options"]], "Compile the export": [[19, "Compile-the-export"]], "Compile the export and test it": [[22, "Compile-the-export-and-test-it"]], "Computational footprint": [[42, "computational-footprint"]], "Computational graph": [[40, null]], "Compute score metrics": [[30, "compute-score-metrics"]], "Computing output dimensions": [[20, "Computing-output-dimensions"]], "Computing the model accuracy \u2026": [[26, "Computing-the-model-accuracy-..."]], "Computing the quantized accuracy \u2026": [[26, "Computing-the-quantized-accuracy-..."]], "Concat": [[9, "concat"]], "Conditional nodes scheduling": [[27, "Conditional-nodes-scheduling"]], "Configure the model for inference": [[19, "Configure-the-model-for-inference"]], "Connector": [[6, "connector"]], "Constant folding": [[10, "constant-folding"]], "Conv": [[9, "conv"]], "ConvDepthWise": [[9, "convdepthwise"]], "Convert Conv to MatMul": [[10, "convert-conv-to-matmul"]], "Converters Aidge to ONNX": [[13, "converters-aidge-to-onnx"]], "Converters ONNX to Aidge": [[13, "converters-onnx-to-aidge"]], "Core": [[29, "core"]], "Core operator": [[40, "core-operator"]], "Create a dataflow pipelining": [[27, "Create-a-dataflow-pipelining"]], "Create a scheduler and run inference": [[19, "Create-a-scheduler-and-run-inference"]], "Create an input tensor": [[19, "Create-an-input-tensor"]], "Creating Aidge model": [[25, "Creating-Aidge-model"]], "Creating a MetaNode": [[20, "Creating-a-MetaNode"]], "DNN Optimization": [[24, "dnn-optimization"]], "DNN export": [[24, "dnn-export"]], "Data": [[4, null], [31, null]], "Data Structure": [[31, "data-structure"]], "Data partitioning": [[31, "data-partitioning"]], "DataProvider": [[4, "dataprovider"], [31, "dataprovider"]], "Database": [[4, "database"], [31, "database"]], "Database MNIST": [[21, null]], "Databases": [[2, "databases"]], "Default scheduler": [[33, "default-scheduler"]], "Define mermaid visualizer function": [[28, "Define-mermaid-visualizer-function"]], "Definition": [[40, "definition"]], "Describe graph patterns": [[43, "describe-graph-patterns"]], "Design and export the computation kernels": [[34, "design-and-export-the-computation-kernels"]], "Direct tensors produce whole data only once": [[27, "Direct-tensors-produce-whole-data-only-once"]], "Div": [[9, "div"]], "Doing the PTQ with AIDGE": [[26, "Doing-the-PTQ-with-AIDGE"]], "Download the model": [[22, "Download-the-model"]], "Draw your own number": [[22, "Draw-your-own-number"]], "Ensure robustness": [[32, null]], "Environment setup \u2026": [[26, "Environment-setup-..."]], "Erf": [[9, "erf"]], "Example of Operator": [[40, "example-of-operator"]], "Examples": [[6, "examples"]], "Expand meta operators": [[10, "expand-meta-operators"]], "Expand operator": [[43, "expand-operator"]], "Expansion": [[23, "Expansion"]], "Explicit Cast Move": [[10, "explicit-cast-move"]], "Explicit Transpose": [[10, "explicit-transpose"]], "Explicit syntax": [[40, "explicit-syntax"]], "Export": [[5, null], [13, "export"], [19, "Export"]], "Export a MNIST model to a CPP standalone project": [[22, null]], "Export function": [[12, "export-function"]], "Export implementation phase": [[34, "export-implementation-phase"]], "Export lib": [[5, "export-lib"]], "Export mapping phase": [[34, "export-mapping-phase"]], "Export node": [[5, "export-node"]], "Export scheduler": [[5, "export-scheduler"]], "Export strategy": [[34, "export-strategy"]], "Export the attributes of the nodes": [[34, "export-the-attributes-of-the-nodes"]], "Export the model": [[22, "Export-the-model"]], "Export the parameters of the model": [[34, "export-the-parameters-of-the-model"]], "Export the scheduling of the graph": [[34, "export-the-scheduling-of-the-graph"]], "Export to an integrated kernel library": [[34, "export-to-an-integrated-kernel-library"]], "FC": [[9, "fc"]], "Factorization": [[23, "Factorization"]], "Framework architecture": [[29, null]], "Functional syntax": [[40, "functional-syntax"]], "Fuse BatchNorm": [[10, "fuse-batchnorm"]], "Fuse MatMul & added": [[41, "fuse-matmul-added"]], "Fuse MatMul and Add to FC": [[10, "fuse-matmul-and-add-to-fc"]], "Fuse to meta operator": [[10, "fuse-to-meta-operator"]], "Gather": [[9, "gather"]], "Generate an export in C++": [[19, "Generate-an-export-in-C++"]], "Generate inputs for testing the model from your drawing": [[22, "Generate-inputs-for-testing-the-model-from-your-drawing"]], "Generate main file": [[19, "Generate-main-file"]], "Generic Operator": [[9, "generic-operator"]], "Generic hardware model and mapping heuristics": [[18, "generic-hardware-model-and-mapping-heuristics"]], "Generic operator": [[40, "generic-operator"]], "Generic, compiler-agnostic tiling methods": [[18, "generic-compiler-agnostic-tiling-methods"]], "Get Started": [[15, null]], "Get node KPI": [[42, "get-node-kpi"]], "Graph": [[6, null]], "Graph Matching": [[7, null], [43, "graph-matching"]], "Graph Regex": [[43, "graph-regex"]], "Graph Regex Lexer": [[43, "graph-regex-lexer"]], "Graph Regex Parser": [[43, "graph-regex-parser"]], "Graph View": [[40, "graph-view"]], "Graph functions": [[12, "graph-functions"]], "Graph helpers": [[6, "graph-helpers"]], "Graph manipulation": [[23, "Graph-manipulation"]], "Graph matching": [[23, "Graph-matching"]], "Graph matching and manipulation with Aidge": [[23, null]], "Graph transformation": [[19, "Graph-transformation"], [43, "graph-transformation"]], "GraphView": [[6, "graphview"]], "High level functionalities": [[35, "high-level-functionalities"]], "Identity": [[9, "identity"]], "Implementation of an operator": [[40, "implementation-of-an-operator"]], "Implementation selection": [[33, "implementation-selection"]], "Implementation specification": [[3, "implementation-specification"]], "Implementations & Backends": [[29, "implementations-backends"]], "Implementations and backends": [[33, "implementations-and-backends"]], "Import": [[13, "import"]], "Import Aidge": [[19, "Import-Aidge"]], "Importing an ONNX": [[20, "Importing-an-ONNX"]], "Importing the model in AIDGE \u2026": [[26, "Importing-the-model-in-AIDGE-..."]], "Inference": [[19, "Inference"]], "Input/Output specification": [[3, "input-output-specification"]], "Install": [[16, null]], "Install Python": [[16, "install-python"]], "Installation and Requirements": [[21, "Installation-and-Requirements"]], "Introduction": [[40, "introduction"]], "Keras Tensor interoperability": [[36, "keras-tensor-interoperability"]], "Keras interoperability": [[36, "keras-interoperability"]], "Keras model interoperability": [[36, "keras-model-interoperability"]], "LSTM": [[9, "lstm"]], "LeakyReLU": [[9, "leakyrelu"]], "Learn model": [[38, null]], "Learn on edge": [[37, null]], "License": [[0, "license"]], "Load and store model": [[39, null]], "Load model from ONNX": [[39, "load-model-from-onnx"]], "Load the model in Aidge and manipulate it": [[22, "Load-the-model-in-Aidge-and-manipulate-it"]], "MAKE Options": [[12, "make-options"]], "MNIST": [[2, "mnist"]], "Make a deep copy": [[40, "make-a-deep-copy"]], "Make a deep copy with shared parameters": [[40, "make-a-deep-copy-with-shared-parameters"]], "Master the C-P model": [[27, "Master-the-C-P-model"]], "MatMul": [[9, "matmul"]], "MatMul tiling": [[10, "matmul-tiling"]], "Match alternative blocks": [[23, "Match-alternative-blocks"]], "Match any node type": [[23, "Match-any-node-type"]], "Match node attributes with a lambda function": [[23, "Match-node-attributes-with-a-lambda-function"]], "Match parallel blocks": [[23, "Match-parallel-blocks"]], "Match solver": [[43, "match-solver"]], "Match the first / last node of some type": [[23, "Match-the-first-/-last-node-of-some-type"]], "Match \u201cno edge\u201d": [[23, "Match-%22no-edge%22"]], "Measure excution time": [[30, "measure-excution-time"]], "Memorize": [[9, "memorize"]], "Memory footprint": [[42, "memory-footprint"]], "Meta Operator": [[9, "meta-operator"]], "MetaNode": [[43, "metanode"]], "Model hardware & architecture rules": [[34, "model-hardware-architecture-rules"]], "Move": [[9, "move"]], "Mul": [[9, "mul"]], "Multi-layer spatial tiling": [[41, "multi-layer-spatial-tiling"]], "Node": [[6, "node"], [40, "node"]], "Node Regex": [[43, "node-regex"]], "Node Regex Interpreter": [[43, "node-regex-interpreter"]], "Node Regex Lexer": [[43, "node-regex-lexer"]], "Node Regex Parser": [[43, "node-regex-parser"]], "Note": [[6, "note"]], "Numpy interoperability": [[36, "numpy-interoperability"]], "ONNX": [[39, "onnx"]], "ONNX Import": [[19, "ONNX-Import"]], "Operator": [[40, "operator"]], "Operator base class": [[9, "operator-base-class"]], "OperatorTensor base class": [[9, "operatortensor-base-class"]], "Operators": [[9, null], [40, "operators"]], "Optimize graph": [[41, null]], "Optimize network": [[19, "Optimize-network"]], "Overview": [[30, "overview"], [42, "overview"], [43, "overview"]], "Pad": [[9, "pad"]], "PaddedAvgPooling": [[9, "paddedavgpooling"]], "PaddedConv": [[9, "paddedconv"]], "PaddedConvDepthWise": [[9, "paddedconvdepthwise"]], "PaddedMaxPooling": [[9, "paddedmaxpooling"]], "Parallel scheduler": [[11, "parallel-scheduler"]], "Parameters": [[6, "parameters"]], "Perform an evaluation of the LeNet-like on Aidge": [[21, "Perform-an-evaluation-of-the-LeNet-like-on-Aidge"]], "Perform an export": [[34, null]], "Plateform interoperability": [[36, null]], "Plugin Operator": [[40, "plugin-operator"]], "Plugin helper": [[12, "plugin-helper"]], "Plugins": [[29, "plugins"]], "Pop": [[9, "pop"]], "Post Training Quantization with AIDGE": [[26, null]], "Pow": [[9, "pow"]], "Powerful graph search & replace engine": [[18, "powerful-graph-search-replace-engine"]], "Predefined meta-operators": [[9, "predefined-meta-operators"]], "Predefined operators": [[9, "predefined-operators"]], "Producer": [[9, "producer"], [40, "producer"]], "Producers produce whole tensor data on demand": [[27, "Producers-produce-whole-tensor-data-on-demand"]], "Project constraints": [[34, "project-constraints"]], "Proposed implementation": [[41, "proposed-implementation"]], "Providing an implementation": [[20, "Providing-an-implementation"]], "PyTorch interoperability": [[36, "pytorch-interoperability"]], "PyTorch model interoperability": [[36, "pytorch-model-interoperability"]], "PyTorch tensor interoperability": [[36, "pytorch-tensor-interoperability"]], "Quantifiers": [[23, "Quantifiers"]], "Quantization dataset creation \u2026": [[26, "Quantization-dataset-creation-..."]], "Quick Start": [[17, null]], "ReLU": [[9, "relu"]], "Recipes": [[10, null]], "ReduceMean": [[9, "reducemean"]], "Register export functions": [[13, "register-export-functions"]], "Register import functions": [[13, "register-import-functions"]], "Registering new node import": [[20, "Registering-new-node-import"]], "Remove Dropout": [[10, "remove-dropout"]], "Remove Flatten": [[10, "remove-flatten"]], "Remove nodes": [[23, "Remove-nodes"]], "Remove operator": [[43, "remove-operator"]], "Replace nodes": [[23, "Replace-nodes"]], "Replace operator": [[43, "replace-operator"]], "Reset the C-P model": [[27, "Reset-the-C-P-model"]], "Reshape": [[9, "reshape"]], "Retrieve the onnx model": [[20, "Retrieve-the-onnx-model"]], "Returns": [[6, "returns"]], "Run the export": [[19, "Run-the-export"]], "Running some example inferences \u2026": [[26, "Running-some-example-inferences-..."]], "Running some quantized inferences \u2026": [[26, "Running-some-quantized-inferences-..."]], "Runtime graph execution": [[33, null]], "Scaling": [[9, "scaling"]], "Scheduler": [[11, null], [33, "scheduler"], [34, "scheduler"]], "Scheduler base class": [[11, "scheduler-base-class"]], "Seamless interoperability with ONNX, PyTorch and TensorFlow": [[18, "seamless-interoperability-with-onnx-pytorch-and-tensorflow"]], "Sequential scheduler": [[11, "sequential-scheduler"]], "Set up learning objects": [[25, "Set-up-learning-objects"]], "Setting up the AIDGE scheduler \u2026": [[26, "Setting-up-the-AIDGE-scheduler-..."]], "Setting up the notebook": [[19, "Setting-up-the-notebook"], [20, "Setting-up-the-notebook"]], "Sigmoid": [[9, "sigmoid"]], "Simple and effective code generation engine": [[18, "simple-and-effective-code-generation-engine"]], "Slice": [[9, "slice"]], "Softmax": [[9, "softmax"]], "Specifiyng Edges": [[23, "Specifiyng-Edges"]], "Sqrt": [[9, "sqrt"]], "State machine": [[43, "state-machine"]], "Static analysis": [[19, "Static-analysis"], [42, null]], "Stimuli": [[31, "stimuli"]], "Sub": [[9, "sub"]], "Syntax to create a computational graph": [[40, "syntax-to-create-a-computational-graph"]], "Tanh": [[9, "tanh"]], "Tensor": [[4, "tensor"], [31, "tensor"]], "The Quantization Pipeline": [[26, "The-Quantization-Pipeline"]], "Tiling": [[41, "tiling"]], "Training a simple Neural Network": [[25, null]], "Training loop": [[25, "Training-loop"]], "Transform graph": [[43, null]], "Transformation functions": [[43, "transformation-functions"]], "Transmitter": [[40, "transmitter"]], "Transpose": [[9, "transpose"]], "Tutorial on adding the C++ Aidge": [[24, "tutorial-on-adding-the-c-aidge"]], "Tutorials": [[24, null]], "UTILS": [[2, "utils"]], "Understanding Aidge\u2019s scheduling": [[27, null]], "Updating ONNX import": [[20, "Updating-ONNX-import"]], "User Guide": [[35, null]], "Well-characterized, state-of-the-art PTQ and QAT methods": [[18, "well-characterized-state-of-the-art-ptq-and-qat-methods"]], "Well-defined consumer-producer model and scheduling": [[18, "well-defined-consumer-producer-model-and-scheduling"]], "Well-defined dataflow graph IR model": [[18, "well-defined-dataflow-graph-ir-model"]], "What is Aidge?": [[0, "what-is-aidge"]], "What is Network Quantization ?": [[26, "What-is-Network-Quantization-?"]], "Why Aidge?": [[18, null]], "Work is done !": [[26, "Work-is-done-!"]], "Workflow overview": [[35, "workflow-overview"]], "Working with generic operator": [[20, "Working-with-generic-operator"]]}, "docnames": ["index", "source/API/BackendCPU/index", "source/API/BackendOPENCV/index", "source/API/Core/backend", "source/API/Core/data", "source/API/Core/export", "source/API/Core/graph", "source/API/Core/graphMatching", "source/API/Core/index", "source/API/Core/operator", "source/API/Core/recipes", "source/API/Core/scheduler", "source/API/ExportTensorRT/index", "source/API/Onnx/index", "source/API/index", "source/GetStarted/index", "source/GetStarted/install", "source/GetStarted/quickStart", "source/GetStarted/whyAidge", "source/Tutorial/101_first_step", "source/Tutorial/ONNX", "source/Tutorial/database", "source/Tutorial/export_cpp", "source/Tutorial/graph_matching", "source/Tutorial/index", "source/Tutorial/learning", "source/Tutorial/ptq", "source/Tutorial/scheduling", "source/Tutorial/tiling", "source/UserGuide/architecture", "source/UserGuide/benchmark", "source/UserGuide/data", "source/UserGuide/ensureRobustness", "source/UserGuide/executeGraph", "source/UserGuide/export", "source/UserGuide/index", "source/UserGuide/interoperability", "source/UserGuide/learnEdge", "source/UserGuide/learnModel", "source/UserGuide/loadStoreModel", "source/UserGuide/modelGraph", "source/UserGuide/optimizeGraph", "source/UserGuide/staticAnalysis", "source/UserGuide/transformGraph"], "envversion": {"nbsphinx": 4, "sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinxcontrib.bibtex": 9}, "filenames": ["index.rst", "source/API/BackendCPU/index.rst", "source/API/BackendOPENCV/index.rst", "source/API/Core/backend.rst", "source/API/Core/data.rst", "source/API/Core/export.rst", "source/API/Core/graph.rst", "source/API/Core/graphMatching.rst", "source/API/Core/index.rst", "source/API/Core/operator.rst", "source/API/Core/recipes.rst", "source/API/Core/scheduler.rst", "source/API/ExportTensorRT/index.rst", "source/API/Onnx/index.rst", "source/API/index.rst", "source/GetStarted/index.rst", "source/GetStarted/install.rst", "source/GetStarted/quickStart.rst", "source/GetStarted/whyAidge.rst", "source/Tutorial/101_first_step.nblink", "source/Tutorial/ONNX.nblink", "source/Tutorial/database.nblink", "source/Tutorial/export_cpp.nblink", "source/Tutorial/graph_matching.nblink", "source/Tutorial/index.rst", "source/Tutorial/learning.nblink", "source/Tutorial/ptq.nblink", "source/Tutorial/scheduling.nblink", "source/Tutorial/tiling.nblink", "source/UserGuide/architecture.rst", "source/UserGuide/benchmark.rst", "source/UserGuide/data.rst", "source/UserGuide/ensureRobustness.rst", "source/UserGuide/executeGraph.rst", "source/UserGuide/export.rst", "source/UserGuide/index.rst", "source/UserGuide/interoperability.rst", "source/UserGuide/learnEdge.rst", "source/UserGuide/learnModel.rst", "source/UserGuide/loadStoreModel.rst", "source/UserGuide/modelGraph.rst", "source/UserGuide/optimizeGraph.rst", "source/UserGuide/staticAnalysis.rst", "source/UserGuide/transformGraph.rst"], "indexentries": {"__init__() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.__init__", false]], "__init__() (aidge_core.connector method)": [[6, "aidge_core.Connector.__init__", false]], "__init__() (aidge_core.dataprovider method)": [[4, "aidge_core.DataProvider.__init__", false]], "__init__() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.__init__", false]], "__init__() (aidge_core.export_utils.exportnode method)": [[5, "aidge_core.export_utils.ExportNode.__init__", false]], "__init__() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.__init__", false]], "__init__() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.__init__", false]], "__init__() (aidge_core.implspec method)": [[3, "aidge_core.ImplSpec.__init__", false]], "__init__() (aidge_core.iospec method)": [[3, "aidge_core.IOSpec.__init__", false]], "__init__() (aidge_core.node method)": [[6, "aidge_core.Node.__init__", false]], "__init__() (aidge_core.operator method)": [[9, "aidge_core.Operator.__init__", false]], "__init__() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.__init__", false]], "__init__() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.__init__", false]], "__init__() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.__init__", false]], "__init__() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.__init__", false]], "__init__() (aidge_core.singlepassgraphmatching method)": [[7, "aidge_core.SinglePassGraphMatching.__init__", false]], "__init__() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.__init__", false]], "abs() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.abs", false]], "adapt_to_backend() (in module aidge_core)": [[10, "aidge_core.adapt_to_backend", false]], "add() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.add", false]], "add() (in module aidge_core)": [[9, "aidge_core.Add", false]], "add_child() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.add_child", false]], "add_child() (aidge_core.node method)": [[6, "aidge_core.Node.add_child", false]], "add_kernel_to_copy() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.add_kernel_to_copy", false]], "add_node_lambda() (aidge_core.singlepassgraphmatching method)": [[7, "aidge_core.SinglePassGraphMatching.add_node_lambda", false]], "add_ordered_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.add_ordered_outputs", false]], "aidge::adapttobackend (c++ function)": [[10, "_CPPv4N5Aidge14adaptToBackendENSt10shared_ptrI9GraphViewEE", false]], "aidge::add (c++ function)": [[9, "_CPPv4N5Aidge3AddERKNSt6stringE", false]], "aidge::avgpooling (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::batchnorm (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", false]], "aidge::cast (c++ function)": [[9, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", false]], "aidge::concat (c++ function)": [[9, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", false]], "aidge::connector (c++ class)": [[6, "_CPPv4N5Aidge9ConnectorE", false]], "aidge::connector::connector (c++ function)": [[6, "_CPPv4N5Aidge9Connector9ConnectorENSt10shared_ptrI4NodeEE", false], [6, "_CPPv4N5Aidge9Connector9ConnectorEv", false]], "aidge::connector::index (c++ function)": [[6, "_CPPv4NK5Aidge9Connector5indexEv", false]], "aidge::connector::node (c++ function)": [[6, "_CPPv4NK5Aidge9Connector4nodeEv", false]], "aidge::connector::operator[] (c++ function)": [[6, "_CPPv4NK5Aidge9ConnectorixE9IOIndex_t", false]], "aidge::connector::size (c++ function)": [[6, "_CPPv4NK5Aidge9Connector4sizeEv", false]], "aidge::connector::~connector (c++ function)": [[6, "_CPPv4N5Aidge9ConnectorD0Ev", false]], "aidge::constantfolding (c++ function)": [[10, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", false]], "aidge::conv (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::convdepthwise (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::convtomatmul (c++ function)": [[10, "_CPPv4N5Aidge12convToMatMulENSt10shared_ptrI9GraphViewEE", false]], "aidge::database (c++ class)": [[4, "_CPPv4N5Aidge8DatabaseE", false]], "aidge::database::database (c++ function)": [[4, "_CPPv4N5Aidge8Database8DatabaseEv", false]], "aidge::database::getitem (c++ function)": [[4, "_CPPv4NK5Aidge8Database7getItemEKNSt6size_tE", false]], "aidge::database::getlen (c++ function)": [[4, "_CPPv4NK5Aidge8Database6getLenEv", false]], "aidge::database::getnbmodalities (c++ function)": [[4, "_CPPv4NK5Aidge8Database15getNbModalitiesEv", false]], "aidge::database::~database (c++ function)": [[4, "_CPPv4N5Aidge8DatabaseD0Ev", false]], "aidge::dataprovider (c++ class)": [[4, "_CPPv4N5Aidge12DataProviderE", false]], "aidge::dataprovider::dataprovider (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", false]], "aidge::dataprovider::done (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider4doneEv", false]], "aidge::dataprovider::getindexbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider13getIndexBatchEv", false]], "aidge::dataprovider::getnbbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider10getNbBatchEv", false]], "aidge::dataprovider::incrementindexbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider19incrementIndexBatchEv", false]], "aidge::dataprovider::iter (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider4iterEv", false]], "aidge::dataprovider::next (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider4nextEv", false]], "aidge::dataprovider::readbatch (c++ function)": [[4, "_CPPv4NK5Aidge12DataProvider9readBatchEv", false]], "aidge::dataprovider::resetindexbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider15resetIndexBatchEv", false]], "aidge::dataprovider::setbatches (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider10setBatchesEv", false]], "aidge::div (c++ function)": [[9, "_CPPv4N5Aidge3DivERKNSt6stringE", false]], "aidge::erf (c++ function)": [[9, "_CPPv4N5Aidge3ErfERKNSt6stringE", false]], "aidge::expandmetaops (c++ function)": [[10, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb", false]], "aidge::explicitcastmove (c++ function)": [[10, "_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE", false]], "aidge::explicittranspose (c++ function)": [[10, "_CPPv4N5Aidge17explicitTransposeENSt10shared_ptrI9GraphViewEE", false]], "aidge::fc (c++ function)": [[9, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", false]], "aidge::fusebatchnorm (c++ function)": [[10, "_CPPv4N5Aidge13fuseBatchNormENSt10shared_ptrI9GraphViewEE", false]], "aidge::fusetometaops (c++ function)": [[10, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", false]], "aidge::gather (c++ function)": [[9, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", false]], "aidge::generategraph (c++ function)": [[6, "_CPPv4N5Aidge13generateGraphERKNSt6vectorI9ConnectorEE", false]], "aidge::genericoperator (c++ function)": [[9, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", false], [9, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", false]], "aidge::getconnectedgraphview (c++ function)": [[6, "_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE", false]], "aidge::graphview (c++ class)": [[6, "_CPPv4N5Aidge9GraphViewE", false]], "aidge::graphview::add (c++ function)": [[6, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", false], [6, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", false], [6, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", false], [6, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", false]], "aidge::graphview::addchild (c++ function)": [[6, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", false], [6, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", false], [6, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", false]], "aidge::graphview::addorderedoutputs (c++ function)": [[6, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", false]], "aidge::graphview::clone (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView5cloneEv", false]], "aidge::graphview::clonecallback (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView13cloneCallbackEPF7NodePtr7NodePtrE", false]], "aidge::graphview::clonesharedoperators (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView20cloneSharedOperatorsEv", false]], "aidge::graphview::clonesharedproducers (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView20cloneSharedProducersEv", false]], "aidge::graphview::compile (c++ function)": [[6, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", false]], "aidge::graphview::datainputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10dataInputsEKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView10dataInputsEv", false]], "aidge::graphview::forwarddims (c++ function)": [[6, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", false]], "aidge::graphview::forwarddtype (c++ function)": [[6, "_CPPv4N5Aidge9GraphView12forwardDTypeE8DataType", false], [6, "_CPPv4N5Aidge9GraphView12forwardDTypeERKNSt6vectorI8DataTypeEE", false]], "aidge::graphview::getchildren (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr", false], [6, "_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView11getChildrenEv", false]], "aidge::graphview::getnbfreedatainputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView19getNbFreeDataInputsEv", false]], "aidge::graphview::getnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE", false]], "aidge::graphview::getnodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView8getNodesEv", false]], "aidge::graphview::getorderedinputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView16getOrderedInputsEv", false]], "aidge::graphview::getorderednodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView15getOrderedNodesEb", false]], "aidge::graphview::getorderedoutputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView17getOrderedOutputsEv", false]], "aidge::graphview::getorderedparents (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView17getOrderedParentsEv", false]], "aidge::graphview::getparents (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10getParentsEKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView10getParentsEv", false]], "aidge::graphview::getrankednodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView14getRankedNodesEv", false]], "aidge::graphview::getrankednodesname (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", false]], "aidge::graphview::graphview (c++ function)": [[6, "_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE", false]], "aidge::graphview::inputnodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory", false]], "aidge::graphview::inputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView6inputsEv", false]], "aidge::graphview::insertparent (c++ function)": [[6, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", false]], "aidge::graphview::inview (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr", false], [6, "_CPPv4NK5Aidge9GraphView6inViewERKNSt6stringE", false]], "aidge::graphview::isinputnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr", false]], "aidge::graphview::isoutputnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr", false]], "aidge::graphview::link (c++ function)": [[6, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", false]], "aidge::graphview::logoutputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE", false]], "aidge::graphview::name (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView4nameEv", false]], "aidge::graphview::operator() (c++ function)": [[6, "_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE", false]], "aidge::graphview::operator== (c++ function)": [[6, "_CPPv4NK5Aidge9GraphVieweqERK9GraphView", false]], "aidge::graphview::operator[] (c++ function)": [[6, "_CPPv4NK5Aidge9GraphViewixERKNSt6stringE", false]], "aidge::graphview::outputnodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11outputNodesEv", false]], "aidge::graphview::outputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView7outputsERKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView7outputsEv", false]], "aidge::graphview::remove (c++ function)": [[6, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", false]], "aidge::graphview::replace (c++ function)": [[6, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", false], [6, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", false]], "aidge::graphview::rootnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView8rootNodeEv", false]], "aidge::graphview::save (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", false]], "aidge::graphview::setbackend (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", false]], "aidge::graphview::setdataformat (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat", false]], "aidge::graphview::setdatatype (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType", false]], "aidge::graphview::setinputid (c++ function)": [[6, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", false]], "aidge::graphview::setname (c++ function)": [[6, "_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE", false]], "aidge::graphview::setnodesname (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView12setNodesNameEv", false]], "aidge::graphview::setorderedinputs (c++ function)": [[6, "_CPPv4N5Aidge9GraphView16setOrderedInputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", false]], "aidge::graphview::setorderedoutputs (c++ function)": [[6, "_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", false]], "aidge::graphview::setrootnode (c++ function)": [[6, "_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr", false]], "aidge::graphview::swap (c++ function)": [[6, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", false]], "aidge::graphview::updatenodename (c++ function)": [[6, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", false]], "aidge::identity (c++ function)": [[9, "_CPPv4N5Aidge8IdentityERKNSt6stringE", false]], "aidge::implspec (c++ struct)": [[3, "_CPPv4N5Aidge8ImplSpecE", false]], "aidge::implspec::attrs (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec5attrsE", false]], "aidge::implspec::implspec (c++ function)": [[3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK17DynamicAttributes", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKN5Aidge8ImplSpecE", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", false]], "aidge::implspec::inputs (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6inputsE", false]], "aidge::implspec::iospec (c++ struct)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpecE", false]], "aidge::implspec::iospec::dims (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec4dimsE", false]], "aidge::implspec::iospec::format (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec6formatE", false]], "aidge::implspec::iospec::iospec (c++ function)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", false]], "aidge::implspec::iospec::type (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec4typeE", false]], "aidge::implspec::outputs (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec7outputsE", false]], "aidge::implspec::~implspec (c++ function)": [[3, "_CPPv4N5Aidge8ImplSpecD0Ev", false]], "aidge::leakyrelu (c++ function)": [[9, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", false]], "aidge::lstm (c++ function)": [[9, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", false]], "aidge::matmul (c++ function)": [[9, "_CPPv4N5Aidge6MatMulERKNSt6stringE", false]], "aidge::matmultiling (c++ function)": [[10, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", false]], "aidge::matmultofc (c++ function)": [[10, "_CPPv4N5Aidge10matMulToFCENSt10shared_ptrI9GraphViewEE", false]], "aidge::memorize (c++ function)": [[9, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", false]], "aidge::metaoperator (c++ function)": [[9, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", false]], "aidge::mnist (c++ class)": [[2, "_CPPv4N5Aidge5MNISTE", false]], "aidge::mnist::datatype (c++ enum)": [[2, "_CPPv4N5Aidge5MNIST8DataTypeE", false]], "aidge::mnist::datatype::double (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType6DoubleE", false]], "aidge::mnist::datatype::float (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType5FloatE", false]], "aidge::mnist::datatype::int (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType3IntE", false]], "aidge::mnist::datatype::short (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType5ShortE", false]], "aidge::mnist::datatype::signed (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType6SignedE", false]], "aidge::mnist::datatype::unsigned (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType8UnsignedE", false]], "aidge::mnist::getitem (c++ function)": [[2, "_CPPv4NK5Aidge5MNIST7getItemEKNSt6size_tE", false]], "aidge::mnist::getlen (c++ function)": [[2, "_CPPv4NK5Aidge5MNIST6getLenEv", false]], "aidge::mnist::getnbmodalities (c++ function)": [[2, "_CPPv4NK5Aidge5MNIST15getNbModalitiesEv", false]], "aidge::mnist::magicnumber (c++ union)": [[2, "_CPPv4N5Aidge5MNIST11MagicNumberE", false]], "aidge::mnist::magicnumber::byte (c++ member)": [[2, "_CPPv4N5Aidge5MNIST11MagicNumber4byteE", false]], "aidge::mnist::magicnumber::value (c++ member)": [[2, "_CPPv4N5Aidge5MNIST11MagicNumber5valueE", false]], "aidge::mnist::mnist (c++ function)": [[2, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", false]], "aidge::mnist::~mnist (c++ function)": [[2, "_CPPv4N5Aidge5MNISTD0Ev", false]], "aidge::move (c++ function)": [[9, "_CPPv4N5Aidge4MoveERKNSt6stringE", false]], "aidge::mul (c++ function)": [[9, "_CPPv4N5Aidge3MulERKNSt6stringE", false]], "aidge::node (c++ class)": [[6, "_CPPv4N5Aidge4NodeE", false]], "aidge::node::addafterbackward (c++ function)": [[6, "_CPPv4N5Aidge4Node16addAfterBackwardENSt8functionIFbvEEE", false]], "aidge::node::addafterforward (c++ function)": [[6, "_CPPv4N5Aidge4Node15addAfterForwardENSt8functionIFbvEEE", false]], "aidge::node::addbeforebackward (c++ function)": [[6, "_CPPv4N5Aidge4Node17addBeforeBackwardENSt8functionIFbvEEE", false]], "aidge::node::addbeforeforward (c++ function)": [[6, "_CPPv4N5Aidge4Node16addBeforeForwardENSt8functionIFbvEEE", false]], "aidge::node::addchild (c++ function)": [[6, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", false], [6, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", false]], "aidge::node::addview (c++ function)": [[6, "_CPPv4N5Aidge4Node7addViewERKNSt10shared_ptrI9GraphViewEE", false]], "aidge::node::attributes (c++ function)": [[6, "_CPPv4NK5Aidge4Node10attributesEv", false]], "aidge::node::backward (c++ function)": [[6, "_CPPv4N5Aidge4Node8backwardEv", false]], "aidge::node::clone (c++ function)": [[6, "_CPPv4N5Aidge4Node5cloneE7NodePtr", false], [6, "_CPPv4NK5Aidge4Node5cloneEv", false]], "aidge::node::clonesharedoperators (c++ function)": [[6, "_CPPv4N5Aidge4Node20cloneSharedOperatorsE7NodePtr", false], [6, "_CPPv4NK5Aidge4Node20cloneSharedOperatorsEv", false]], "aidge::node::clonesharedproducers (c++ function)": [[6, "_CPPv4N5Aidge4Node20cloneSharedProducersE7NodePtr", false], [6, "_CPPv4NK5Aidge4Node20cloneSharedProducersEv", false]], "aidge::node::createuniquename (c++ function)": [[6, "_CPPv4N5Aidge4Node16createUniqueNameENSt6stringE", false]], "aidge::node::datainputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node10dataInputsEv", false]], "aidge::node::forward (c++ function)": [[6, "_CPPv4N5Aidge4Node7forwardEv", false]], "aidge::node::getchildren (c++ function)": [[6, "_CPPv4NK5Aidge4Node11getChildrenEK9IOIndex_t", false], [6, "_CPPv4NK5Aidge4Node11getChildrenEv", false]], "aidge::node::getfirstfreedatainput (c++ function)": [[6, "_CPPv4NK5Aidge4Node21getFirstFreeDataInputEv", false]], "aidge::node::getnbfreedatainputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node19getNbFreeDataInputsEv", false]], "aidge::node::getoperator (c++ function)": [[6, "_CPPv4NK5Aidge4Node11getOperatorEv", false]], "aidge::node::getorderedchildren (c++ function)": [[6, "_CPPv4NK5Aidge4Node18getOrderedChildrenEv", false]], "aidge::node::getparent (c++ function)": [[6, "_CPPv4N5Aidge4Node9getParentEK9IOIndex_t", false]], "aidge::node::getparents (c++ function)": [[6, "_CPPv4NK5Aidge4Node10getParentsEv", false]], "aidge::node::input (c++ function)": [[6, "_CPPv4NK5Aidge4Node5inputEK9IOIndex_t", false]], "aidge::node::inputcategory (c++ function)": [[6, "_CPPv4NK5Aidge4Node13inputCategoryE9IOIndex_t", false]], "aidge::node::inputname (c++ function)": [[6, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", false], [6, "_CPPv4NK5Aidge4Node9inputNameEK9IOIndex_t", false]], "aidge::node::inputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node6inputsEv", false]], "aidge::node::inputsnames (c++ function)": [[6, "_CPPv4NK5Aidge4Node11inputsNamesEv", false]], "aidge::node::name (c++ function)": [[6, "_CPPv4NK5Aidge4Node4nameEv", false]], "aidge::node::nbinputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node8nbInputsEv", false]], "aidge::node::nboutputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node9nbOutputsEv", false]], "aidge::node::nbvalidinputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node13nbValidInputsEv", false]], "aidge::node::nbvalidoutputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node14nbValidOutputsEv", false]], "aidge::node::node (c++ function)": [[6, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", false], [6, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", false], [6, "_CPPv4N5Aidge4Node4NodeEv", false]], "aidge::node::operator() (c++ function)": [[6, "_CPPv4N5Aidge4NodeclERKNSt6vectorI9ConnectorEE", false]], "aidge::node::operator== (c++ function)": [[6, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", false]], "aidge::node::output (c++ function)": [[6, "_CPPv4NK5Aidge4Node6outputE9IOIndex_t", false]], "aidge::node::outputname (c++ function)": [[6, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", false], [6, "_CPPv4NK5Aidge4Node10outputNameE9IOIndex_t", false]], "aidge::node::outputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node7outputsEv", false]], "aidge::node::outputsnames (c++ function)": [[6, "_CPPv4NK5Aidge4Node12outputsNamesEv", false]], "aidge::node::parentisbackedge (c++ function)": [[6, "_CPPv4NK5Aidge4Node16parentIsBackEdgeE9IOIndex_t", false]], "aidge::node::removechild (c++ function)": [[6, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", false]], "aidge::node::removeview (c++ function)": [[6, "_CPPv4N5Aidge4Node10removeViewERKNSt10shared_ptrI9GraphViewEE", false]], "aidge::node::resetconnections (c++ function)": [[6, "_CPPv4N5Aidge4Node16resetConnectionsEb", false]], "aidge::node::setname (c++ function)": [[6, "_CPPv4N5Aidge4Node7setNameERKNSt6stringE", false]], "aidge::node::type (c++ function)": [[6, "_CPPv4NK5Aidge4Node4typeEv", false]], "aidge::node::valid (c++ function)": [[6, "_CPPv4NK5Aidge4Node5validEv", false]], "aidge::node::views (c++ function)": [[6, "_CPPv4NK5Aidge4Node5viewsEv", false]], "aidge::node::~node (c++ function)": [[6, "_CPPv4N5Aidge4NodeD0Ev", false]], "aidge::operator (c++ class)": [[9, "_CPPv4N5Aidge8OperatorE", false]], "aidge::operator::associateinput (c++ function)": [[9, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operator::attributes (c++ function)": [[9, "_CPPv4NK5Aidge8Operator10attributesEv", false]], "aidge::operator::backend (c++ function)": [[9, "_CPPv4NK5Aidge8Operator7backendEv", false]], "aidge::operator::backward (c++ function)": [[9, "_CPPv4N5Aidge8Operator8backwardEv", false]], "aidge::operator::clone (c++ function)": [[9, "_CPPv4NK5Aidge8Operator5cloneEv", false]], "aidge::operator::forward (c++ function)": [[9, "_CPPv4N5Aidge8Operator7forwardEv", false]], "aidge::operator::getavailablebackends (c++ function)": [[9, "_CPPv4NK5Aidge8Operator20getAvailableBackendsEv", false]], "aidge::operator::getimpl (c++ function)": [[9, "_CPPv4NK5Aidge8Operator7getImplEv", false]], "aidge::operator::getinputsname (c++ function)": [[9, "_CPPv4N5Aidge8Operator13getInputsNameEv", false]], "aidge::operator::getnbconsumeddata (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t", false]], "aidge::operator::getnbproduceddata (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getNbProducedDataEK9IOIndex_t", false]], "aidge::operator::getnbrequireddata (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t", false]], "aidge::operator::getnbrequiredprotected (c++ function)": [[9, "_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t", false]], "aidge::operator::getoutputsname (c++ function)": [[9, "_CPPv4N5Aidge8Operator14getOutputsNameEv", false]], "aidge::operator::getrawinput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t", false]], "aidge::operator::getrawoutput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator12getRawOutputEK9IOIndex_t", false]], "aidge::operator::getrequiredmemory (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", false]], "aidge::operator::inheritedattributes (c++ function)": [[9, "_CPPv4NK5Aidge8Operator19inheritedAttributesEv", false]], "aidge::operator::inputcategory (c++ function)": [[9, "_CPPv4NK5Aidge8Operator13inputCategoryE9IOIndex_t", false], [9, "_CPPv4NK5Aidge8Operator13inputCategoryEv", false]], "aidge::operator::isatomic (c++ function)": [[9, "_CPPv4NK5Aidge8Operator8isAtomicEv", false]], "aidge::operator::isbackedge (c++ function)": [[9, "_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t", false]], "aidge::operator::isoptionalinput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator15isOptionalInputENSt6size_tE", false]], "aidge::operator::nbinputs (c++ function)": [[9, "_CPPv4NK5Aidge8Operator8nbInputsEv", false]], "aidge::operator::nboutputs (c++ function)": [[9, "_CPPv4NK5Aidge8Operator9nbOutputsEv", false]], "aidge::operator::operator (c++ function)": [[9, "_CPPv4N5Aidge8Operator8OperatorERK8Operator", false], [9, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", false], [9, "_CPPv4N5Aidge8Operator8OperatorEv", false]], "aidge::operator::operatortype (c++ function)": [[9, "_CPPv4NK5Aidge8Operator12operatorTypeEv", false]], "aidge::operator::resetconsummerproducer (c++ function)": [[9, "_CPPv4N5Aidge8Operator22resetConsummerProducerEv", false]], "aidge::operator::resetinput (c++ function)": [[9, "_CPPv4N5Aidge8Operator10resetInputEK9IOIndex_t", false]], "aidge::operator::setbackedges (c++ function)": [[9, "_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE", false]], "aidge::operator::setbackend (c++ function)": [[9, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", false], [9, "_CPPv4N5Aidge8Operator10setBackendERKNSt6vectorINSt4pairINSt6stringE11DeviceIdx_tEEEE", false]], "aidge::operator::setdataformat (c++ function)": [[9, "_CPPv4NK5Aidge8Operator13setDataFormatERK10DataFormat", false]], "aidge::operator::setdatatype (c++ function)": [[9, "_CPPv4NK5Aidge8Operator11setDataTypeERK8DataType", false]], "aidge::operator::setimpl (c++ function)": [[9, "_CPPv4N5Aidge8Operator7setImplENSt10shared_ptrI12OperatorImplEE", false]], "aidge::operator::setinheritedattrs (c++ function)": [[9, "_CPPv4N5Aidge8Operator17setInheritedAttrsERNSt10shared_ptrI17DynamicAttributesEE", false]], "aidge::operator::setinput (c++ function)": [[9, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operator::setoutput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operator::type (c++ function)": [[9, "_CPPv4NK5Aidge8Operator4typeEv", false]], "aidge::operator::updateconsummerproducer (c++ function)": [[9, "_CPPv4N5Aidge8Operator23updateConsummerProducerEv", false]], "aidge::operator::~operator (c++ function)": [[9, "_CPPv4N5Aidge8OperatorD0Ev", false]], "aidge::operatortensor (c++ class)": [[9, "_CPPv4N5Aidge14OperatorTensorE", false]], "aidge::operatortensor::associateinput (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operatortensor::computereceptivefield (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", false]], "aidge::operatortensor::dimsforwarded (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor13dimsForwardedEv", false]], "aidge::operatortensor::forward (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor7forwardEv", false]], "aidge::operatortensor::forwarddims (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor11forwardDimsEb", false]], "aidge::operatortensor::forwarddtype (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor12forwardDTypeEv", false]], "aidge::operatortensor::getinput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor8getInputEK9IOIndex_t", false]], "aidge::operatortensor::getinputs (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor9getInputsEv", false]], "aidge::operatortensor::getoutput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor9getOutputEK9IOIndex_t", false]], "aidge::operatortensor::getoutputs (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor10getOutputsEv", false]], "aidge::operatortensor::getrawinput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor11getRawInputEK9IOIndex_t", false]], "aidge::operatortensor::getrawoutput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor12getRawOutputEKN5Aidge9IOIndex_tE", false]], "aidge::operatortensor::operatortensor (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERK14OperatorTensor", false], [9, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", false], [9, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorEv", false]], "aidge::operatortensor::resetinput (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor10resetInputEK9IOIndex_t", false]], "aidge::operatortensor::setdataformat (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor13setDataFormatERK10DataFormat", false]], "aidge::operatortensor::setdatatype (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor11setDataTypeERK8DataType", false]], "aidge::operatortensor::setinput (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operatortensor::setoutput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operatortensor::~operatortensor (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensorD0Ev", false]], "aidge::pad (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", false]], "aidge::paddedavgpooling (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", false]], "aidge::paddedconv (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::paddedconvdepthwise (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::paddedmaxpooling (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", false]], "aidge::parallel (c++ function)": [[6, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", false]], "aidge::parallelscheduler (c++ class)": [[11, "_CPPv4N5Aidge17ParallelSchedulerE", false]], "aidge::parallelscheduler::forward (c++ function)": [[11, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", false]], "aidge::parallelscheduler::parallelscheduler (c++ function)": [[11, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", false]], "aidge::parallelscheduler::~parallelscheduler (c++ function)": [[11, "_CPPv4N5Aidge17ParallelSchedulerD0Ev", false]], "aidge::pop (c++ function)": [[9, "_CPPv4N5Aidge3PopERKNSt6stringE", false]], "aidge::pow (c++ function)": [[9, "_CPPv4N5Aidge3PowERKNSt6stringE", false]], "aidge::producer (c++ function)": [[9, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", false], [9, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", false]], "aidge::reducemean (c++ function)": [[9, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE", false]], "aidge::relu (c++ function)": [[9, "_CPPv4N5Aidge4ReLUERKNSt6stringE", false]], "aidge::removedropout (c++ function)": [[10, "_CPPv4N5Aidge13removeDropoutENSt10shared_ptrI9GraphViewEE", false]], "aidge::removeflatten (c++ function)": [[10, "_CPPv4N5Aidge13removeFlattenENSt10shared_ptrI9GraphViewEE", false]], "aidge::reshape (c++ function)": [[9, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", false]], "aidge::residual (c++ function)": [[6, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", false]], "aidge::scaling (c++ function)": [[9, "_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE", false]], "aidge::scheduler (c++ class)": [[11, "_CPPv4N5Aidge9SchedulerE", false]], "aidge::scheduler::availabledatastatus (c++ enum)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatusE", false]], "aidge::scheduler::availabledatastatus::connected (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus9ConnectedE", false]], "aidge::scheduler::availabledatastatus::notconnected (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus12NotConnectedE", false]], "aidge::scheduler::availabledatastatus::uppernodeinputconnected (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus23UpperNodeInputConnectedE", false]], "aidge::scheduler::availabledatastatus::uppernodeinputfound (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus19UpperNodeInputFoundE", false]], "aidge::scheduler::availabledatastatus::validtensor (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus11ValidTensorE", false]], "aidge::scheduler::clearscheduling (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler15clearSchedulingEv", false]], "aidge::scheduler::connectinputs (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler13connectInputsERKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", false]], "aidge::scheduler::exectime (c++ class)": [[11, "_CPPv4N5Aidge9Scheduler8ExecTimeE", false]], "aidge::scheduler::exectime::get (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler8ExecTime3getEv", false]], "aidge::scheduler::exectime::update (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler8ExecTime6updateERKNSt6vectorI17SchedulingElementEE", false]], "aidge::scheduler::generatescheduling (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler18generateSchedulingEv", false]], "aidge::scheduler::getbackwardscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler21getBackwardSchedulingEv", false]], "aidge::scheduler::getforwardscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler20getForwardSchedulingEv", false]], "aidge::scheduler::getsequentialstaticscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", false]], "aidge::scheduler::getstaticscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler19getStaticSchedulingENSt6size_tE", false]], "aidge::scheduler::graphview (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler9graphViewEv", false]], "aidge::scheduler::nodeexectime (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTimeE", false]], "aidge::scheduler::nodeexectime::mcount (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime6mCountE", false]], "aidge::scheduler::nodeexectime::mean (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler12NodeExecTime4meanEv", false]], "aidge::scheduler::nodeexectime::mm2 (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime3mM2E", false]], "aidge::scheduler::nodeexectime::mmean (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime5mMeanE", false]], "aidge::scheduler::nodeexectime::nodeexectime (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime12NodeExecTimeEv", false]], "aidge::scheduler::nodeexectime::stddev (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler12NodeExecTime6stdDevEv", false]], "aidge::scheduler::nodeexectime::update (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", false]], "aidge::scheduler::priorproducersconsumers (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersE", false]], "aidge::scheduler::priorproducersconsumers::isprior (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers7isPriorE", false]], "aidge::scheduler::priorproducersconsumers::priorconsumers (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers14priorConsumersE", false]], "aidge::scheduler::priorproducersconsumers::priorproducersconsumers (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersERK23PriorProducersConsumers", false], [11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersEv", false]], "aidge::scheduler::priorproducersconsumers::requiredproducers (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers17requiredProducersE", false]], "aidge::scheduler::priorproducersconsumers::~priorproducersconsumers (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersD0Ev", false]], "aidge::scheduler::resetscheduling (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler15resetSchedulingEv", false]], "aidge::scheduler::savefactorizedstaticschedulingdiagram (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", false]], "aidge::scheduler::saveschedulingdiagram (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", false]], "aidge::scheduler::savestaticschedulingdiagram (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", false]], "aidge::scheduler::scheduler (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", false], [11, "_CPPv4N5Aidge9Scheduler9SchedulerEv", false]], "aidge::scheduler::schedulingelement (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElementE", false]], "aidge::scheduler::schedulingelement::end (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement3endE", false]], "aidge::scheduler::schedulingelement::node (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement4nodeE", false]], "aidge::scheduler::schedulingelement::schedulingelement (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", false]], "aidge::scheduler::schedulingelement::start (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement5startE", false]], "aidge::scheduler::schedulingelement::~schedulingelement (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElementD0Ev", false]], "aidge::scheduler::schedulingpolicy (c++ enum)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicyE", false]], "aidge::scheduler::schedulingpolicy::aslateaspossible (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsLateAsPossibleE", false]], "aidge::scheduler::schedulingpolicy::assoonaspossible (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsSoonAsPossibleE", false]], "aidge::scheduler::schedulingpolicy::default (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy7DefaultE", false]], "aidge::scheduler::schedulingpolicy::longuestbranchfirst (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19LonguestBranchFirstE", false]], "aidge::scheduler::schedulingpolicy::shortestbranchfirst (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19ShortestBranchFirstE", false]], "aidge::scheduler::staticschedulingelement (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElementE", false]], "aidge::scheduler::staticschedulingelement::earlierthan (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement11earlierThanE", false]], "aidge::scheduler::staticschedulingelement::early (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement5earlyE", false]], "aidge::scheduler::staticschedulingelement::late (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4lateE", false]], "aidge::scheduler::staticschedulingelement::laterthan (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement9laterThanE", false]], "aidge::scheduler::staticschedulingelement::node (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4nodeE", false]], "aidge::scheduler::staticschedulingelement::staticschedulingelement (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", false]], "aidge::scheduler::tagconditionalnodes (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler19tagConditionalNodesEv", false]], "aidge::scheduler::tagforkbranches (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler15tagForkBranchesEv", false]], "aidge::scheduler::~scheduler (c++ function)": [[11, "_CPPv4N5Aidge9SchedulerD0Ev", false]], "aidge::sequential (c++ function)": [[6, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", false]], "aidge::sequentialscheduler (c++ class)": [[11, "_CPPv4N5Aidge19SequentialSchedulerE", false]], "aidge::sequentialscheduler::backward (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler8backwardEv", false]], "aidge::sequentialscheduler::forward (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", false]], "aidge::sequentialscheduler::generatememory (c++ function)": [[11, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", false]], "aidge::sequentialscheduler::generatememoryautoconcat (c++ function)": [[11, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", false]], "aidge::sequentialscheduler::getsequentialstaticscheduling (c++ function)": [[11, "_CPPv4NK5Aidge19SequentialScheduler29getSequentialStaticSchedulingENSt6size_tE", false]], "aidge::sequentialscheduler::sequentialscheduler (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", false]], "aidge::sequentialscheduler::setschedulingpolicy (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler19setSchedulingPolicyE16SchedulingPolicy", false]], "aidge::sequentialscheduler::~sequentialscheduler (c++ function)": [[11, "_CPPv4N5Aidge19SequentialSchedulerD0Ev", false]], "aidge::sigmoid (c++ function)": [[9, "_CPPv4N5Aidge7SigmoidERKNSt6stringE", false]], "aidge::singlepassgraphmatching (c++ class)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatchingE", false]], "aidge::singlepassgraphmatching::addnodelambda (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", false]], "aidge::singlepassgraphmatching::context (c++ struct)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextE", false]], "aidge::singlepassgraphmatching::context::anchors (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7anchorsE", false]], "aidge::singlepassgraphmatching::context::context (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextERK7Context", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextEv", false]], "aidge::singlepassgraphmatching::context::depth (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5depthE", false]], "aidge::singlepassgraphmatching::context::edgeleftidx (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context11edgeLeftIdxE", false]], "aidge::singlepassgraphmatching::context::edgerightidx (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12edgeRightIdxE", false]], "aidge::singlepassgraphmatching::context::firstnode (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9firstNodeE", false]], "aidge::singlepassgraphmatching::context::firstsequence (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context13firstSequenceE", false]], "aidge::singlepassgraphmatching::context::insequence (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context10inSequenceE", false]], "aidge::singlepassgraphmatching::context::lookforchild (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12lookForChildE", false]], "aidge::singlepassgraphmatching::context::operator= (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextaSERK7Context", false]], "aidge::singlepassgraphmatching::context::query (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5queryE", false]], "aidge::singlepassgraphmatching::context::singleoutput (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12singleOutputE", false]], "aidge::singlepassgraphmatching::context::startnode (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9startNodeE", false]], "aidge::singlepassgraphmatching::context::~context (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextD0Ev", false]], "aidge::singlepassgraphmatching::filterlonguestdisjoint (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching22filterLonguestDisjointERKNSt3setI14MatchingResultEE", false]], "aidge::singlepassgraphmatching::match (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", false]], "aidge::singlepassgraphmatching::matchfrom (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", false]], "aidge::singlepassgraphmatching::matchingresult (c++ struct)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultE", false]], "aidge::singlepassgraphmatching::matchingresult::anchors (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult7anchorsE", false]], "aidge::singlepassgraphmatching::matchingresult::graph (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult5graphE", false]], "aidge::singlepassgraphmatching::matchingresult::matchingresult (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultERK14MatchingResult", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultEv", false]], "aidge::singlepassgraphmatching::matchingresult::operator= (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultaSERK14MatchingResult", false]], "aidge::singlepassgraphmatching::matchingresult::startnode (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult9startNodeE", false]], "aidge::singlepassgraphmatching::matchingresult::~matchingresult (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultD0Ev", false]], "aidge::singlepassgraphmatching::operator= (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatchingaSERK23SinglePassGraphMatching", false]], "aidge::singlepassgraphmatching::singlepassgraphmatching (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingENSt10shared_ptrI9GraphViewEE", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingERK23SinglePassGraphMatching", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingEv", false]], "aidge::singlepassgraphmatching::~singlepassgraphmatching (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatchingD0Ev", false]], "aidge::slice (c++ function)": [[9, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", false]], "aidge::softmax (c++ function)": [[9, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", false]], "aidge::sqrt (c++ function)": [[9, "_CPPv4N5Aidge4SqrtERKNSt6stringE", false]], "aidge::sub (c++ function)": [[9, "_CPPv4N5Aidge3SubERKNSt6stringE", false]], "aidge::tanh (c++ function)": [[9, "_CPPv4N5Aidge4TanhERKNSt6stringE", false]], "aidge::tensor (c++ class)": [[4, "_CPPv4N5Aidge6TensorE", false]], "aidge::tensor::abs (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor3absEv", false]], "aidge::tensor::backend (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7backendEv", false]], "aidge::tensor::capacity (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8capacityEv", false]], "aidge::tensor::clip (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4clipEff", false]], "aidge::tensor::clone (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5cloneEv", false]], "aidge::tensor::copycast (c++ function)": [[4, "_CPPv4N5Aidge6Tensor8copyCastERK6Tensor", false]], "aidge::tensor::copycastfrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor12copyCastFromERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", false]], "aidge::tensor::copyfrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor8copyFromERK6Tensor", false]], "aidge::tensor::copytranspose (c++ function)": [[4, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", false], [4, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", false]], "aidge::tensor::dataformat (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor10dataFormatEv", false]], "aidge::tensor::datatype (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8dataTypeEv", false]], "aidge::tensor::device (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6deviceEv", false]], "aidge::tensor::dim (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor3dimE8DimIdx_t", false]], "aidge::tensor::dims (c++ function)": [[4, "_CPPv4I_8DimIdx_tENK5Aidge6Tensor4dimsENSt5arrayI9DimSize_t3DIMEEv", false], [4, "_CPPv4NK5Aidge6Tensor4dimsEv", false]], "aidge::tensor::empty (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5emptyEv", false]], "aidge::tensor::extract (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEE", false], [4, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::get (c++ function)": [[4, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", false], [4, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::getavailablebackends (c++ function)": [[4, "_CPPv4N5Aidge6Tensor20getAvailableBackendsEv", false]], "aidge::tensor::getcoord (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8getCoordENSt6size_tE", false]], "aidge::tensor::getidx (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6getIdxERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::getimpl (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7getImplEv", false]], "aidge::tensor::getimploffset (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor13getImplOffsetEv", false]], "aidge::tensor::getstorageidx (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor13getStorageIdxERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::grad (c++ function)": [[4, "_CPPv4N5Aidge6Tensor4gradEv", false]], "aidge::tensor::hasimpl (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7hasImplEv", false]], "aidge::tensor::iscontiguous (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor12isContiguousEv", false]], "aidge::tensor::isinbounds (c++ function)": [[4, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", false], [4, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", false]], "aidge::tensor::makecontiguous (c++ function)": [[4, "_CPPv4N5Aidge6Tensor14makeContiguousEv", false]], "aidge::tensor::mean (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4meanEv", false]], "aidge::tensor::nbdims (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6nbDimsEv", false]], "aidge::tensor::operator* (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", false], [4, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensormlERK6Tensor", false]], "aidge::tensor::operator*= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensormLERK6Tensor", false]], "aidge::tensor::operator+ (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", false], [4, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensorplERK6Tensor", false]], "aidge::tensor::operator+= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensorpLERK6Tensor", false]], "aidge::tensor::operator- (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", false], [4, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensormiERK6Tensor", false]], "aidge::tensor::operator-= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensormIERK6Tensor", false]], "aidge::tensor::operator/ (c++ function)": [[4, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensordvERK6Tensor", false]], "aidge::tensor::operator/= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensordVERK6Tensor", false]], "aidge::tensor::operator= (c++ function)": [[4, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", false], [4, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", false], [4, "_CPPv4N5Aidge6TensoraSERK6Tensor", false], [4, "_CPPv4N5Aidge6TensoraSERR6Tensor", false]], "aidge::tensor::operator== (c++ function)": [[4, "_CPPv4NK5Aidge6TensoreqERK6Tensor", false]], "aidge::tensor::print (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5printEv", false]], "aidge::tensor::ref (c++ function)": [[4, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false], [4, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false]], "aidge::tensor::refcast (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", false], [4, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", false]], "aidge::tensor::refcastfrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false], [4, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false]], "aidge::tensor::refcontiguous (c++ function)": [[4, "_CPPv4N5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", false], [4, "_CPPv4NK5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", false]], "aidge::tensor::reffrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", false], [4, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", false]], "aidge::tensor::repeat (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6repeatEi", false]], "aidge::tensor::resize (c++ function)": [[4, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", false], [4, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", false]], "aidge::tensor::set (c++ function)": [[4, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", false], [4, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", false]], "aidge::tensor::setbackend (c++ function)": [[4, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", false]], "aidge::tensor::setdataformat (c++ function)": [[4, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", false]], "aidge::tensor::setdatatype (c++ function)": [[4, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", false]], "aidge::tensor::setgrad (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7setGradENSt10shared_ptrI6TensorEE", false]], "aidge::tensor::setimpl (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", false]], "aidge::tensor::size (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4sizeEv", false]], "aidge::tensor::sqrt (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4sqrtEv", false]], "aidge::tensor::stride (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6strideE8DimIdx_t", false]], "aidge::tensor::strides (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7stridesEv", false]], "aidge::tensor::tensor (c++ function)": [[4, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", false], [4, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", false], [4, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", false], [4, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", false], [4, "_CPPv4N5Aidge6Tensor6TensorERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE", false], [4, "_CPPv4N5Aidge6Tensor6TensorERR6Tensor", false]], "aidge::tensor::tocoord (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", false]], "aidge::tensor::toindex (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::tostring (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", false]], "aidge::tensor::type (c++ member)": [[4, "_CPPv4N5Aidge6Tensor4TypeE", false]], "aidge::tensor::undefined (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor9undefinedEv", false]], "aidge::tensor::zeros (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5zerosEv", false]], "aidge::tensor::~tensor (c++ function)": [[4, "_CPPv4N5Aidge6TensorD0Ev", false]], "aidge::tensoropencv (c++ function)": [[2, "_CPPv4N5Aidge12tensorOpencvEN2cv3MatE", false]], "aidge::transpose (c++ function)": [[9, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", false]], "aidge_onnx.node_import.onnx_node_converter_ (built-in variable)": [[13, "aidge_onnx.node_import.ONNX_NODE_CONVERTER_", false]], "associate_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.associate_input", false]], "associate_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.associate_input", false]], "attributes() (aidge_core.node method)": [[6, "aidge_core.Node.attributes", false]], "auto_register_export() (in module aidge_onnx.node_export)": [[13, "aidge_onnx.node_export.auto_register_export", false]], "auto_register_import() (in module aidge_onnx.node_import)": [[13, "aidge_onnx.node_import.auto_register_import", false]], "avgpooling1d() (in module aidge_core)": [[9, "aidge_core.AvgPooling1D", false]], "avgpooling2d() (in module aidge_core)": [[9, "aidge_core.AvgPooling2D", false]], "avgpooling3d() (in module aidge_core)": [[9, "aidge_core.AvgPooling3D", false]], "backend() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.backend", false]], "backend() (aidge_core.operator method)": [[9, "aidge_core.Operator.backend", false]], "backend() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.backend", false]], "backend() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.backend", false]], "backward() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.backward", false]], "backward() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.backward", false]], "batchnorm2d() (in module aidge_core)": [[9, "aidge_core.BatchNorm2D", false]], "calibrate (c++ function)": [[12, "_CPPv49calibrate23calibration_folder_path15cache_file_path10batch_size", false]], "capacity() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.capacity", false]], "clear_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.clear_scheduling", false]], "clear_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.clear_scheduling", false]], "clear_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.clear_scheduling", false]], "clone() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.clone", false]], "clone() (aidge_core.node method)": [[6, "aidge_core.Node.clone", false]], "clone() (aidge_core.operator method)": [[9, "aidge_core.Operator.clone", false]], "clone() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.clone", false]], "clone() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.clone", false]], "compile() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.compile", false]], "concat() (in module aidge_core)": [[9, "aidge_core.Concat", false]], "connector (class in aidge_core)": [[6, "aidge_core.Connector", false]], "conv1d() (in module aidge_core)": [[9, "aidge_core.Conv1D", false]], "conv2d() (in module aidge_core)": [[9, "aidge_core.Conv2D", false]], "convdepthwise1d() (in module aidge_core)": [[9, "aidge_core.ConvDepthWise1D", false]], "convdepthwise2d() (in module aidge_core)": [[9, "aidge_core.ConvDepthWise2D", false]], "cpy_transpose() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.cpy_transpose", false]], "create_unique_name() (aidge_core.node method)": [[6, "aidge_core.Node.create_unique_name", false]], "dataprovider (class in aidge_core)": [[4, "aidge_core.DataProvider", false]], "device (c++ function)": [[12, "_CPPv46device2id", false]], "dformat() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.dformat", false]], "dims() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.dims", false]], "dims_forwarded() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.dims_forwarded", false]], "div() (in module aidge_core)": [[9, "aidge_core.Div", false]], "dtype() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.dtype", false]], "erf() (in module aidge_core)": [[9, "aidge_core.Erf", false]], "expand_metaops() (in module aidge_core)": [[10, "aidge_core.expand_metaops", false]], "export() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.export", false]], "export() (in module aidge_export_tensorrt)": [[12, "aidge_export_tensorrt.export", false]], "export_onnx() (in module aidge_onnx)": [[13, "aidge_onnx.export_onnx", false]], "exportlib (class in aidge_core.export_utils)": [[5, "aidge_core.export_utils.ExportLib", false]], "exportnode (class in aidge_core.export_utils)": [[5, "aidge_core.export_utils.ExportNode", false]], "exportnodecpp (class in aidge_core.export_utils)": [[5, "aidge_core.export_utils.ExportNodeCpp", false]], "fc() (in module aidge_core)": [[9, "aidge_core.FC", false]], "forward() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.forward", false]], "forward() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.forward", false]], "forward() (aidge_core.operator method)": [[9, "aidge_core.Operator.forward", false]], "forward() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.forward", false]], "forward() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.forward", false]], "forward() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.forward", false]], "forward_dims() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.forward_dims", false]], "forward_dims() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.forward_dims", false]], "forward_dtype() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.forward_dtype", false]], "forward_dtype() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.forward_dtype", false]], "fuse_batchnorm() (in module aidge_core)": [[10, "aidge_core.fuse_batchnorm", false]], "fuse_to_metaops() (in module aidge_core)": [[10, "aidge_core.fuse_to_metaops", false]], "gather() (in module aidge_core)": [[9, "aidge_core.Gather", false]], "generate_graph() (in module aidge_core)": [[6, "aidge_core.generate_graph", false]], "generate_memory() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.generate_memory", false]], "generate_memory_auto_concat() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.generate_memory_auto_concat", false]], "generate_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.generate_scheduling", false]], "generate_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.generate_scheduling", false]], "generate_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.generate_scheduling", false]], "generic_export() (in module aidge_onnx.node_export.generic_export)": [[13, "aidge_onnx.node_export.generic_export.generic_export", false]], "genericoperator() (in module aidge_core)": [[9, "aidge_core.GenericOperator", false]], "get_adaptation() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_adaptation", false]], "get_available_backends() (aidge_core.tensor static method)": [[4, "aidge_core.Tensor.get_available_backends", false]], "get_available_impl_specs() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_available_impl_specs", false]], "get_backward_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_backward_scheduling", false]], "get_backward_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_backward_scheduling", false]], "get_backward_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_backward_scheduling", false]], "get_best_adaptation() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_best_adaptation", false]], "get_best_match() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_best_match", false]], "get_children() (aidge_core.node method)": [[6, "aidge_core.Node.get_children", false]], "get_connected_graph_view() (in module aidge_core)": [[6, "aidge_core.get_connected_graph_view", false]], "get_coord() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.get_coord", false]], "get_export_node() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_export_node", false]], "get_forward_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_forward_scheduling", false]], "get_forward_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_forward_scheduling", false]], "get_forward_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_forward_scheduling", false]], "get_idx() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.get_idx", false]], "get_impl() (aidge_core.operator method)": [[9, "aidge_core.Operator.get_impl", false]], "get_impl() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_impl", false]], "get_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_input", false]], "get_input_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_input_nodes", false]], "get_inputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_inputs", false]], "get_item() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.get_item", false]], "get_len() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.get_len", false]], "get_nb_inputs() (aidge_core.node method)": [[6, "aidge_core.Node.get_nb_inputs", false]], "get_nb_modalities() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.get_nb_modalities", false]], "get_nb_outputs() (aidge_core.node method)": [[6, "aidge_core.Node.get_nb_outputs", false]], "get_node() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_node", false]], "get_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_nodes", false]], "get_operator() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_operator", false]], "get_operator() (aidge_core.node method)": [[6, "aidge_core.Node.get_operator", false]], "get_ordered_children() (aidge_core.node method)": [[6, "aidge_core.Node.get_ordered_children", false]], "get_ordered_inputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ordered_inputs", false]], "get_ordered_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ordered_nodes", false]], "get_ordered_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ordered_outputs", false]], "get_output() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_output", false]], "get_output_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_output_nodes", false]], "get_outputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_outputs", false]], "get_parent() (aidge_core.node method)": [[6, "aidge_core.Node.get_parent", false]], "get_parents() (aidge_core.node method)": [[6, "aidge_core.Node.get_parents", false]], "get_prod_conso() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_prod_conso", false]], "get_ranked_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ranked_nodes", false]], "get_ranked_nodes_name() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ranked_nodes_name", false]], "get_raw_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.get_raw_input", false]], "get_raw_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_raw_input", false]], "get_raw_output() (aidge_core.operator method)": [[9, "aidge_core.Operator.get_raw_output", false]], "get_raw_output() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_raw_output", false]], "get_required_spec() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_required_spec", false]], "get_sequential_static_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_sequential_static_scheduling", false]], "get_sequential_static_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_sequential_static_scheduling", false]], "get_sequential_static_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_sequential_static_scheduling", false]], "get_static_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_static_scheduling", false]], "get_static_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_static_scheduling", false]], "get_static_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_static_scheduling", false]], "grad() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.grad", false]], "graph_view() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.graph_view", false]], "graph_view() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.graph_view", false]], "graph_view() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.graph_view", false]], "graphview (class in aidge_core)": [[6, "aidge_core.GraphView", false]], "has_impl() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.has_impl", false]], "identity() (in module aidge_core)": [[9, "aidge_core.Identity", false]], "implspec (class in aidge_core)": [[3, "aidge_core.ImplSpec", false]], "import_generic() (in module aidge_onnx.node_import.generic)": [[13, "aidge_onnx.node_import.generic.import_generic", false]], "in_view() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.in_view", false]], "initialize (c++ function)": [[12, "_CPPv410initializev", false]], "input() (aidge_core.node method)": [[6, "aidge_core.Node.input", false]], "input_category() (aidge_core.node method)": [[6, "aidge_core.Node.input_category", false]], "input_category() (aidge_core.operator method)": [[9, "aidge_core.Operator.input_category", false]], "input_category() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.input_category", false]], "input_name() (aidge_core.node method)": [[6, "aidge_core.Node.input_name", false]], "inputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.inputs", false]], "inputs() (aidge_core.node method)": [[6, "aidge_core.Node.inputs", false]], "inputs_names() (aidge_core.node method)": [[6, "aidge_core.Node.inputs_names", false]], "insert_parent() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.insert_parent", false]], "iospec (class in aidge_core)": [[3, "aidge_core.IOSpec", false]], "is_atomic() (aidge_core.operator method)": [[9, "aidge_core.Operator.is_atomic", false]], "is_atomic() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.is_atomic", false]], "is_back_edge() (aidge_core.operator method)": [[9, "aidge_core.Operator.is_back_edge", false]], "is_back_edge() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.is_back_edge", false]], "is_optional_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.is_optional_input", false]], "is_optional_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.is_optional_input", false]], "leakyrelu() (in module aidge_core)": [[9, "aidge_core.LeakyReLU", false]], "len() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.len", false]], "load (c++ function)": [[12, "_CPPv44load8filepath", false]], "load_onnx() (in module aidge_onnx)": [[13, "aidge_onnx.load_onnx", false]], "log_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.log_outputs", false]], "lstm() (in module aidge_core)": [[9, "aidge_core.LSTM", false]], "match() (aidge_core.singlepassgraphmatching method)": [[7, "aidge_core.SinglePassGraphMatching.match", false]], "matmul() (in module aidge_core)": [[9, "aidge_core.MatMul", false]], "matmul_to_fc() (in module aidge_core)": [[10, "aidge_core.matmul_to_fc", false]], "mean() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.mean", false]], "meta_operator() (in module aidge_core)": [[9, "aidge_core.meta_operator", false]], "mnist (class in aidge_backend_opencv)": [[2, "aidge_backend_opencv.MNIST", false]], "mul() (in module aidge_core)": [[9, "aidge_core.Mul", false]], "name() (aidge_core.node method)": [[6, "aidge_core.Node.name", false]], "nb_inputs() (aidge_core.operator method)": [[9, "aidge_core.Operator.nb_inputs", false]], "nb_inputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.nb_inputs", false]], "nb_outputs() (aidge_core.operator method)": [[9, "aidge_core.Operator.nb_outputs", false]], "nb_outputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.nb_outputs", false]], "node (class in aidge_core)": [[6, "aidge_core.Node", false]], "operator (class in aidge_core)": [[9, "aidge_core.Operator", false]], "operatortensor (class in aidge_core)": [[9, "aidge_core.OperatorTensor", false]], "output() (aidge_core.node method)": [[6, "aidge_core.Node.output", false]], "output_name() (aidge_core.node method)": [[6, "aidge_core.Node.output_name", false]], "outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.outputs", false]], "outputs() (aidge_core.node method)": [[6, "aidge_core.Node.outputs", false]], "outputs_names() (aidge_core.node method)": [[6, "aidge_core.Node.outputs_names", false]], "paddedavgpooling2d() (in module aidge_core)": [[9, "aidge_core.PaddedAvgPooling2D", false]], "paddedconv1d() (in module aidge_core)": [[9, "aidge_core.PaddedConv1D", false]], "paddedconv2d() (in module aidge_core)": [[9, "aidge_core.PaddedConv2D", false]], "paddedconvdepthwise1d() (in module aidge_core)": [[9, "aidge_core.PaddedConvDepthWise1D", false]], "paddedconvdepthwise2d() (in module aidge_core)": [[9, "aidge_core.PaddedConvDepthWise2D", false]], "paddedmaxpooling2d() (in module aidge_core)": [[9, "aidge_core.PaddedMaxPooling2D", false]], "parallel() (in module aidge_core)": [[6, "aidge_core.parallel", false]], "parallelscheduler (class in aidge_core)": [[11, "aidge_core.ParallelScheduler", false]], "pop() (in module aidge_core)": [[9, "aidge_core.Pop", false]], "pow() (in module aidge_core)": [[9, "aidge_core.Pow", false]], "prod_conso() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.prod_conso", false]], "producer() (in module aidge_core)": [[9, "aidge_core.Producer", false]], "profile (c++ function)": [[12, "_CPPv47profile13nb_iterations4mode", false]], "reducemean() (in module aidge_core)": [[9, "aidge_core.ReduceMean", false]], "reformat_kernels_to_copy() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.reformat_kernels_to_copy", false]], "register() (aidge_core.export_utils.exportlib class method)": [[5, "aidge_core.export_utils.ExportLib.register", false]], "register_export() (in module aidge_onnx.node_export)": [[13, "aidge_onnx.node_export.register_export", false]], "register_generic() (aidge_core.export_utils.exportlib class method)": [[5, "aidge_core.export_utils.ExportLib.register_generic", false]], "register_import() (in module aidge_onnx.node_import)": [[13, "aidge_onnx.node_import.register_import", false]], "register_metaop() (aidge_core.export_utils.exportlib class method)": [[5, "aidge_core.export_utils.ExportLib.register_metaop", false]], "relu() (in module aidge_core)": [[9, "aidge_core.ReLU", false]], "remove_flatten() (in module aidge_core)": [[10, "aidge_core.remove_flatten", false]], "replace() (aidge_core.graphview static method)": [[6, "aidge_core.GraphView.replace", false]], "reset_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.reset_scheduling", false]], "reset_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.reset_scheduling", false]], "reset_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.reset_scheduling", false]], "reshape() (in module aidge_core)": [[9, "aidge_core.Reshape", false]], "residual() (in module aidge_core)": [[6, "aidge_core.residual", false]], "resize() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.resize", false]], "root_node() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.root_node", false]], "run_sync (c++ function)": [[12, "_CPPv48run_sync6inputs", false]], "save (c++ function)": [[12, "_CPPv44save8filepath", false]], "save() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.save", false]], "save_factorized_static_scheduling_diagram() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.save_factorized_static_scheduling_diagram", false]], "save_factorized_static_scheduling_diagram() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.save_factorized_static_scheduling_diagram", false]], "save_factorized_static_scheduling_diagram() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.save_factorized_static_scheduling_diagram", false]], "save_scheduling_diagram() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.save_scheduling_diagram", false]], "save_scheduling_diagram() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.save_scheduling_diagram", false]], "save_scheduling_diagram() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.save_scheduling_diagram", false]], "save_static_scheduling_diagram() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.save_static_scheduling_diagram", false]], "save_static_scheduling_diagram() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.save_static_scheduling_diagram", false]], "save_static_scheduling_diagram() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.save_static_scheduling_diagram", false]], "scheduler (class in aidge_core)": [[11, "aidge_core.Scheduler", false]], "scheduler_export() (in module aidge_core.export_utils)": [[5, "aidge_core.export_utils.scheduler_export", false]], "sequential() (in module aidge_core)": [[6, "aidge_core.sequential", false]], "sequentialscheduler (class in aidge_core)": [[11, "aidge_core.SequentialScheduler", false]], "set_back_edges() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_back_edges", false]], "set_back_edges() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_back_edges", false]], "set_backend() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_backend", false]], "set_backend() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_backend", false]], "set_backend() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_backend", false]], "set_backend() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_backend", false]], "set_data_format() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_data_format", false]], "set_dataformat() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_dataformat", false]], "set_dataformat() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_dataformat", false]], "set_dataformat() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_dataformat", false]], "set_datatype() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_datatype", false]], "set_datatype() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_datatype", false]], "set_datatype() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_datatype", false]], "set_datatype() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_datatype", false]], "set_grad() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_grad", false]], "set_impl() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_impl", false]], "set_impl() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_impl", false]], "set_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_input", false]], "set_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_input", false]], "set_name() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_name", false]], "set_name() (aidge_core.node method)": [[6, "aidge_core.Node.set_name", false]], "set_ordered_inputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_ordered_inputs", false]], "set_ordered_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_ordered_outputs", false]], "set_output() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_output", false]], "set_output() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_output", false]], "set_root_node() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_root_node", false]], "set_scheduling_policy() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.set_scheduling_policy", false]], "sigmoid() (in module aidge_core)": [[9, "aidge_core.Sigmoid", false]], "singlepassgraphmatching (class in aidge_core)": [[7, "aidge_core.SinglePassGraphMatching", false]], "size() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.size", false]], "slice() (in module aidge_core)": [[9, "aidge_core.Slice", false]], "softmax() (in module aidge_core)": [[9, "aidge_core.Softmax", false]], "sqrt() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.sqrt", false]], "sqrt() (in module aidge_core)": [[9, "aidge_core.Sqrt", false]], "sub() (in module aidge_core)": [[9, "aidge_core.Sub", false]], "supported_operators() (in module aidge_onnx.node_export)": [[13, "aidge_onnx.node_export.supported_operators", false]], "supported_operators() (in module aidge_onnx.node_import)": [[13, "aidge_onnx.node_import.supported_operators", false]], "tag_conditional_nodes() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.tag_conditional_nodes", false]], "tag_conditional_nodes() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.tag_conditional_nodes", false]], "tag_conditional_nodes() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.tag_conditional_nodes", false]], "tanh() (in module aidge_core)": [[9, "aidge_core.Tanh", false]], "tensor (class in aidge_core)": [[4, "aidge_core.Tensor", false]], "transpose() (in module aidge_core)": [[9, "aidge_core.Transpose", false]], "type() (aidge_core.node method)": [[6, "aidge_core.Node.type", false]], "type() (aidge_core.operator method)": [[9, "aidge_core.Operator.type", false]], "type() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.type", false]], "undefined() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.undefined", false]], "zeros() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.zeros", false]]}, "objects": {"": [[9, 0, 1, "_CPPv4N5Aidge3AddERKNSt6stringE", "Aidge::Add"], [9, 1, 1, "_CPPv4N5Aidge3AddERKNSt6stringE", "Aidge::Add::name"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling::ceil_mode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling::dilations"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::AvgPooling::stride_dims"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::epsilon"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::momentum"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::nbFeatures"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::trainingMode"], [9, 0, 1, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", "Aidge::Cast"], [9, 1, 1, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", "Aidge::Cast::name"], [9, 1, 1, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", "Aidge::Cast::targetType"], [9, 0, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat"], [9, 1, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat::axis"], [9, 1, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat::name"], [9, 1, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat::nbIn"], [6, 3, 1, "_CPPv4N5Aidge9ConnectorE", "Aidge::Connector"], [6, 0, 1, "_CPPv4N5Aidge9Connector9ConnectorENSt10shared_ptrI4NodeEE", "Aidge::Connector::Connector"], [6, 0, 1, "_CPPv4N5Aidge9Connector9ConnectorEv", "Aidge::Connector::Connector"], [6, 1, 1, "_CPPv4N5Aidge9Connector9ConnectorENSt10shared_ptrI4NodeEE", "Aidge::Connector::Connector::node"], [6, 0, 1, "_CPPv4NK5Aidge9Connector5indexEv", "Aidge::Connector::index"], [6, 0, 1, "_CPPv4NK5Aidge9Connector4nodeEv", "Aidge::Connector::node"], [6, 0, 1, "_CPPv4NK5Aidge9ConnectorixE9IOIndex_t", "Aidge::Connector::operator[]"], [6, 1, 1, "_CPPv4NK5Aidge9ConnectorixE9IOIndex_t", "Aidge::Connector::operator[]::index"], [6, 0, 1, "_CPPv4NK5Aidge9Connector4sizeEv", "Aidge::Connector::size"], [6, 0, 1, "_CPPv4N5Aidge9ConnectorD0Ev", "Aidge::Connector::~Connector"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::dilationDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::inChannels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::kernelDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::noBias"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::outChannels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::strideDims"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::dilationDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::kernelDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::nbChannels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::noBias"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::strideDims"], [4, 3, 1, "_CPPv4N5Aidge12DataProviderE", "Aidge::DataProvider"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::backend"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::batchSize"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::database"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::dropLast"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::shuffle"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider4doneEv", "Aidge::DataProvider::done"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider13getIndexBatchEv", "Aidge::DataProvider::getIndexBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider10getNbBatchEv", "Aidge::DataProvider::getNbBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider19incrementIndexBatchEv", "Aidge::DataProvider::incrementIndexBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider4iterEv", "Aidge::DataProvider::iter"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider4nextEv", "Aidge::DataProvider::next"], [4, 0, 1, "_CPPv4NK5Aidge12DataProvider9readBatchEv", "Aidge::DataProvider::readBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider15resetIndexBatchEv", "Aidge::DataProvider::resetIndexBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider10setBatchesEv", "Aidge::DataProvider::setBatches"], [4, 3, 1, "_CPPv4N5Aidge8DatabaseE", "Aidge::Database"], [4, 0, 1, "_CPPv4N5Aidge8Database8DatabaseEv", "Aidge::Database::Database"], [4, 0, 1, "_CPPv4NK5Aidge8Database7getItemEKNSt6size_tE", "Aidge::Database::getItem"], [4, 1, 1, "_CPPv4NK5Aidge8Database7getItemEKNSt6size_tE", "Aidge::Database::getItem::index"], [4, 0, 1, "_CPPv4NK5Aidge8Database6getLenEv", "Aidge::Database::getLen"], [4, 0, 1, "_CPPv4NK5Aidge8Database15getNbModalitiesEv", "Aidge::Database::getNbModalities"], [4, 0, 1, "_CPPv4N5Aidge8DatabaseD0Ev", "Aidge::Database::~Database"], [9, 0, 1, "_CPPv4N5Aidge3DivERKNSt6stringE", "Aidge::Div"], [9, 1, 1, "_CPPv4N5Aidge3DivERKNSt6stringE", "Aidge::Div::name"], [9, 0, 1, "_CPPv4N5Aidge3ErfERKNSt6stringE", "Aidge::Erf"], [9, 1, 1, "_CPPv4N5Aidge3ErfERKNSt6stringE", "Aidge::Erf::name"], [9, 0, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::inChannels"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::name"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::noBias"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::outChannels"], [9, 0, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::axis"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::gatheredShape"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::indices"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::name"], [9, 0, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator"], [9, 0, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::name"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator::name"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::nbData"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::nbOut"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::nbParam"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator::op"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::type"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator::type"], [6, 3, 1, "_CPPv4N5Aidge9GraphViewE", "Aidge::GraphView"], [6, 0, 1, "_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE", "Aidge::GraphView::GraphView"], [6, 1, 1, "_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE", "Aidge::GraphView::GraphView::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", "Aidge::GraphView::add"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", "Aidge::GraphView::add"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", "Aidge::GraphView::add"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", "Aidge::GraphView::add"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", "Aidge::GraphView::add::otherGraph"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", "Aidge::GraphView::add::otherNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", "Aidge::GraphView::add::otherNodes"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", "Aidge::GraphView::add::otherNodes"], [6, 0, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild"], [6, 0, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild"], [6, 0, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromOutNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild::fromOutNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromOutNodeName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromTensor"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromTensor"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild::toNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toOtherNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toOtherNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild::toOtherView"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toTensor"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toTensor"], [6, 0, 1, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", "Aidge::GraphView::addOrderedOutputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", "Aidge::GraphView::addOrderedOutputs::outputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", "Aidge::GraphView::addOrderedOutputs::pos"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView5cloneEv", "Aidge::GraphView::clone"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView13cloneCallbackEPF7NodePtr7NodePtrE", "Aidge::GraphView::cloneCallback"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView13cloneCallbackEPF7NodePtr7NodePtrE", "Aidge::GraphView::cloneCallback::cloneNode"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView20cloneSharedOperatorsEv", "Aidge::GraphView::cloneSharedOperators"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView20cloneSharedProducersEv", "Aidge::GraphView::cloneSharedProducers"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::backend"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::datatype"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::device"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::dims"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10dataInputsEKNSt6stringE", "Aidge::GraphView::dataInputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10dataInputsEv", "Aidge::GraphView::dataInputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10dataInputsEKNSt6stringE", "Aidge::GraphView::dataInputs::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeE8DataType", "Aidge::GraphView::forwardDType"], [6, 0, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeERKNSt6vectorI8DataTypeEE", "Aidge::GraphView::forwardDType"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeE8DataType", "Aidge::GraphView::forwardDType::inputType"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeERKNSt6vectorI8DataTypeEE", "Aidge::GraphView::forwardDType::inputTypes"], [6, 0, 1, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", "Aidge::GraphView::forwardDims"], [6, 1, 1, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", "Aidge::GraphView::forwardDims::allowDataDependency"], [6, 1, 1, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", "Aidge::GraphView::forwardDims::dims"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr", "Aidge::GraphView::getChildren"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE", "Aidge::GraphView::getChildren"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEv", "Aidge::GraphView::getChildren"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE", "Aidge::GraphView::getChildren::nodeName"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr", "Aidge::GraphView::getChildren::otherNode"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView19getNbFreeDataInputsEv", "Aidge::GraphView::getNbFreeDataInputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE", "Aidge::GraphView::getNode"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE", "Aidge::GraphView::getNode::nodeName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView8getNodesEv", "Aidge::GraphView::getNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView16getOrderedInputsEv", "Aidge::GraphView::getOrderedInputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView15getOrderedNodesEb", "Aidge::GraphView::getOrderedNodes"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView15getOrderedNodesEb", "Aidge::GraphView::getOrderedNodes::reversed"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView17getOrderedOutputsEv", "Aidge::GraphView::getOrderedOutputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView17getOrderedParentsEv", "Aidge::GraphView::getOrderedParents"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10getParentsEKNSt6stringE", "Aidge::GraphView::getParents"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10getParentsEv", "Aidge::GraphView::getParents"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10getParentsEKNSt6stringE", "Aidge::GraphView::getParents::nodeName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView14getRankedNodesEv", "Aidge::GraphView::getRankedNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", "Aidge::GraphView::getRankedNodesName"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", "Aidge::GraphView::getRankedNodesName::format"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", "Aidge::GraphView::getRankedNodesName::markNonUnicity"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr", "Aidge::GraphView::inView"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inViewERKNSt6stringE", "Aidge::GraphView::inView"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView6inViewERKNSt6stringE", "Aidge::GraphView::inView::nodeName"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr", "Aidge::GraphView::inView::nodePtr"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory", "Aidge::GraphView::inputNodes"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory", "Aidge::GraphView::inputNodes::filter"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE", "Aidge::GraphView::inputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inputsEv", "Aidge::GraphView::inputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE", "Aidge::GraphView::inputs::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::childInputTensorIdx"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::childNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::newParentInputTensorIdx"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::newParentNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::newParentOutputTensorIdx"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr", "Aidge::GraphView::isInputNode"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr", "Aidge::GraphView::isInputNode::nodePtr"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr", "Aidge::GraphView::isOutputNode"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr", "Aidge::GraphView::isOutputNode::nodePtr"], [6, 0, 1, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", "Aidge::GraphView::link"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", "Aidge::GraphView::link::name1_inID"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", "Aidge::GraphView::link::name2_outID"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE", "Aidge::GraphView::logOutputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE", "Aidge::GraphView::logOutputs::dirName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView4nameEv", "Aidge::GraphView::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE", "Aidge::GraphView::operator()"], [6, 1, 1, "_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE", "Aidge::GraphView::operator()::ctors"], [6, 0, 1, "_CPPv4NK5Aidge9GraphVieweqERK9GraphView", "Aidge::GraphView::operator=="], [6, 1, 1, "_CPPv4NK5Aidge9GraphVieweqERK9GraphView", "Aidge::GraphView::operator==::gv"], [6, 0, 1, "_CPPv4NK5Aidge9GraphViewixERKNSt6stringE", "Aidge::GraphView::operator[]"], [6, 1, 1, "_CPPv4NK5Aidge9GraphViewixERKNSt6stringE", "Aidge::GraphView::operator[]::nodeName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11outputNodesEv", "Aidge::GraphView::outputNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView7outputsERKNSt6stringE", "Aidge::GraphView::outputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView7outputsEv", "Aidge::GraphView::outputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView7outputsERKNSt6stringE", "Aidge::GraphView::outputs::nodeName"], [6, 0, 1, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", "Aidge::GraphView::remove"], [6, 1, 1, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", "Aidge::GraphView::remove::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", "Aidge::GraphView::remove::nodePtr"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", "Aidge::GraphView::replace"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", "Aidge::GraphView::replace"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", "Aidge::GraphView::replace::newG"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", "Aidge::GraphView::replace::newNodes"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", "Aidge::GraphView::replace::oldG"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", "Aidge::GraphView::replace::oldNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView8rootNodeEv", "Aidge::GraphView::rootNode"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save::path"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save::showProducers"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save::verbose"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", "Aidge::GraphView::setBackend"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", "Aidge::GraphView::setBackend::backend"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", "Aidge::GraphView::setBackend::device"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat", "Aidge::GraphView::setDataFormat"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat", "Aidge::GraphView::setDataFormat::dataformat"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType", "Aidge::GraphView::setDataType"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType", "Aidge::GraphView::setDataType::datatype"], [6, 0, 1, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", "Aidge::GraphView::setInputId"], [6, 1, 1, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", "Aidge::GraphView::setInputId::inID"], [6, 1, 1, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", "Aidge::GraphView::setInputId::newNodeOutID"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE", "Aidge::GraphView::setName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE", "Aidge::GraphView::setName::name"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView12setNodesNameEv", "Aidge::GraphView::setNodesName"], [6, 0, 1, "_CPPv4N5Aidge9GraphView16setOrderedInputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedInputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView16setOrderedInputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedInputs::inputs"], [6, 0, 1, "_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedOutputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedOutputs::outputs"], [6, 0, 1, "_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr", "Aidge::GraphView::setRootNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr", "Aidge::GraphView::setRootNode::node"], [6, 0, 1, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", "Aidge::GraphView::swap"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", "Aidge::GraphView::swap::node"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", "Aidge::GraphView::swap::otherNode"], [6, 0, 1, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::GraphView::updateNodeName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::GraphView::updateNodeName::newName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::GraphView::updateNodeName::node"], [9, 0, 1, "_CPPv4N5Aidge8IdentityERKNSt6stringE", "Aidge::Identity"], [9, 1, 1, "_CPPv4N5Aidge8IdentityERKNSt6stringE", "Aidge::Identity::name"], [3, 3, 1, "_CPPv4N5Aidge8ImplSpecE", "Aidge::ImplSpec"], [3, 3, 1, "_CPPv4N5Aidge8ImplSpec6IOSpecE", "Aidge::ImplSpec::IOSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec::dims_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec::format_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec::type_"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec4dimsE", "Aidge::ImplSpec::IOSpec::dims"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6formatE", "Aidge::ImplSpec::IOSpec::format"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec4typeE", "Aidge::ImplSpec::IOSpec::type"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKN5Aidge8ImplSpecE", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::i"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::i"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::io"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::o"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::o"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec5attrsE", "Aidge::ImplSpec::attrs"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6inputsE", "Aidge::ImplSpec::inputs"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec7outputsE", "Aidge::ImplSpec::outputs"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpecD0Ev", "Aidge::ImplSpec::~ImplSpec"], [9, 0, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::hidden_channels"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::in_channels"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::name"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::noBias"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::seq_length"], [9, 0, 1, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", "Aidge::LeakyReLU"], [9, 1, 1, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", "Aidge::LeakyReLU::name"], [9, 1, 1, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", "Aidge::LeakyReLU::negativeSlope"], [2, 3, 1, "_CPPv4N5Aidge5MNISTE", "Aidge::MNIST"], [2, 5, 1, "_CPPv4N5Aidge5MNIST8DataTypeE", "Aidge::MNIST::DataType"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6DoubleE", "Aidge::MNIST::DataType::Double"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5FloatE", "Aidge::MNIST::DataType::Float"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType3IntE", "Aidge::MNIST::DataType::Int"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5ShortE", "Aidge::MNIST::DataType::Short"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6SignedE", "Aidge::MNIST::DataType::Signed"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType8UnsignedE", "Aidge::MNIST::DataType::Unsigned"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6DoubleE", "Aidge::MNIST::Double"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5FloatE", "Aidge::MNIST::Float"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType3IntE", "Aidge::MNIST::Int"], [2, 0, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST"], [2, 1, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST::dataPath"], [2, 1, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST::loadDataInMemory"], [2, 1, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST::train"], [2, 7, 1, "_CPPv4N5Aidge5MNIST11MagicNumberE", "Aidge::MNIST::MagicNumber"], [2, 4, 1, "_CPPv4N5Aidge5MNIST11MagicNumber4byteE", "Aidge::MNIST::MagicNumber::byte"], [2, 4, 1, "_CPPv4N5Aidge5MNIST11MagicNumber5valueE", "Aidge::MNIST::MagicNumber::value"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5ShortE", "Aidge::MNIST::Short"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6SignedE", "Aidge::MNIST::Signed"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType8UnsignedE", "Aidge::MNIST::Unsigned"], [2, 0, 1, "_CPPv4NK5Aidge5MNIST7getItemEKNSt6size_tE", "Aidge::MNIST::getItem"], [2, 1, 1, "_CPPv4NK5Aidge5MNIST7getItemEKNSt6size_tE", "Aidge::MNIST::getItem::index"], [2, 0, 1, "_CPPv4NK5Aidge5MNIST6getLenEv", "Aidge::MNIST::getLen"], [2, 0, 1, "_CPPv4NK5Aidge5MNIST15getNbModalitiesEv", "Aidge::MNIST::getNbModalities"], [2, 0, 1, "_CPPv4N5Aidge5MNISTD0Ev", "Aidge::MNIST::~MNIST"], [9, 0, 1, "_CPPv4N5Aidge6MatMulERKNSt6stringE", "Aidge::MatMul"], [9, 1, 1, "_CPPv4N5Aidge6MatMulERKNSt6stringE", "Aidge::MatMul::name"], [9, 0, 1, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", "Aidge::Memorize"], [9, 1, 1, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", "Aidge::Memorize::endStep"], [9, 1, 1, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", "Aidge::Memorize::name"], [9, 0, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::forcedInputsCategory"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::graph"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::name"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::type"], [9, 0, 1, "_CPPv4N5Aidge4MoveERKNSt6stringE", "Aidge::Move"], [9, 1, 1, "_CPPv4N5Aidge4MoveERKNSt6stringE", "Aidge::Move::name"], [9, 0, 1, "_CPPv4N5Aidge3MulERKNSt6stringE", "Aidge::Mul"], [9, 1, 1, "_CPPv4N5Aidge3MulERKNSt6stringE", "Aidge::Mul::name"], [6, 3, 1, "_CPPv4N5Aidge4NodeE", "Aidge::Node"], [6, 0, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", "Aidge::Node::Node"], [6, 0, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", "Aidge::Node::Node"], [6, 0, 1, "_CPPv4N5Aidge4Node4NodeEv", "Aidge::Node::Node"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", "Aidge::Node::Node::attrs"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", "Aidge::Node::Node::name"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", "Aidge::Node::Node::op"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", "Aidge::Node::Node::op"], [6, 0, 1, "_CPPv4N5Aidge4Node16addAfterBackwardENSt8functionIFbvEEE", "Aidge::Node::addAfterBackward"], [6, 1, 1, "_CPPv4N5Aidge4Node16addAfterBackwardENSt8functionIFbvEEE", "Aidge::Node::addAfterBackward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node15addAfterForwardENSt8functionIFbvEEE", "Aidge::Node::addAfterForward"], [6, 1, 1, "_CPPv4N5Aidge4Node15addAfterForwardENSt8functionIFbvEEE", "Aidge::Node::addAfterForward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node17addBeforeBackwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeBackward"], [6, 1, 1, "_CPPv4N5Aidge4Node17addBeforeBackwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeBackward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node16addBeforeForwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeForward"], [6, 1, 1, "_CPPv4N5Aidge4Node16addBeforeForwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeForward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild"], [6, 0, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild::otherInId"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild::otherInId"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild::otherNode"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild::otherView"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild::outId"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild::outId"], [6, 0, 1, "_CPPv4N5Aidge4Node7addViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::addView"], [6, 1, 1, "_CPPv4N5Aidge4Node7addViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::addView::graphPtr"], [6, 0, 1, "_CPPv4NK5Aidge4Node10attributesEv", "Aidge::Node::attributes"], [6, 0, 1, "_CPPv4N5Aidge4Node8backwardEv", "Aidge::Node::backward"], [6, 0, 1, "_CPPv4N5Aidge4Node5cloneE7NodePtr", "Aidge::Node::clone"], [6, 0, 1, "_CPPv4NK5Aidge4Node5cloneEv", "Aidge::Node::clone"], [6, 1, 1, "_CPPv4N5Aidge4Node5cloneE7NodePtr", "Aidge::Node::clone::node"], [6, 0, 1, "_CPPv4N5Aidge4Node20cloneSharedOperatorsE7NodePtr", "Aidge::Node::cloneSharedOperators"], [6, 0, 1, "_CPPv4NK5Aidge4Node20cloneSharedOperatorsEv", "Aidge::Node::cloneSharedOperators"], [6, 1, 1, "_CPPv4N5Aidge4Node20cloneSharedOperatorsE7NodePtr", "Aidge::Node::cloneSharedOperators::node"], [6, 0, 1, "_CPPv4N5Aidge4Node20cloneSharedProducersE7NodePtr", "Aidge::Node::cloneSharedProducers"], [6, 0, 1, "_CPPv4NK5Aidge4Node20cloneSharedProducersEv", "Aidge::Node::cloneSharedProducers"], [6, 1, 1, "_CPPv4N5Aidge4Node20cloneSharedProducersE7NodePtr", "Aidge::Node::cloneSharedProducers::node"], [6, 0, 1, "_CPPv4N5Aidge4Node16createUniqueNameENSt6stringE", "Aidge::Node::createUniqueName"], [6, 1, 1, "_CPPv4N5Aidge4Node16createUniqueNameENSt6stringE", "Aidge::Node::createUniqueName::name"], [6, 0, 1, "_CPPv4NK5Aidge4Node10dataInputsEv", "Aidge::Node::dataInputs"], [6, 0, 1, "_CPPv4N5Aidge4Node7forwardEv", "Aidge::Node::forward"], [6, 0, 1, "_CPPv4NK5Aidge4Node11getChildrenEK9IOIndex_t", "Aidge::Node::getChildren"], [6, 0, 1, "_CPPv4NK5Aidge4Node11getChildrenEv", "Aidge::Node::getChildren"], [6, 1, 1, "_CPPv4NK5Aidge4Node11getChildrenEK9IOIndex_t", "Aidge::Node::getChildren::outId"], [6, 0, 1, "_CPPv4NK5Aidge4Node21getFirstFreeDataInputEv", "Aidge::Node::getFirstFreeDataInput"], [6, 0, 1, "_CPPv4NK5Aidge4Node19getNbFreeDataInputsEv", "Aidge::Node::getNbFreeDataInputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node11getOperatorEv", "Aidge::Node::getOperator"], [6, 0, 1, "_CPPv4NK5Aidge4Node18getOrderedChildrenEv", "Aidge::Node::getOrderedChildren"], [6, 0, 1, "_CPPv4N5Aidge4Node9getParentEK9IOIndex_t", "Aidge::Node::getParent"], [6, 1, 1, "_CPPv4N5Aidge4Node9getParentEK9IOIndex_t", "Aidge::Node::getParent::inId"], [6, 0, 1, "_CPPv4NK5Aidge4Node10getParentsEv", "Aidge::Node::getParents"], [6, 0, 1, "_CPPv4NK5Aidge4Node5inputEK9IOIndex_t", "Aidge::Node::input"], [6, 1, 1, "_CPPv4NK5Aidge4Node5inputEK9IOIndex_t", "Aidge::Node::input::inID"], [6, 0, 1, "_CPPv4NK5Aidge4Node13inputCategoryE9IOIndex_t", "Aidge::Node::inputCategory"], [6, 1, 1, "_CPPv4NK5Aidge4Node13inputCategoryE9IOIndex_t", "Aidge::Node::inputCategory::idx"], [6, 0, 1, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", "Aidge::Node::inputName"], [6, 0, 1, "_CPPv4NK5Aidge4Node9inputNameEK9IOIndex_t", "Aidge::Node::inputName"], [6, 1, 1, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", "Aidge::Node::inputName::inID"], [6, 1, 1, "_CPPv4NK5Aidge4Node9inputNameEK9IOIndex_t", "Aidge::Node::inputName::inID"], [6, 1, 1, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", "Aidge::Node::inputName::newName"], [6, 0, 1, "_CPPv4NK5Aidge4Node6inputsEv", "Aidge::Node::inputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node11inputsNamesEv", "Aidge::Node::inputsNames"], [6, 0, 1, "_CPPv4NK5Aidge4Node4nameEv", "Aidge::Node::name"], [6, 0, 1, "_CPPv4NK5Aidge4Node8nbInputsEv", "Aidge::Node::nbInputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node9nbOutputsEv", "Aidge::Node::nbOutputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node13nbValidInputsEv", "Aidge::Node::nbValidInputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node14nbValidOutputsEv", "Aidge::Node::nbValidOutputs"], [6, 0, 1, "_CPPv4N5Aidge4NodeclERKNSt6vectorI9ConnectorEE", "Aidge::Node::operator()"], [6, 1, 1, "_CPPv4N5Aidge4NodeclERKNSt6vectorI9ConnectorEE", "Aidge::Node::operator()::ctors"], [6, 0, 1, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", "Aidge::Node::operator=="], [6, 1, 1, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", "Aidge::Node::operator==::lhs"], [6, 1, 1, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", "Aidge::Node::operator==::rhs"], [6, 0, 1, "_CPPv4NK5Aidge4Node6outputE9IOIndex_t", "Aidge::Node::output"], [6, 1, 1, "_CPPv4NK5Aidge4Node6outputE9IOIndex_t", "Aidge::Node::output::outId"], [6, 0, 1, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", "Aidge::Node::outputName"], [6, 0, 1, "_CPPv4NK5Aidge4Node10outputNameE9IOIndex_t", "Aidge::Node::outputName"], [6, 1, 1, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", "Aidge::Node::outputName::newName"], [6, 1, 1, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", "Aidge::Node::outputName::outId"], [6, 1, 1, "_CPPv4NK5Aidge4Node10outputNameE9IOIndex_t", "Aidge::Node::outputName::outId"], [6, 0, 1, "_CPPv4NK5Aidge4Node7outputsEv", "Aidge::Node::outputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node12outputsNamesEv", "Aidge::Node::outputsNames"], [6, 0, 1, "_CPPv4NK5Aidge4Node16parentIsBackEdgeE9IOIndex_t", "Aidge::Node::parentIsBackEdge"], [6, 1, 1, "_CPPv4NK5Aidge4Node16parentIsBackEdgeE9IOIndex_t", "Aidge::Node::parentIsBackEdge::idx"], [6, 0, 1, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", "Aidge::Node::removeChild"], [6, 1, 1, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", "Aidge::Node::removeChild::nodePtr"], [6, 1, 1, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", "Aidge::Node::removeChild::outId"], [6, 0, 1, "_CPPv4N5Aidge4Node10removeViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::removeView"], [6, 1, 1, "_CPPv4N5Aidge4Node10removeViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::removeView::graphPtr"], [6, 0, 1, "_CPPv4N5Aidge4Node16resetConnectionsEb", "Aidge::Node::resetConnections"], [6, 1, 1, "_CPPv4N5Aidge4Node16resetConnectionsEb", "Aidge::Node::resetConnections::includeLearnableParam"], [6, 0, 1, "_CPPv4N5Aidge4Node7setNameERKNSt6stringE", "Aidge::Node::setName"], [6, 1, 1, "_CPPv4N5Aidge4Node7setNameERKNSt6stringE", "Aidge::Node::setName::name"], [6, 0, 1, "_CPPv4NK5Aidge4Node4typeEv", "Aidge::Node::type"], [6, 0, 1, "_CPPv4NK5Aidge4Node5validEv", "Aidge::Node::valid"], [6, 0, 1, "_CPPv4NK5Aidge4Node5viewsEv", "Aidge::Node::views"], [6, 0, 1, "_CPPv4N5Aidge4NodeD0Ev", "Aidge::Node::~Node"], [9, 3, 1, "_CPPv4N5Aidge8OperatorE", "Aidge::Operator"], [9, 0, 1, "_CPPv4N5Aidge8Operator8OperatorERK8Operator", "Aidge::Operator::Operator"], [9, 0, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator"], [9, 0, 1, "_CPPv4N5Aidge8Operator8OperatorEv", "Aidge::Operator::Operator"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::inputsCategory"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::nbOut"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERK8Operator", "Aidge::Operator::Operator::op"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::operatorType"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::type"], [9, 0, 1, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::associateInput"], [9, 1, 1, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::associateInput::data"], [9, 1, 1, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::associateInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator10attributesEv", "Aidge::Operator::attributes"], [9, 0, 1, "_CPPv4NK5Aidge8Operator7backendEv", "Aidge::Operator::backend"], [9, 0, 1, "_CPPv4N5Aidge8Operator8backwardEv", "Aidge::Operator::backward"], [9, 0, 1, "_CPPv4NK5Aidge8Operator5cloneEv", "Aidge::Operator::clone"], [9, 0, 1, "_CPPv4N5Aidge8Operator7forwardEv", "Aidge::Operator::forward"], [9, 0, 1, "_CPPv4NK5Aidge8Operator20getAvailableBackendsEv", "Aidge::Operator::getAvailableBackends"], [9, 0, 1, "_CPPv4NK5Aidge8Operator7getImplEv", "Aidge::Operator::getImpl"], [9, 0, 1, "_CPPv4N5Aidge8Operator13getInputsNameEv", "Aidge::Operator::getInputsName"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t", "Aidge::Operator::getNbConsumedData"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t", "Aidge::Operator::getNbConsumedData::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getNbProducedDataEK9IOIndex_t", "Aidge::Operator::getNbProducedData"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getNbProducedDataEK9IOIndex_t", "Aidge::Operator::getNbProducedData::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t", "Aidge::Operator::getNbRequiredData"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t", "Aidge::Operator::getNbRequiredData::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t", "Aidge::Operator::getNbRequiredProtected"], [9, 1, 1, "_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t", "Aidge::Operator::getNbRequiredProtected::inputIdx"], [9, 0, 1, "_CPPv4N5Aidge8Operator14getOutputsNameEv", "Aidge::Operator::getOutputsName"], [9, 0, 1, "_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t", "Aidge::Operator::getRawInput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t", "Aidge::Operator::getRawInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator12getRawOutputEK9IOIndex_t", "Aidge::Operator::getRawOutput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator12getRawOutputEK9IOIndex_t", "Aidge::Operator::getRawOutput::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", "Aidge::Operator::getRequiredMemory"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", "Aidge::Operator::getRequiredMemory::inputsSize"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", "Aidge::Operator::getRequiredMemory::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator19inheritedAttributesEv", "Aidge::Operator::inheritedAttributes"], [9, 0, 1, "_CPPv4NK5Aidge8Operator13inputCategoryE9IOIndex_t", "Aidge::Operator::inputCategory"], [9, 0, 1, "_CPPv4NK5Aidge8Operator13inputCategoryEv", "Aidge::Operator::inputCategory"], [9, 1, 1, "_CPPv4NK5Aidge8Operator13inputCategoryE9IOIndex_t", "Aidge::Operator::inputCategory::idx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator8isAtomicEv", "Aidge::Operator::isAtomic"], [9, 0, 1, "_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t", "Aidge::Operator::isBackEdge"], [9, 1, 1, "_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t", "Aidge::Operator::isBackEdge::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator15isOptionalInputENSt6size_tE", "Aidge::Operator::isOptionalInput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator15isOptionalInputENSt6size_tE", "Aidge::Operator::isOptionalInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator8nbInputsEv", "Aidge::Operator::nbInputs"], [9, 0, 1, "_CPPv4NK5Aidge8Operator9nbOutputsEv", "Aidge::Operator::nbOutputs"], [9, 0, 1, "_CPPv4NK5Aidge8Operator12operatorTypeEv", "Aidge::Operator::operatorType"], [9, 0, 1, "_CPPv4N5Aidge8Operator22resetConsummerProducerEv", "Aidge::Operator::resetConsummerProducer"], [9, 0, 1, "_CPPv4N5Aidge8Operator10resetInputEK9IOIndex_t", "Aidge::Operator::resetInput"], [9, 1, 1, "_CPPv4N5Aidge8Operator10resetInputEK9IOIndex_t", "Aidge::Operator::resetInput::inputIdx"], [9, 0, 1, "_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE", "Aidge::Operator::setBackEdges"], [9, 1, 1, "_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE", "Aidge::Operator::setBackEdges::backEdges"], [9, 0, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", "Aidge::Operator::setBackend"], [9, 0, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6vectorINSt4pairINSt6stringE11DeviceIdx_tEEEE", "Aidge::Operator::setBackend"], [9, 1, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6vectorINSt4pairINSt6stringE11DeviceIdx_tEEEE", "Aidge::Operator::setBackend::backends"], [9, 1, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", "Aidge::Operator::setBackend::device"], [9, 1, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", "Aidge::Operator::setBackend::name"], [9, 0, 1, "_CPPv4NK5Aidge8Operator13setDataFormatERK10DataFormat", "Aidge::Operator::setDataFormat"], [9, 1, 1, "_CPPv4NK5Aidge8Operator13setDataFormatERK10DataFormat", "Aidge::Operator::setDataFormat::dataFormat"], [9, 0, 1, "_CPPv4NK5Aidge8Operator11setDataTypeERK8DataType", "Aidge::Operator::setDataType"], [9, 1, 1, "_CPPv4NK5Aidge8Operator11setDataTypeERK8DataType", "Aidge::Operator::setDataType::dataType"], [9, 0, 1, "_CPPv4N5Aidge8Operator7setImplENSt10shared_ptrI12OperatorImplEE", "Aidge::Operator::setImpl"], [9, 1, 1, "_CPPv4N5Aidge8Operator7setImplENSt10shared_ptrI12OperatorImplEE", "Aidge::Operator::setImpl::impl"], [9, 0, 1, "_CPPv4N5Aidge8Operator17setInheritedAttrsERNSt10shared_ptrI17DynamicAttributesEE", "Aidge::Operator::setInheritedAttrs"], [9, 1, 1, "_CPPv4N5Aidge8Operator17setInheritedAttrsERNSt10shared_ptrI17DynamicAttributesEE", "Aidge::Operator::setInheritedAttrs::attr"], [9, 0, 1, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setInput"], [9, 1, 1, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setInput::data"], [9, 1, 1, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setOutput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setOutput::data"], [9, 1, 1, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setOutput::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator4typeEv", "Aidge::Operator::type"], [9, 0, 1, "_CPPv4N5Aidge8Operator23updateConsummerProducerEv", "Aidge::Operator::updateConsummerProducer"], [9, 0, 1, "_CPPv4N5Aidge8OperatorD0Ev", "Aidge::Operator::~Operator"], [9, 3, 1, "_CPPv4N5Aidge14OperatorTensorE", "Aidge::OperatorTensor"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERK14OperatorTensor", "Aidge::OperatorTensor::OperatorTensor"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorEv", "Aidge::OperatorTensor::OperatorTensor"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor::inputsCategory"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor::nbOut"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERK14OperatorTensor", "Aidge::OperatorTensor::OperatorTensor::other"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor::type"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::associateInput"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::associateInput::data"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::associateInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField::firstEltDims"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField::outputDims"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor13dimsForwardedEv", "Aidge::OperatorTensor::dimsForwarded"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor7forwardEv", "Aidge::OperatorTensor::forward"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor12forwardDTypeEv", "Aidge::OperatorTensor::forwardDType"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor11forwardDimsEb", "Aidge::OperatorTensor::forwardDims"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor11forwardDimsEb", "Aidge::OperatorTensor::forwardDims::allowDataDependency"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor8getInputEK9IOIndex_t", "Aidge::OperatorTensor::getInput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor8getInputEK9IOIndex_t", "Aidge::OperatorTensor::getInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor9getInputsEv", "Aidge::OperatorTensor::getInputs"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor9getOutputEK9IOIndex_t", "Aidge::OperatorTensor::getOutput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor9getOutputEK9IOIndex_t", "Aidge::OperatorTensor::getOutput::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor10getOutputsEv", "Aidge::OperatorTensor::getOutputs"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor11getRawInputEK9IOIndex_t", "Aidge::OperatorTensor::getRawInput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor11getRawInputEK9IOIndex_t", "Aidge::OperatorTensor::getRawInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor12getRawOutputEKN5Aidge9IOIndex_tE", "Aidge::OperatorTensor::getRawOutput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor12getRawOutputEKN5Aidge9IOIndex_tE", "Aidge::OperatorTensor::getRawOutput::outputIdx"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor10resetInputEK9IOIndex_t", "Aidge::OperatorTensor::resetInput"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor10resetInputEK9IOIndex_t", "Aidge::OperatorTensor::resetInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor13setDataFormatERK10DataFormat", "Aidge::OperatorTensor::setDataFormat"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor13setDataFormatERK10DataFormat", "Aidge::OperatorTensor::setDataFormat::dataFormat"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor11setDataTypeERK8DataType", "Aidge::OperatorTensor::setDataType"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor11setDataTypeERK8DataType", "Aidge::OperatorTensor::setDataType::dataType"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setInput"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setInput::data"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setOutput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setOutput::data"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setOutput::outputIdx"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensorD0Ev", "Aidge::OperatorTensor::~OperatorTensor"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::beginEndTuples"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::borderType"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::borderValue"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::name"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::ceil_mode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::dilations"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::padding_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::stride_dims"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::dilation_dims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::in_channels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::kernel_dims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::no_bias"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::out_channels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::padding_dims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::stride_dims"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::dilation_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::nb_channels"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::no_bias"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::padding_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::stride_dims"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::ceil_mode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::dilations"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::padding_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::stride_dims"], [6, 0, 1, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Parallel"], [6, 1, 1, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Parallel::inputs"], [6, 1, 1, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Parallel::name"], [11, 3, 1, "_CPPv4N5Aidge17ParallelSchedulerE", "Aidge::ParallelScheduler"], [11, 0, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler::graphView"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler::resetCPModel"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler::upperNode"], [11, 0, 1, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::ParallelScheduler::forward"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::ParallelScheduler::forward::data"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::ParallelScheduler::forward::forwardDims"], [11, 0, 1, "_CPPv4N5Aidge17ParallelSchedulerD0Ev", "Aidge::ParallelScheduler::~ParallelScheduler"], [9, 0, 1, "_CPPv4N5Aidge3PopERKNSt6stringE", "Aidge::Pop"], [9, 1, 1, "_CPPv4N5Aidge3PopERKNSt6stringE", "Aidge::Pop::name"], [9, 0, 1, "_CPPv4N5Aidge3PowERKNSt6stringE", "Aidge::Pow"], [9, 1, 1, "_CPPv4N5Aidge3PowERKNSt6stringE", "Aidge::Pow::name"], [9, 0, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer"], [9, 0, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer"], [9, 2, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::DIM"], [9, 1, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::constant"], [9, 1, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer::constant"], [9, 1, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::dims"], [9, 1, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::name"], [9, 1, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer::name"], [9, 1, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer::tensor"], [9, 0, 1, "_CPPv4N5Aidge4ReLUERKNSt6stringE", "Aidge::ReLU"], [9, 1, 1, "_CPPv4N5Aidge4ReLUERKNSt6stringE", "Aidge::ReLU::name"], [9, 0, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE", "Aidge::ReduceMean"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE", "Aidge::ReduceMean::axes"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE", "Aidge::ReduceMean::keep_dims"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE", "Aidge::ReduceMean::name"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE", "Aidge::ReduceMean::noop_with_empty_axes"], [9, 0, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape"], [9, 1, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape::allowzero"], [9, 1, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape::name"], [9, 1, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape::shape"], [6, 0, 1, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Residual"], [6, 1, 1, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Residual::inputs"], [6, 1, 1, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Residual::name"], [9, 0, 1, "_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE", "Aidge::Scaling"], [9, 1, 1, "_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE", "Aidge::Scaling::isOutputUnsigned"], [9, 1, 1, "_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE", "Aidge::Scaling::name"], [9, 1, 1, "_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE", "Aidge::Scaling::quantizedNbBits"], [9, 1, 1, "_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE", "Aidge::Scaling::scalingFactor"], [11, 3, 1, "_CPPv4N5Aidge9SchedulerE", "Aidge::Scheduler"], [11, 5, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatusE", "Aidge::Scheduler::AvailableDataStatus"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus9ConnectedE", "Aidge::Scheduler::AvailableDataStatus::Connected"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus12NotConnectedE", "Aidge::Scheduler::AvailableDataStatus::NotConnected"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus23UpperNodeInputConnectedE", "Aidge::Scheduler::AvailableDataStatus::UpperNodeInputConnected"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus19UpperNodeInputFoundE", "Aidge::Scheduler::AvailableDataStatus::UpperNodeInputFound"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus11ValidTensorE", "Aidge::Scheduler::AvailableDataStatus::ValidTensor"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler8ExecTimeE", "Aidge::Scheduler::ExecTime"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler8ExecTime3getEv", "Aidge::Scheduler::ExecTime::get"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler8ExecTime6updateERKNSt6vectorI17SchedulingElementEE", "Aidge::Scheduler::ExecTime::update"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler8ExecTime6updateERKNSt6vectorI17SchedulingElementEE", "Aidge::Scheduler::ExecTime::update::scheduling"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTimeE", "Aidge::Scheduler::NodeExecTime"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime12NodeExecTimeEv", "Aidge::Scheduler::NodeExecTime::NodeExecTime"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6mCountE", "Aidge::Scheduler::NodeExecTime::mCount"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime3mM2E", "Aidge::Scheduler::NodeExecTime::mM2"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime5mMeanE", "Aidge::Scheduler::NodeExecTime::mMean"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler12NodeExecTime4meanEv", "Aidge::Scheduler::NodeExecTime::mean"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler12NodeExecTime6stdDevEv", "Aidge::Scheduler::NodeExecTime::stdDev"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::NodeExecTime::update"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::NodeExecTime::update::end"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::NodeExecTime::update::start"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersE", "Aidge::Scheduler::PriorProducersConsumers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersERK23PriorProducersConsumers", "Aidge::Scheduler::PriorProducersConsumers::PriorProducersConsumers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersEv", "Aidge::Scheduler::PriorProducersConsumers::PriorProducersConsumers"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers7isPriorE", "Aidge::Scheduler::PriorProducersConsumers::isPrior"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers14priorConsumersE", "Aidge::Scheduler::PriorProducersConsumers::priorConsumers"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers17requiredProducersE", "Aidge::Scheduler::PriorProducersConsumers::requiredProducers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersD0Ev", "Aidge::Scheduler::PriorProducersConsumers::~PriorProducersConsumers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler9SchedulerEv", "Aidge::Scheduler::Scheduler"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler::graphView"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler::resetCPModel"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler::upperNode"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElementE", "Aidge::Scheduler::SchedulingElement"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement::end_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement::node_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement::start_"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement3endE", "Aidge::Scheduler::SchedulingElement::end"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement4nodeE", "Aidge::Scheduler::SchedulingElement::node"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement5startE", "Aidge::Scheduler::SchedulingElement::start"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElementD0Ev", "Aidge::Scheduler::SchedulingElement::~SchedulingElement"], [11, 5, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicyE", "Aidge::Scheduler::SchedulingPolicy"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsLateAsPossibleE", "Aidge::Scheduler::SchedulingPolicy::AsLateAsPossible"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsSoonAsPossibleE", "Aidge::Scheduler::SchedulingPolicy::AsSoonAsPossible"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy7DefaultE", "Aidge::Scheduler::SchedulingPolicy::Default"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19LonguestBranchFirstE", "Aidge::Scheduler::SchedulingPolicy::LonguestBranchFirst"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19ShortestBranchFirstE", "Aidge::Scheduler::SchedulingPolicy::ShortestBranchFirst"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElementE", "Aidge::Scheduler::StaticSchedulingElement"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement::early_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement::late_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement::node_"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement11earlierThanE", "Aidge::Scheduler::StaticSchedulingElement::earlierThan"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement5earlyE", "Aidge::Scheduler::StaticSchedulingElement::early"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4lateE", "Aidge::Scheduler::StaticSchedulingElement::late"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement9laterThanE", "Aidge::Scheduler::StaticSchedulingElement::laterThan"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4nodeE", "Aidge::Scheduler::StaticSchedulingElement::node"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler15clearSchedulingEv", "Aidge::Scheduler::clearScheduling"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler13connectInputsERKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::Scheduler::connectInputs"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler13connectInputsERKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::Scheduler::connectInputs::data"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler18generateSchedulingEv", "Aidge::Scheduler::generateScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler21getBackwardSchedulingEv", "Aidge::Scheduler::getBackwardScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler20getForwardSchedulingEv", "Aidge::Scheduler::getForwardScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", "Aidge::Scheduler::getSequentialStaticScheduling"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", "Aidge::Scheduler::getSequentialStaticScheduling::policy"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", "Aidge::Scheduler::getSequentialStaticScheduling::step"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler19getStaticSchedulingENSt6size_tE", "Aidge::Scheduler::getStaticScheduling"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler19getStaticSchedulingENSt6size_tE", "Aidge::Scheduler::getStaticScheduling::step"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler9graphViewEv", "Aidge::Scheduler::graphView"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler15resetSchedulingEv", "Aidge::Scheduler::resetScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram::fileName"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram::ignoreProducers"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram::minRepeat"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveSchedulingDiagram"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveSchedulingDiagram::fileName"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveSchedulingDiagram::ignoreProducers"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveStaticSchedulingDiagram"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveStaticSchedulingDiagram::fileName"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveStaticSchedulingDiagram::ignoreProducers"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler19tagConditionalNodesEv", "Aidge::Scheduler::tagConditionalNodes"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler15tagForkBranchesEv", "Aidge::Scheduler::tagForkBranches"], [11, 0, 1, "_CPPv4N5Aidge9SchedulerD0Ev", "Aidge::Scheduler::~Scheduler"], [6, 0, 1, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Sequential"], [6, 1, 1, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Sequential::inputs"], [6, 1, 1, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Sequential::name"], [11, 3, 1, "_CPPv4N5Aidge19SequentialSchedulerE", "Aidge::SequentialScheduler"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler::graphView"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler::resetCPModel"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler::upperNode"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler8backwardEv", "Aidge::SequentialScheduler::backward"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::SequentialScheduler::forward"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::SequentialScheduler::forward::data"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::SequentialScheduler::forward::forwardDims"], [11, 0, 1, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", "Aidge::SequentialScheduler::generateMemory"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", "Aidge::SequentialScheduler::generateMemory::incProducers"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", "Aidge::SequentialScheduler::generateMemory::wrapAroundBuffer"], [11, 0, 1, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", "Aidge::SequentialScheduler::generateMemoryAutoConcat"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", "Aidge::SequentialScheduler::generateMemoryAutoConcat::incProducers"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", "Aidge::SequentialScheduler::generateMemoryAutoConcat::wrapAroundBuffer"], [11, 0, 1, "_CPPv4NK5Aidge19SequentialScheduler29getSequentialStaticSchedulingENSt6size_tE", "Aidge::SequentialScheduler::getSequentialStaticScheduling"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler29getSequentialStaticSchedulingENSt6size_tE", "Aidge::SequentialScheduler::getSequentialStaticScheduling::step"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler19setSchedulingPolicyE16SchedulingPolicy", "Aidge::SequentialScheduler::setSchedulingPolicy"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19setSchedulingPolicyE16SchedulingPolicy", "Aidge::SequentialScheduler::setSchedulingPolicy::policy"], [11, 0, 1, "_CPPv4N5Aidge19SequentialSchedulerD0Ev", "Aidge::SequentialScheduler::~SequentialScheduler"], [9, 0, 1, "_CPPv4N5Aidge7SigmoidERKNSt6stringE", "Aidge::Sigmoid"], [9, 1, 1, "_CPPv4N5Aidge7SigmoidERKNSt6stringE", "Aidge::Sigmoid::name"], [7, 3, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingE", "Aidge::SinglePassGraphMatching"], [7, 3, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextE", "Aidge::SinglePassGraphMatching::Context"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextERK7Context", "Aidge::SinglePassGraphMatching::Context::Context"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextEv", "Aidge::SinglePassGraphMatching::Context::Context"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7anchorsE", "Aidge::SinglePassGraphMatching::Context::anchors"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5depthE", "Aidge::SinglePassGraphMatching::Context::depth"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context11edgeLeftIdxE", "Aidge::SinglePassGraphMatching::Context::edgeLeftIdx"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12edgeRightIdxE", "Aidge::SinglePassGraphMatching::Context::edgeRightIdx"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9firstNodeE", "Aidge::SinglePassGraphMatching::Context::firstNode"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context13firstSequenceE", "Aidge::SinglePassGraphMatching::Context::firstSequence"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context10inSequenceE", "Aidge::SinglePassGraphMatching::Context::inSequence"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12lookForChildE", "Aidge::SinglePassGraphMatching::Context::lookForChild"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextaSERK7Context", "Aidge::SinglePassGraphMatching::Context::operator="], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5queryE", "Aidge::SinglePassGraphMatching::Context::query"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12singleOutputE", "Aidge::SinglePassGraphMatching::Context::singleOutput"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9startNodeE", "Aidge::SinglePassGraphMatching::Context::startNode"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextD0Ev", "Aidge::SinglePassGraphMatching::Context::~Context"], [7, 3, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultE", "Aidge::SinglePassGraphMatching::MatchingResult"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::MatchingResult"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultEv", "Aidge::SinglePassGraphMatching::MatchingResult::MatchingResult"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::MatchingResult::other"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult7anchorsE", "Aidge::SinglePassGraphMatching::MatchingResult::anchors"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult5graphE", "Aidge::SinglePassGraphMatching::MatchingResult::graph"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultaSERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::operator="], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultaSERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::operator=::other"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult9startNodeE", "Aidge::SinglePassGraphMatching::MatchingResult::startNode"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultD0Ev", "Aidge::SinglePassGraphMatching::MatchingResult::~MatchingResult"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingENSt10shared_ptrI9GraphViewEE", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingEv", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingENSt10shared_ptrI9GraphViewEE", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching::graph"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching::other"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", "Aidge::SinglePassGraphMatching::addNodeLambda"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", "Aidge::SinglePassGraphMatching::addNodeLambda::func"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", "Aidge::SinglePassGraphMatching::addNodeLambda::name"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching22filterLonguestDisjointERKNSt3setI14MatchingResultEE", "Aidge::SinglePassGraphMatching::filterLonguestDisjoint"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching22filterLonguestDisjointERKNSt3setI14MatchingResultEE", "Aidge::SinglePassGraphMatching::filterLonguestDisjoint::matches"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", "Aidge::SinglePassGraphMatching::match"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", "Aidge::SinglePassGraphMatching::match::disjoint"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", "Aidge::SinglePassGraphMatching::match::query"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::SinglePassGraphMatching::matchFrom"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::SinglePassGraphMatching::matchFrom::query"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::SinglePassGraphMatching::matchFrom::startNode"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingaSERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::operator="], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingaSERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::operator=::other"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingD0Ev", "Aidge::SinglePassGraphMatching::~SinglePassGraphMatching"], [9, 0, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::axes"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::ends"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::name"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::starts"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::steps"], [9, 0, 1, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", "Aidge::Softmax"], [9, 1, 1, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", "Aidge::Softmax::axis"], [9, 1, 1, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", "Aidge::Softmax::name"], [9, 0, 1, "_CPPv4N5Aidge4SqrtERKNSt6stringE", "Aidge::Sqrt"], [9, 1, 1, "_CPPv4N5Aidge4SqrtERKNSt6stringE", "Aidge::Sqrt::name"], [9, 0, 1, "_CPPv4N5Aidge3SubERKNSt6stringE", "Aidge::Sub"], [9, 1, 1, "_CPPv4N5Aidge3SubERKNSt6stringE", "Aidge::Sub::name"], [9, 0, 1, "_CPPv4N5Aidge4TanhERKNSt6stringE", "Aidge::Tanh"], [9, 1, 1, "_CPPv4N5Aidge4TanhERKNSt6stringE", "Aidge::Tanh::name"], [4, 3, 1, "_CPPv4N5Aidge6TensorE", "Aidge::Tensor"], [4, 0, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorERK6Tensor", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorERR6Tensor", "Aidge::Tensor::Tensor"], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_3"], [4, 2, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor::VT"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", "Aidge::Tensor::Tensor::dformat"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::Tensor::dims"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", "Aidge::Tensor::Tensor::dtype"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorERK6Tensor", "Aidge::Tensor::Tensor::other"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorERR6Tensor", "Aidge::Tensor::Tensor::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor::val"], [4, 4, 1, "_CPPv4N5Aidge6Tensor4TypeE", "Aidge::Tensor::Type"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3absEv", "Aidge::Tensor::abs"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7backendEv", "Aidge::Tensor::backend"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8capacityEv", "Aidge::Tensor::capacity"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4clipEff", "Aidge::Tensor::clip"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor4clipEff", "Aidge::Tensor::clip::max"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor4clipEff", "Aidge::Tensor::clip::min"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5cloneEv", "Aidge::Tensor::clone"], [4, 0, 1, "_CPPv4N5Aidge6Tensor8copyCastERK6Tensor", "Aidge::Tensor::copyCast"], [4, 1, 1, "_CPPv4N5Aidge6Tensor8copyCastERK6Tensor", "Aidge::Tensor::copyCast::src"], [4, 0, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6Tensor", "Aidge::Tensor::copyCastFrom"], [4, 0, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", "Aidge::Tensor::copyCastFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", "Aidge::Tensor::copyCastFrom::movedSrc"], [4, 1, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6Tensor", "Aidge::Tensor::copyCastFrom::src"], [4, 1, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", "Aidge::Tensor::copyCastFrom::src"], [4, 0, 1, "_CPPv4N5Aidge6Tensor8copyFromERK6Tensor", "Aidge::Tensor::copyFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor8copyFromERK6Tensor", "Aidge::Tensor::copyFrom::src"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", "Aidge::Tensor::copyTranspose"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::copyTranspose"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", "Aidge::Tensor::copyTranspose::src"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::copyTranspose::src"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", "Aidge::Tensor::copyTranspose::transpose"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::copyTranspose::transpose"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor10dataFormatEv", "Aidge::Tensor::dataFormat"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8dataTypeEv", "Aidge::Tensor::dataType"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6deviceEv", "Aidge::Tensor::device"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3dimE8DimIdx_t", "Aidge::Tensor::dim"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3dimE8DimIdx_t", "Aidge::Tensor::dim::idx"], [4, 0, 1, "_CPPv4I_8DimIdx_tENK5Aidge6Tensor4dimsENSt5arrayI9DimSize_t3DIMEEv", "Aidge::Tensor::dims"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4dimsEv", "Aidge::Tensor::dims"], [4, 2, 1, "_CPPv4I_8DimIdx_tENK5Aidge6Tensor4dimsENSt5arrayI9DimSize_t3DIMEEv", "Aidge::Tensor::dims::DIM"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5emptyEv", "Aidge::Tensor::empty"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract::coordIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract::coordIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract::dims"], [4, 0, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", "Aidge::Tensor::get"], [4, 0, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", "Aidge::Tensor::get"], [4, 1, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", "Aidge::Tensor::get::coordIdx"], [4, 2, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", "Aidge::Tensor::get::expectedType"], [4, 2, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", "Aidge::Tensor::get::expectedType"], [4, 1, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", "Aidge::Tensor::get::idx"], [4, 0, 1, "_CPPv4N5Aidge6Tensor20getAvailableBackendsEv", "Aidge::Tensor::getAvailableBackends"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8getCoordENSt6size_tE", "Aidge::Tensor::getCoord"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor8getCoordENSt6size_tE", "Aidge::Tensor::getCoord::index"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6getIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor6getIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getIdx::coords"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7getImplEv", "Aidge::Tensor::getImpl"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor13getImplOffsetEv", "Aidge::Tensor::getImplOffset"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor13getStorageIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getStorageIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor13getStorageIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getStorageIdx::coordIdx"], [4, 0, 1, "_CPPv4N5Aidge6Tensor4gradEv", "Aidge::Tensor::grad"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7hasImplEv", "Aidge::Tensor::hasImpl"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor12isContiguousEv", "Aidge::Tensor::isContiguous"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds"], [4, 0, 1, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", "Aidge::Tensor::isInBounds"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds::T"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds::coords"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds::dimensions"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", "Aidge::Tensor::isInBounds::dimensions"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", "Aidge::Tensor::isInBounds::index"], [4, 0, 1, "_CPPv4N5Aidge6Tensor14makeContiguousEv", "Aidge::Tensor::makeContiguous"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4meanEv", "Aidge::Tensor::mean"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6nbDimsEv", "Aidge::Tensor::nbDims"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*"], [4, 0, 1, "_CPPv4NK5Aidge6TensormlERK6Tensor", "Aidge::Tensor::operator*"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::VT"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*::VT"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::other"], [4, 1, 1, "_CPPv4NK5Aidge6TensormlERK6Tensor", "Aidge::Tensor::operator*::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::val"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*="], [4, 0, 1, "_CPPv4N5Aidge6TensormLERK6Tensor", "Aidge::Tensor::operator*="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensormLERK6Tensor", "Aidge::Tensor::operator*=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*=::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+"], [4, 0, 1, "_CPPv4NK5Aidge6TensorplERK6Tensor", "Aidge::Tensor::operator+"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::VT"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+::VT"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::other"], [4, 1, 1, "_CPPv4NK5Aidge6TensorplERK6Tensor", "Aidge::Tensor::operator+::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::val"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+="], [4, 0, 1, "_CPPv4N5Aidge6TensorpLERK6Tensor", "Aidge::Tensor::operator+="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensorpLERK6Tensor", "Aidge::Tensor::operator+=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+=::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-"], [4, 0, 1, "_CPPv4NK5Aidge6TensormiERK6Tensor", "Aidge::Tensor::operator-"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::VT"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-::VT"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::other"], [4, 1, 1, "_CPPv4NK5Aidge6TensormiERK6Tensor", "Aidge::Tensor::operator-::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::val"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-="], [4, 0, 1, "_CPPv4N5Aidge6TensormIERK6Tensor", "Aidge::Tensor::operator-="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensormIERK6Tensor", "Aidge::Tensor::operator-=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-=::val"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/"], [4, 0, 1, "_CPPv4NK5Aidge6TensordvERK6Tensor", "Aidge::Tensor::operator/"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/::VT"], [4, 1, 1, "_CPPv4NK5Aidge6TensordvERK6Tensor", "Aidge::Tensor::operator/::other"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/="], [4, 0, 1, "_CPPv4N5Aidge6TensordVERK6Tensor", "Aidge::Tensor::operator/="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensordVERK6Tensor", "Aidge::Tensor::operator/=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/=::val"], [4, 0, 1, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4N5Aidge6TensoraSERK6Tensor", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4N5Aidge6TensoraSERR6Tensor", "Aidge::Tensor::operator="], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_3"], [4, 2, 1, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::T"], [4, 1, 1, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4N5Aidge6TensoraSERK6Tensor", "Aidge::Tensor::operator=::other"], [4, 1, 1, "_CPPv4N5Aidge6TensoraSERR6Tensor", "Aidge::Tensor::operator=::other"], [4, 0, 1, "_CPPv4NK5Aidge6TensoreqERK6Tensor", "Aidge::Tensor::operator=="], [4, 1, 1, "_CPPv4NK5Aidge6TensoreqERK6Tensor", "Aidge::Tensor::operator==::otherTensor"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5printEv", "Aidge::Tensor::print"], [4, 0, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref"], [4, 0, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::backend"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::backend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::device"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::dt"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::dt"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::targetReqs"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::targetReqs"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::dt"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::dt"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::fallback"], [4, 0, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom"], [4, 0, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::backend"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::backend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::device"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::dt"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::dt"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::targetReqs"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::targetReqs"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous::fallback"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::backend"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::backend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::device"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::fallback"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6repeatEi", "Aidge::Tensor::repeat"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor6repeatEi", "Aidge::Tensor::repeat::times"], [4, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", "Aidge::Tensor::resize"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", "Aidge::Tensor::resize"], [4, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", "Aidge::Tensor::resize::DIM"], [4, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", "Aidge::Tensor::resize::dims"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", "Aidge::Tensor::resize::dims"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", "Aidge::Tensor::resize::strides"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set::coordIdx"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set::expectedType"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set::expectedType"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set::idx"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set::value"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set::value"], [4, 0, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend::copyFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend::name"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", "Aidge::Tensor::setDataFormat"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", "Aidge::Tensor::setDataFormat::copyTrans"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", "Aidge::Tensor::setDataFormat::df"], [4, 0, 1, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", "Aidge::Tensor::setDataType"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", "Aidge::Tensor::setDataType::copyCast"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", "Aidge::Tensor::setDataType::dt"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7setGradENSt10shared_ptrI6TensorEE", "Aidge::Tensor::setGrad"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7setGradENSt10shared_ptrI6TensorEE", "Aidge::Tensor::setGrad::newGrad"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", "Aidge::Tensor::setImpl"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", "Aidge::Tensor::setImpl::impl"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", "Aidge::Tensor::setImpl::implOffset"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4sizeEv", "Aidge::Tensor::size"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4sqrtEv", "Aidge::Tensor::sqrt"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6strideE8DimIdx_t", "Aidge::Tensor::stride"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor6strideE8DimIdx_t", "Aidge::Tensor::stride::idx"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7stridesEv", "Aidge::Tensor::strides"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", "Aidge::Tensor::toCoord"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", "Aidge::Tensor::toCoord::dimensions"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", "Aidge::Tensor::toCoord::index"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::toIndex"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::toIndex::coords"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::toIndex::dimensions"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", "Aidge::Tensor::toString"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", "Aidge::Tensor::toString::offset"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", "Aidge::Tensor::toString::precision"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor9undefinedEv", "Aidge::Tensor::undefined"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5zerosEv", "Aidge::Tensor::zeros"], [4, 0, 1, "_CPPv4N5Aidge6TensorD0Ev", "Aidge::Tensor::~Tensor"], [9, 0, 1, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Transpose"], [9, 1, 1, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Transpose::name"], [9, 1, 1, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Transpose::outputDimsOrder"], [10, 0, 1, "_CPPv4N5Aidge14adaptToBackendENSt10shared_ptrI9GraphViewEE", "Aidge::adaptToBackend"], [10, 1, 1, "_CPPv4N5Aidge14adaptToBackendENSt10shared_ptrI9GraphViewEE", "Aidge::adaptToBackend::graph"], [10, 0, 1, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", "Aidge::constantFolding"], [10, 1, 1, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", "Aidge::constantFolding::constantShape"], [10, 1, 1, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", "Aidge::constantFolding::graph"], [10, 0, 1, "_CPPv4N5Aidge12convToMatMulENSt10shared_ptrI9GraphViewEE", "Aidge::convToMatMul"], [10, 1, 1, "_CPPv4N5Aidge12convToMatMulENSt10shared_ptrI9GraphViewEE", "Aidge::convToMatMul::graph"], [10, 0, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb", "Aidge::expandMetaOps"], [10, 1, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb", "Aidge::expandMetaOps::graph"], [10, 1, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb", "Aidge::expandMetaOps::recursive"], [10, 0, 1, "_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE", "Aidge::explicitCastMove"], [10, 1, 1, "_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE", "Aidge::explicitCastMove::graphView"], [10, 0, 1, "_CPPv4N5Aidge17explicitTransposeENSt10shared_ptrI9GraphViewEE", "Aidge::explicitTranspose"], [10, 1, 1, "_CPPv4N5Aidge17explicitTransposeENSt10shared_ptrI9GraphViewEE", "Aidge::explicitTranspose::graphView"], [10, 0, 1, "_CPPv4N5Aidge13fuseBatchNormENSt10shared_ptrI9GraphViewEE", "Aidge::fuseBatchNorm"], [10, 1, 1, "_CPPv4N5Aidge13fuseBatchNormENSt10shared_ptrI9GraphViewEE", "Aidge::fuseBatchNorm::graphView"], [10, 0, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps"], [10, 1, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps::gm"], [10, 1, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps::query"], [10, 1, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps::type"], [6, 0, 1, "_CPPv4N5Aidge13generateGraphERKNSt6vectorI9ConnectorEE", "Aidge::generateGraph"], [6, 1, 1, "_CPPv4N5Aidge13generateGraphERKNSt6vectorI9ConnectorEE", "Aidge::generateGraph::ctors"], [6, 0, 1, "_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE", "Aidge::getConnectedGraphView"], [6, 1, 1, "_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE", "Aidge::getConnectedGraphView::node"], [10, 0, 1, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", "Aidge::matMulTiling"], [10, 1, 1, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", "Aidge::matMulTiling::matMul"], [10, 1, 1, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", "Aidge::matMulTiling::maxDims"], [10, 0, 1, "_CPPv4N5Aidge10matMulToFCENSt10shared_ptrI9GraphViewEE", "Aidge::matMulToFC"], [10, 1, 1, "_CPPv4N5Aidge10matMulToFCENSt10shared_ptrI9GraphViewEE", "Aidge::matMulToFC::graphView"], [10, 0, 1, "_CPPv4N5Aidge13removeDropoutENSt10shared_ptrI9GraphViewEE", "Aidge::removeDropout"], [10, 1, 1, "_CPPv4N5Aidge13removeDropoutENSt10shared_ptrI9GraphViewEE", "Aidge::removeDropout::graphView"], [10, 0, 1, "_CPPv4N5Aidge13removeFlattenENSt10shared_ptrI9GraphViewEE", "Aidge::removeFlatten"], [10, 1, 1, "_CPPv4N5Aidge13removeFlattenENSt10shared_ptrI9GraphViewEE", "Aidge::removeFlatten::graphView"], [2, 0, 1, "_CPPv4N5Aidge12tensorOpencvEN2cv3MatE", "Aidge::tensorOpencv"], [2, 1, 1, "_CPPv4N5Aidge12tensorOpencvEN2cv3MatE", "Aidge::tensorOpencv::mat"], [12, 0, 1, "_CPPv49calibrate23calibration_folder_path15cache_file_path10batch_size", "calibrate"], [12, 0, 1, "_CPPv46device2id", "device"], [12, 0, 1, "_CPPv410initializev", "initialize"], [12, 0, 1, "_CPPv44load8filepath", "load"], [12, 0, 1, "_CPPv47profile13nb_iterations4mode", "profile"], [12, 0, 1, "_CPPv48run_sync6inputs", "run_sync"], [12, 0, 1, "_CPPv44save8filepath", "save"]], "aidge_backend_opencv": [[2, 8, 1, "", "MNIST"]], "aidge_backend_opencv.MNIST": [[2, 9, 1, "", "__init__"], [2, 9, 1, "", "get_item"], [2, 9, 1, "", "get_len"], [2, 9, 1, "", "get_nb_modalities"], [2, 9, 1, "", "len"]], "aidge_core": [[9, 10, 1, "", "Add"], [9, 10, 1, "", "AvgPooling1D"], [9, 10, 1, "", "AvgPooling2D"], [9, 10, 1, "", "AvgPooling3D"], [9, 10, 1, "", "BatchNorm2D"], [9, 10, 1, "", "Concat"], [6, 8, 1, "", "Connector"], [9, 10, 1, "", "Conv1D"], [9, 10, 1, "", "Conv2D"], [9, 10, 1, "", "ConvDepthWise1D"], [9, 10, 1, "", "ConvDepthWise2D"], [4, 8, 1, "", "DataProvider"], [9, 10, 1, "", "Div"], [9, 10, 1, "", "Erf"], [9, 10, 1, "", "FC"], [9, 10, 1, "", "Gather"], [9, 10, 1, "", "GenericOperator"], [6, 8, 1, "", "GraphView"], [3, 8, 1, "", "IOSpec"], [9, 10, 1, "", "Identity"], [3, 8, 1, "", "ImplSpec"], [9, 10, 1, "", "LSTM"], [9, 10, 1, "", "LeakyReLU"], [9, 10, 1, "", "MatMul"], [9, 10, 1, "", "Mul"], [6, 8, 1, "", "Node"], [9, 8, 1, "", "Operator"], [9, 8, 1, "", "OperatorTensor"], [9, 10, 1, "", "PaddedAvgPooling2D"], [9, 10, 1, "", "PaddedConv1D"], [9, 10, 1, "", "PaddedConv2D"], [9, 10, 1, "", "PaddedConvDepthWise1D"], [9, 10, 1, "", "PaddedConvDepthWise2D"], [9, 10, 1, "", "PaddedMaxPooling2D"], [11, 8, 1, "", "ParallelScheduler"], [9, 10, 1, "", "Pop"], [9, 10, 1, "", "Pow"], [9, 10, 1, "", "Producer"], [9, 10, 1, "", "ReLU"], [9, 10, 1, "", "ReduceMean"], [9, 10, 1, "", "Reshape"], [11, 8, 1, "", "Scheduler"], [11, 8, 1, "", "SequentialScheduler"], [9, 10, 1, "", "Sigmoid"], [7, 8, 1, "", "SinglePassGraphMatching"], [9, 10, 1, "", "Slice"], [9, 10, 1, "", "Softmax"], [9, 10, 1, "", "Sqrt"], [9, 10, 1, "", "Sub"], [9, 10, 1, "", "Tanh"], [4, 8, 1, "", "Tensor"], [9, 10, 1, "", "Transpose"], [10, 10, 1, "", "adapt_to_backend"], [10, 10, 1, "", "expand_metaops"], [10, 10, 1, "", "fuse_batchnorm"], [10, 10, 1, "", "fuse_to_metaops"], [6, 10, 1, "", "generate_graph"], [6, 10, 1, "", "get_connected_graph_view"], [10, 10, 1, "", "matmul_to_fc"], [9, 10, 1, "", "meta_operator"], [6, 10, 1, "", "parallel"], [10, 10, 1, "", "remove_flatten"], [6, 10, 1, "", "residual"], [6, 10, 1, "", "sequential"]], "aidge_core.Connector": [[6, 9, 1, "", "__init__"]], "aidge_core.DataProvider": [[4, 9, 1, "", "__init__"]], "aidge_core.GraphView": [[6, 9, 1, "", "__init__"], [6, 9, 1, "", "add"], [6, 9, 1, "", "add_child"], [6, 9, 1, "", "add_ordered_outputs"], [6, 9, 1, "", "clone"], [6, 9, 1, "", "compile"], [6, 9, 1, "", "forward_dims"], [6, 9, 1, "", "forward_dtype"], [6, 9, 1, "", "get_input_nodes"], [6, 9, 1, "", "get_node"], [6, 9, 1, "", "get_nodes"], [6, 9, 1, "", "get_ordered_inputs"], [6, 9, 1, "", "get_ordered_nodes"], [6, 9, 1, "", "get_ordered_outputs"], [6, 9, 1, "", "get_output_nodes"], [6, 9, 1, "", "get_ranked_nodes"], [6, 9, 1, "", "get_ranked_nodes_name"], [6, 9, 1, "", "in_view"], [6, 9, 1, "", "inputs"], [6, 9, 1, "", "insert_parent"], [6, 9, 1, "", "log_outputs"], [6, 9, 1, "", "outputs"], [6, 9, 1, "", "replace"], [6, 9, 1, "", "root_node"], [6, 9, 1, "", "save"], [6, 9, 1, "", "set_backend"], [6, 9, 1, "", "set_dataformat"], [6, 9, 1, "", "set_datatype"], [6, 9, 1, "", "set_name"], [6, 9, 1, "", "set_ordered_inputs"], [6, 9, 1, "", "set_ordered_outputs"], [6, 9, 1, "", "set_root_node"]], "aidge_core.IOSpec": [[3, 9, 1, "", "__init__"]], "aidge_core.ImplSpec": [[3, 9, 1, "", "__init__"]], "aidge_core.Node": [[6, 9, 1, "", "__init__"], [6, 9, 1, "", "add_child"], [6, 9, 1, "", "attributes"], [6, 9, 1, "", "clone"], [6, 9, 1, "", "create_unique_name"], [6, 9, 1, "", "get_children"], [6, 9, 1, "", "get_nb_inputs"], [6, 9, 1, "", "get_nb_outputs"], [6, 9, 1, "", "get_operator"], [6, 9, 1, "", "get_ordered_children"], [6, 9, 1, "", "get_parent"], [6, 9, 1, "", "get_parents"], [6, 9, 1, "", "input"], [6, 9, 1, "", "input_category"], [6, 9, 1, "", "input_name"], [6, 9, 1, "", "inputs"], [6, 9, 1, "", "inputs_names"], [6, 9, 1, "", "name"], [6, 9, 1, "", "output"], [6, 9, 1, "", "output_name"], [6, 9, 1, "", "outputs"], [6, 9, 1, "", "outputs_names"], [6, 9, 1, "", "set_name"], [6, 9, 1, "", "type"]], "aidge_core.Operator": [[9, 9, 1, "", "__init__"], [9, 9, 1, "", "associate_input"], [9, 9, 1, "", "backend"], [9, 9, 1, "", "clone"], [9, 9, 1, "", "forward"], [9, 9, 1, "", "get_impl"], [9, 9, 1, "", "get_raw_input"], [9, 9, 1, "", "get_raw_output"], [9, 9, 1, "", "input_category"], [9, 9, 1, "", "is_atomic"], [9, 9, 1, "", "is_back_edge"], [9, 9, 1, "", "is_optional_input"], [9, 9, 1, "", "nb_inputs"], [9, 9, 1, "", "nb_outputs"], [9, 9, 1, "", "set_back_edges"], [9, 9, 1, "", "set_backend"], [9, 9, 1, "", "set_dataformat"], [9, 9, 1, "", "set_datatype"], [9, 9, 1, "", "set_impl"], [9, 9, 1, "", "set_input"], [9, 9, 1, "", "set_output"], [9, 9, 1, "", "type"]], "aidge_core.OperatorTensor": [[9, 9, 1, "", "__init__"], [9, 9, 1, "", "associate_input"], [9, 9, 1, "", "backend"], [9, 9, 1, "", "clone"], [9, 9, 1, "", "dims_forwarded"], [9, 9, 1, "", "forward"], [9, 9, 1, "", "forward_dims"], [9, 9, 1, "", "forward_dtype"], [9, 9, 1, "", "get_impl"], [9, 9, 1, "", "get_input"], [9, 9, 1, "", "get_inputs"], [9, 9, 1, "", "get_output"], [9, 9, 1, "", "get_outputs"], [9, 9, 1, "", "get_raw_input"], [9, 9, 1, "", "get_raw_output"], [9, 9, 1, "", "input_category"], [9, 9, 1, "", "is_atomic"], [9, 9, 1, "", "is_back_edge"], [9, 9, 1, "", "is_optional_input"], [9, 9, 1, "", "nb_inputs"], [9, 9, 1, "", "nb_outputs"], [9, 9, 1, "", "set_back_edges"], [9, 9, 1, "", "set_backend"], [9, 9, 1, "", "set_dataformat"], [9, 9, 1, "", "set_datatype"], [9, 9, 1, "", "set_impl"], [9, 9, 1, "", "set_input"], [9, 9, 1, "", "set_output"], [9, 9, 1, "", "type"]], "aidge_core.ParallelScheduler": [[11, 9, 1, "", "__init__"], [11, 9, 1, "", "clear_scheduling"], [11, 9, 1, "", "forward"], [11, 9, 1, "", "generate_scheduling"], [11, 9, 1, "", "get_backward_scheduling"], [11, 9, 1, "", "get_forward_scheduling"], [11, 9, 1, "", "get_sequential_static_scheduling"], [11, 9, 1, "", "get_static_scheduling"], [11, 9, 1, "", "graph_view"], [11, 9, 1, "", "reset_scheduling"], [11, 9, 1, "", "save_factorized_static_scheduling_diagram"], [11, 9, 1, "", "save_scheduling_diagram"], [11, 9, 1, "", "save_static_scheduling_diagram"], [11, 9, 1, "", "tag_conditional_nodes"]], "aidge_core.Scheduler": [[11, 9, 1, "", "__init__"], [11, 9, 1, "", "clear_scheduling"], [11, 9, 1, "", "generate_scheduling"], [11, 9, 1, "", "get_backward_scheduling"], [11, 9, 1, "", "get_forward_scheduling"], [11, 9, 1, "", "get_sequential_static_scheduling"], [11, 9, 1, "", "get_static_scheduling"], [11, 9, 1, "", "graph_view"], [11, 9, 1, "", "reset_scheduling"], [11, 9, 1, "", "save_factorized_static_scheduling_diagram"], [11, 9, 1, "", "save_scheduling_diagram"], [11, 9, 1, "", "save_static_scheduling_diagram"], [11, 9, 1, "", "tag_conditional_nodes"]], "aidge_core.SequentialScheduler": [[11, 9, 1, "", "__init__"], [11, 9, 1, "", "backward"], [11, 9, 1, "", "clear_scheduling"], [11, 9, 1, "", "forward"], [11, 9, 1, "", "generate_memory"], [11, 9, 1, "", "generate_memory_auto_concat"], [11, 9, 1, "", "generate_scheduling"], [11, 9, 1, "", "get_backward_scheduling"], [11, 9, 1, "", "get_forward_scheduling"], [11, 9, 1, "", "get_sequential_static_scheduling"], [11, 9, 1, "", "get_static_scheduling"], [11, 9, 1, "", "graph_view"], [11, 9, 1, "", "reset_scheduling"], [11, 9, 1, "", "save_factorized_static_scheduling_diagram"], [11, 9, 1, "", "save_scheduling_diagram"], [11, 9, 1, "", "save_static_scheduling_diagram"], [11, 9, 1, "", "set_scheduling_policy"], [11, 9, 1, "", "tag_conditional_nodes"]], "aidge_core.SinglePassGraphMatching": [[7, 9, 1, "", "__init__"], [7, 9, 1, "", "add_node_lambda"], [7, 9, 1, "", "match"]], "aidge_core.Tensor": [[4, 9, 1, "", "__init__"], [4, 9, 1, "", "abs"], [4, 9, 1, "", "backend"], [4, 9, 1, "", "capacity"], [4, 9, 1, "", "clone"], [4, 9, 1, "", "cpy_transpose"], [4, 9, 1, "", "dformat"], [4, 9, 1, "", "dims"], [4, 9, 1, "", "dtype"], [4, 9, 1, "", "get_available_backends"], [4, 9, 1, "", "get_coord"], [4, 9, 1, "", "get_idx"], [4, 9, 1, "", "grad"], [4, 9, 1, "", "has_impl"], [4, 9, 1, "", "mean"], [4, 9, 1, "", "resize"], [4, 9, 1, "", "set_backend"], [4, 9, 1, "", "set_data_format"], [4, 9, 1, "", "set_datatype"], [4, 9, 1, "", "set_grad"], [4, 9, 1, "", "size"], [4, 9, 1, "", "sqrt"], [4, 9, 1, "", "undefined"], [4, 9, 1, "", "zeros"]], "aidge_core.export_utils": [[5, 8, 1, "", "ExportLib"], [5, 8, 1, "", "ExportNode"], [5, 8, 1, "", "ExportNodeCpp"], [5, 10, 1, "", "scheduler_export"]], "aidge_core.export_utils.ExportLib": [[5, 9, 1, "", "__init__"], [5, 9, 1, "", "backend"], [5, 9, 1, "", "backward"], [5, 9, 1, "", "forward"], [5, 9, 1, "", "get_adaptation"], [5, 9, 1, "", "get_available_impl_specs"], [5, 9, 1, "", "get_best_adaptation"], [5, 9, 1, "", "get_best_match"], [5, 9, 1, "", "get_export_node"], [5, 9, 1, "", "get_operator"], [5, 9, 1, "", "get_prod_conso"], [5, 9, 1, "", "get_required_spec"], [5, 9, 1, "", "prod_conso"], [5, 9, 1, "", "register"], [5, 9, 1, "", "register_generic"], [5, 9, 1, "", "register_metaop"]], "aidge_core.export_utils.ExportNode": [[5, 9, 1, "", "__init__"]], "aidge_core.export_utils.ExportNodeCpp": [[5, 9, 1, "", "__init__"], [5, 9, 1, "", "add_kernel_to_copy"], [5, 9, 1, "", "export"], [5, 9, 1, "", "forward"], [5, 9, 1, "", "reformat_kernels_to_copy"]], "aidge_export_tensorrt": [[12, 10, 1, "", "export"]], "aidge_onnx": [[13, 10, 1, "", "export_onnx"], [13, 10, 1, "", "load_onnx"]], "aidge_onnx.node_export": [[13, 10, 1, "", "auto_register_export"], [13, 10, 1, "", "register_export"], [13, 10, 1, "", "supported_operators"]], "aidge_onnx.node_export.generic_export": [[13, 10, 1, "", "generic_export"]], "aidge_onnx.node_import": [[13, 11, 1, "", "ONNX_NODE_CONVERTER_"], [13, 10, 1, "", "auto_register_import"], [13, 10, 1, "", "register_import"], [13, 10, 1, "", "supported_operators"]], "aidge_onnx.node_import.generic": [[13, 10, 1, "", "import_generic"]]}, "objnames": {"0": ["cpp", "function", "C++ function"], "1": ["cpp", "functionParam", "C++ function parameter"], "2": ["cpp", "templateParam", "C++ template parameter"], "3": ["cpp", "class", "C++ class"], "4": ["cpp", "member", "C++ member"], "5": ["cpp", "enum", "C++ enum"], "6": ["cpp", "enumerator", "C++ enumerator"], "7": ["cpp", "union", "C++ union"], "8": ["py", "class", "Python class"], "9": ["py", "method", "Python method"], "10": ["py", "function", "Python function"], "11": ["py", "data", "Python data"]}, "objtypes": {"0": "cpp:function", "1": "cpp:functionParam", "2": "cpp:templateParam", "3": "cpp:class", "4": "cpp:member", "5": "cpp:enum", "6": "cpp:enumerator", "7": "cpp:union", "8": "py:class", "9": "py:method", "10": "py:function", "11": "py:data"}, "terms": {"": [0, 4, 5, 6, 9, 10, 11, 12, 17, 18, 19, 20, 22, 23, 25, 26, 28, 29, 35, 39, 41], "0": [0, 4, 5, 6, 7, 9, 11, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, 40, 43], "00": [22, 25], "000": 26, "000000": 22, "002580789616331458": 22, "00258567463606596": 22, "0027241543911787e": 22, "0031717130479807e": 22, "0032389953266829252": 22, "0078125": 22, "0089348943138683e": 22, "01": [25, 26], "010498046875": 22, "0108239825872136e": 22, "011490303617355e": 22, "013943285681307316": 22, "016549466813845e": 22, "0166547672625598e": 22, "0167133981823246e": 22, "02": 26, "0205078125": 22, "0262524359993083e": 22, "03": 26, "03125": 22, "031376270124142e": 22, "0344099969329157e": 22, "034411737786096e": 22, "04": [19, 26], "041059153969684e": 22, "0443442": 20, "044944005260339e": 22, "048128113421378e": 22, "05": 26, "0572354386536535e": 22, "06": [9, 26], "0625": 22, "07": [22, 26], "072873986560081e": 22, "078125": 22, "0798422895040858e": 22, "08": [22, 26], "081010990195864e": 22, "082763671875": 22, "09": 26, "0979603668382307e": 22, "098312206172895e": 22, "0983123537468476e": 22, "0995075551888714e": 22, "0996337309183355e": 22, "0996679": 20, "099668": 20, "0e": 9, "0f": 9, "1": [3, 4, 5, 6, 7, 9, 11, 12, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, 31, 43], "10": [4, 6, 19, 20, 22, 25, 26, 27, 28], "100": [19, 25, 26], "10000000149011612": 9, "101367854591673e": 22, "101_first_step": [19, 21], "10248": 22, "10250": 22, "104": 26, "10844001811131e": 22, "1089319967361296e": 22, "1093918953717347e": 22, "11": [0, 19, 22, 25, 26, 28], "112": 6, "1122966": 20, "12": [19, 22, 25, 26, 28], "122052594949249e": 22, "124677042253836e": 22, "125": [22, 25], "12548828125": 22, "12691": 22, "128": 25, "12884": 22, "129242279331095e": 22, "13": [19, 22, 25, 26, 28], "13579765": 20, "139": 22, "13954135": 20, "14": [19, 20, 22, 25, 26, 29], "140625": 22, "141845703125": 22, "14249442304": 22, "14250483384320": 22, "14250512744448": 22, "14250522181632": 22, "14289": 22, "143087144854013e": 22, "14316288868352": 22, "1431658257577701e": 22, "1443279863152655e": 22, "14512632832": 22, "14586049724416": 22, "14634063": 22, "147": 19, "148": 19, "149": 19, "14985280512": 22, "15": [19, 20, 22, 26], "150": 19, "151": 19, "1528322667931175e": 22, "1550": 22, "1551": 22, "156120728699916e": 22, "1578380784113246e": 22, "16": [19, 20, 22, 23, 25, 26, 27, 31], "160": 22, "1651153564453": 22, "16668505088": 22, "1692376319256628e": 22, "16bit": [33, 40], "16x16": 10, "17": [19, 20, 22, 25, 26], "1702369695032034e": 22, "170369706142124e": 22, "170370223130007e": 22, "1703712571057726e": 22, "1703721618345676e": 22, "170372808069421e": 22, "170740716611165e": 22, "1708629125823588e": 22, "1709669563937815e": 22, "172": 19, "173": 19, "174": 19, "174648137343064e": 22, "175": 19, "176": 19, "18": [6, 19, 20, 22], "18512852": 20, "1875": 22, "1876": 22, "19": [19, 20, 22, 26], "191": 19, "192": [19, 25], "193": 19, "194": 19, "194960498660583e": 22, "195": 19, "196": 19, "197": 19, "198": 19, "199": 25, "1d": [4, 40], "1e": 19, "1f": 9, "2": [0, 4, 5, 6, 7, 9, 11, 19, 20, 21, 22, 23, 25, 26, 27, 28, 31, 43], "20": [19, 22, 26], "200": [20, 21, 22, 26], "2017": [22, 25], "2025": [0, 22, 25], "202659104": 22, "20392664": 20, "204069": 22, "2069": 22, "2074": 22, "2090808306983485e": 22, "209082181778237e": 22, "21": [19, 22, 25], "210": 19, "211": 19, "211834470400": 22, "212": 19, "214": 19, "215": 19, "216": 22, "217361": 22, "21875": 22, "22": [5, 19, 22], "223": 22, "224": 6, "2248365825721957e": 22, "227982950400": 22, "228689": 22, "229060395008": 22, "23": [5, 19, 22], "231253737472": 22, "234038768": 22, "239651504128": 22, "239664087040": 22, "24": [5, 19, 25], "2406125": 20, "24236728": 20, "245527325179904": 22, "245553296310272": 22, "2459246970308416e": 22, "24839124": 20, "25": [5, 10, 19, 22], "255": 22, "2557983398438": 22, "256": 25, "25900268554688": 22, "26": [19, 22, 25], "265625": 22, "2686448208222805e": 22, "2689649": 20, "27": [19, 22], "2708969032439562e": 22, "2737084302582354e": 22, "273960316190692e": 22, "2754205139829522e": 22, "276196193364292e": 22, "28": [19, 22, 26], "28125": 22, "2815946638584137": 25, "2853067727841001e": 22, "285310291221309e": 22, "2865900695323944": 25, "29": [5, 19, 22], "29059635245651e": 22, "29305139116332e": 22, "2931915210097526e": 22, "294526177008102e": 22, "294921875": 22, "297171039297452e": 22, "297350302185953e": 22, "298119516301772e": 22, "298307595397904e": 22, "299606999793923e": 22, "2bcpu": 25, "2d": [18, 31, 40], "3": [4, 6, 9, 16, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 43], "30": [5, 19, 22], "300px": 22, "3035673499107361": 25, "30495578050613403": 25, "30561584": 20, "30862377825769e": 22, "31": [5, 22], "310586": 20, "3140": 22, "31530556082725525": 25, "31620560934271e": 22, "3170": 22, "3173": 22, "32": [5, 22, 25, 27, 28, 31], "320": 25, "3220": 22, "3233649744613663e": 22, "3253": 22, "328125": 22, "329620361328125": 22, "329680442810059": 22, "32bit": [33, 40], "33": 22, "330078125": 22, "3301": 22, "3320303058944": 22, "3320363614208": 22, "332599639892578": 22, "3330078125": 22, "3365": 22, "3377742080": 22, "3380": 22, "339e": 22, "34": [19, 27], "3428": 22, "3478149120": 22, "3479292": 20, "3492807700068108e": 22, "3495444736": 22, "35": 22, "3515625": 22, "3544372215808": 22, "3555848803216089e": 22, "355589274718613e": 22, "3555912134231737e": 22, "3563127992606555e": 22, "3563156426940112e": 22, "36": [19, 22], "3631340322816": 22, "3631347662848": 22, "3664638640128": 22, "3664702865408": 22, "3677763001830605e": 22, "37": 22, "37109375": 22, "3744489216": 22, "3745664512": 22, "3746320128": 22, "3746578688": 22, "3746909184": 22, "38": 19, "3835896004608": 22, "384": 25, "3849740544": 22, "39": [19, 20, 22, 23, 26], "39208984375": 22, "392822265625": 22, "393": 22, "3947506": 20, "3985453": 20, "3d": [27, 40], "3f": 26, "3rd": 6, "3x3": [23, 27, 43], "4": [2, 4, 6, 9, 19, 20, 21, 22, 23, 25, 26, 27, 28, 31], "40": 19, "400123274514609e": 22, "405445396900177": 25, "406419809684859e": 22, "41": 22, "4167034451460096e": 22, "42": 22, "420287501791034e": 22, "4218520432050438e": 22, "425184075619792e": 22, "425190160342673e": 22, "4254777929264924e": 22, "4294967295": 6, "43": 22, "4328903369374592e": 22, "4361496526079918e": 22, "44": 22, "449": 19, "450": 19, "451": 19, "451841121074237e": 22, "452": 19, "454": 19, "458333333333332": 25, "460281": 20, "4722072568316035e": 22, "4864516498717671e": 22, "4923961": 20, "4939362661438726e": 22, "4d": 40, "5": [6, 9, 10, 19, 20, 21, 22, 23, 25, 26, 27, 28, 31], "50": 6, "506409142732924e": 22, "50662732": 22, "51": 22, "51150976": 22, "512": [23, 25, 27], "51215688": 22, "515159678570673e": 22, "51525": 22, "51722568": 22, "51726716": 22, "519796": 20, "520268162362513e": 22, "5249792": 20, "52762752": 22, "52809": 22, "53": 22, "5300222170479722e": 22, "530022326999135e": 22, "5369735494610977e": 22, "54345024": 22, "543967113057844e": 22, "55340934627328": 22, "5554267943085343e": 22, "5673828125": 22, "568359375": 22, "57139": 22, "5748036475435896e": 22, "58251953125": 22, "59": 26, "59309768676758": 22, "5d": 40, "5f": 9, "6": [0, 9, 12, 19, 20, 21, 22, 25, 26, 28, 31], "62": [25, 26], "63": 27, "6382758": 20, "64": [6, 25, 31], "6447895466691317e": 22, "6448006297463397e": 22, "646346445936972e": 22, "64x64": 31, "653328882380856e": 22, "6533405824890962e": 22, "65535": 6, "655616688261144e": 22, "66": 28, "6624670822171524e": 22, "6676381918920442e": 22, "67": 26, "6773143": 20, "6773148": 20, "6815581571897805e": 22, "6862891561106743e": 22, "6875": 25, "69": 26, "69952342700103e": 22, "7": [16, 19, 20, 21, 22, 25, 26, 27, 28, 31], "7036957961156559e": 22, "71": 23, "7108441610124788e": 22, "71598424": 20, "7233275": 20, "7253615828306965e": 22, "725370027079998e": 22, "73": 23, "737577596819939e": 22, "7385771295049327e": 22, "74": 23, "7409431772977156e": 22, "7418032899659543e": 22, "744": 22, "7466482178547253e": 22, "75": [22, 23, 25, 26], "752398330985541e": 22, "7561026317510457e": 22, "76": 23, "7603642276376897e": 22, "765625": 25, "766387939453125": 22, "766414642333984": 22, "766448020935059": 22, "77": 23, "7728632692125496e": 22, "773": 22, "774188493311372e": 22, "7751997780891114e": 22, "77811750222512e": 22, "7782809489959315e": 22, "78": [23, 25], "780176153220437e": 22, "785": 22, "785687041624186e": 22, "7859880630426323e": 22, "7884540591926476e": 22, "79": 23, "792110083058292e": 22, "793872341592482e": 22, "7994000597751165e": 22, "8": [9, 12, 16, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31], "80": 23, "8039985697919656e": 22, "8045502118573262e": 22, "808069": 22, "80x80": 10, "81": 23, "81001099": 20, "812181": 22, "8125": 25, "8130715755729514e": 22, "82": 23, "83": 23, "830208147456": 22, "8310546875": 22, "83574104309082": 22, "836852": 22, "8394614727878753e": 22, "84": 23, "84033203125": 22, "840936087877394e": 22, "8427734375": 22, "8468486248933722e": 22, "85": [23, 26], "850152201912320": 22, "8523600588218255e": 22, "8572841821150455e": 22, "86": [23, 25], "861509": 22, "8617293357346353e": 22, "865096192": 22, "865588": 22, "87": 23, "873816070105814e": 22, "8739378": 20, "88": 23, "882164": 22, "882165": 22, "884746434516879e": 22, "88671875": 22, "888750195959472e": 22, "888753277821998e": 22, "89": [23, 26], "890428097281278e": 22, "8917654862266218e": 22, "895038568559888e": 22, "8982372": 20, "8bit": [33, 40], "9": [9, 19, 20, 21, 22, 25, 26, 28, 43], "90": 26, "907333599232": 22, "91": 26, "911964372992": 22, "913330078125": 22, "913581536950412e": 22, "914624536135793e": 22, "915711152663501e": 22, "9162642855201935e": 22, "9171690175937894e": 22, "9282594100907423e": 22, "93": 26, "9368016799321393e": 22, "9375": [22, 25], "94": 26, "942726775082116e": 22, "946637941505923e": 22, "948017145358971e": 22, "949462890625": 22, "95": 26, "9501953125": 22, "9515305130566762e": 22, "954345703125": 22, "9560546875": 22, "956130027770996": 22, "958251953125": 22, "958324432373047": 22, "958589239296": 22, "959124144128": 22, "96230666": 20, "9634000000000001": 21, "97": 26, "98370683": 20, "9848806511142385e": 22, "99": 26, "99051021": 20, "999999747378752e": 9, "A": [4, 5, 6, 7, 9, 11, 12, 13, 18, 23, 27, 29, 31, 40, 43], "AND": [4, 43], "And": [19, 20, 23], "As": [6, 9, 18, 19, 20, 23, 26, 27, 33, 40], "At": [19, 27], "But": 26, "By": [7, 16, 23, 27], "For": [0, 4, 9, 10, 11, 16, 18, 19, 20, 23, 24, 25, 27, 29, 30, 31, 33, 34, 35, 40, 43], "IN": 6, "If": [4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 20, 24, 26, 27, 34, 39, 43], "In": [4, 6, 7, 11, 18, 19, 20, 22, 23, 25, 26, 27, 29, 33, 34, 43], "It": [4, 5, 6, 7, 9, 11, 13, 18, 19, 23, 27, 34, 40, 43], "Its": 18, "NOT": 43, "No": [4, 6, 18, 19, 20, 25, 26], "Not": [6, 9, 40], "ON": 16, "OR": 43, "Of": 27, "One": [6, 7, 19, 23, 27, 43], "Such": 40, "That": [6, 26, 29, 33], "The": [0, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 19, 20, 23, 24, 25, 27, 28, 29, 30, 31, 33, 34, 35, 39, 40, 43], "Then": [6, 16, 20, 26], "There": [6, 27, 35], "These": [19, 34, 35, 40, 41], "To": [6, 7, 16, 19, 23, 24, 25, 26, 27, 31, 40, 43], "With": [6, 19, 27, 34], "_": 20, "__": 27, "__getitem__": 25, "__init__": [2, 3, 4, 5, 6, 7, 9, 11, 19, 20, 25, 27], "_add": 20, "_div": 20, "_get_file_path": 19, "_get_seri": 19, "_in": 6, "_input": 20, "_input_": 5, "_load_byt": 19, "_load_onnx2graphview": 19, "_maxpool": 9, "_mul": 20, "_name": 5, "_npyio_impl": 19, "_output_": 5, "_pad": 9, "_pow": 20, "_supportedformat": 19, "a002": 19, "aa": 43, "aaa": 43, "ab": 4, "abil": 29, "abl": [6, 19, 25, 30, 34, 40, 43], "about": [26, 34], "abov": [7, 20, 27, 43], "abs_op": 9, "absenc": 23, "abspath": [19, 23, 27], "abstract": [0, 4, 5, 9, 19, 31, 43], "acc": [25, 26], "acceler": [10, 18], "accept": [4, 9], "access": [4, 5, 19, 28, 29, 30, 36], "accessor": 6, "accesss": 19, "accord": [4, 6, 26, 29, 31, 33, 34, 35, 40], "account": [6, 34, 41], "accross": 23, "accumul": 42, "accuraci": [21, 25, 30, 35], "achiev": [27, 31, 34, 36], "across": 9, "act": [19, 27], "action": [5, 34], "activ": [9, 13, 16, 26, 40], "actual": [4, 6, 10, 11, 18, 27, 33], "acycl": [6, 11, 18], "ad": [0, 5, 6, 9, 19, 27, 31, 35, 39, 43], "adapt": [5, 19, 29, 34], "adapt_to_backend": [10, 19], "adapttobackend": 10, "add": [5, 6, 7, 11, 13, 18, 19, 20, 23, 24, 29, 40, 41], "add1": 6, "add2": 23, "add_child": [6, 20, 23], "add_kernel_to_copi": 5, "add_node_lambda": [7, 18, 23], "add_op": [9, 20], "add_ordered_output": 6, "addafterbackward": 6, "addafterforward": 6, "addbeforebackward": 6, "addbeforeforward": 6, "addchild": 6, "addit": [4, 5, 7, 9, 23, 29, 43], "addition": [6, 12], "additionn": [6, 23], "addnodelambda": 7, "addop": 9, "addorderedoutput": 6, "address": [9, 26], "addview": 6, "advanc": [18, 24], "advantag": 27, "affect": [6, 26], "after": [0, 4, 6, 9, 10, 11, 26, 34, 35, 40, 41], "again": [7, 20, 23, 26, 27], "against": 29, "aggress": 26, "agnost": [15, 33, 34, 40], "agreg": 42, "ai": 27, "aidg": [3, 4, 5, 6, 7, 9, 10, 11, 14, 15, 16, 17, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43], "aidge_backend_cpu": [16, 19, 20, 21, 22, 23, 25, 26, 27, 28], "aidge_backend_cuda": 25, "aidge_backend_opencv": [2, 21], "aidge_cifar10": 25, "aidge_cor": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 16, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28], "aidge_databas": 25, "aidge_dataprovid": 25, "aidge_export_cpp": [19, 22], "aidge_export_tensorrt": 12, "aidge_instal": 16, "aidge_learn": 25, "aidge_model": [26, 27], "aidge_nod": [5, 13], "aidge_node_converter_": 13, "aidge_onnx": [13, 16, 19, 20, 21, 22, 23, 26, 27, 28], "aidge_quant": [19, 26], "aim": [28, 29, 34, 43], "algorithm": [6, 11, 19, 26, 27, 29, 33, 40], "all": [4, 5, 6, 7, 9, 10, 11, 16, 19, 23, 25, 26, 27, 28, 31, 34, 35, 39, 40, 43], "allclos": 19, "allexpr": 43, "alloc": [4, 5, 11, 34], "allow": [5, 6, 7, 9, 11, 12, 18, 19, 20, 23, 26, 27, 29, 31, 35, 36, 39, 40, 42], "allow_data_depend": [6, 9, 19, 27], "allow_pickl": 19, "allowdatadepend": [6, 9], "allowzero": 9, "alon": 27, "along": [4, 5, 6, 9, 12, 18, 27], "alreadi": [4, 6, 7, 19, 21, 22, 23, 25, 26, 34, 35, 40, 43], "also": [4, 5, 6, 7, 9, 13, 17, 19, 20, 23, 26, 27, 29, 31, 33, 34], "altern": 9, "although": 23, "alwai": [4, 7, 18, 23, 27], "amazonaw": 21, "ambigu": 6, "ambit": 0, "among": [6, 34], "amount": [9, 11, 18, 27], "amp": 19, "an": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 36, 39, 41, 42, 43], "analysi": 35, "analyz": 9, "ancestor": 6, "anchor": [7, 23], "and_op": 9, "ani": [3, 4, 6, 7, 9, 10, 18, 19, 22, 24, 27, 40, 43], "annot": 9, "anoth": [4, 6, 9, 11, 16, 18, 27, 29, 33, 34, 40], "anymor": 27, "anyth": 27, "anytim": [19, 27], "anywher": [7, 23, 27], "api": [0, 5, 6, 19, 25, 29, 34, 35, 36], "app": 12, "appear": [6, 23, 43], "appen": 6, "append": [5, 19, 22, 23, 26, 27], "appli": [5, 6, 9, 10, 19, 23, 31, 40], "applic": [0, 5, 19, 27, 30, 34], "approach": [0, 5, 20, 26], "appropri": 31, "approxim": 0, "ar": [4, 5, 6, 7, 9, 10, 11, 12, 16, 18, 19, 23, 27, 28, 29, 31, 33, 34, 35, 36, 40, 43], "arang": 20, "arbitrari": [6, 11, 18, 27], "architectur": [18, 19, 26, 43], "area": 9, "arg": [3, 6, 9, 10, 11, 13, 19], "arg0": [4, 5, 6], "arg1": 5, "argmax": [19, 20, 21, 26], "argmax_op": 9, "argsep": 43, "argument": [4, 5, 6, 7, 13, 23, 27], "arithmet": [0, 4], "around": 36, "arr": 4, "arrai": [4, 6, 9, 19, 20, 21, 22, 25, 26, 28, 31, 36], "array1d": [4, 6], "array2d": 4, "array3d": 4, "array4d": 4, "array_nam": [19, 22], "art": 15, "ascii": [20, 21], "ask": 6, "aslateasposs": 11, "assert": [4, 6, 19], "assess": [4, 6], "associ": [4, 5, 6, 9, 11, 13, 18, 27, 29, 31, 33, 34, 40], "associate_input": 9, "associateinput": 9, "assoonasposs": 11, "assum": [4, 7, 23, 27, 34], "assumpt": [9, 18], "ast": 43, "asttoken": 22, "astyp": [6, 19, 20, 22, 28], "async": 12, "atan": 20, "atan_op": 9, "atom": 20, "attach": [20, 26, 41], "attack": 29, "attempt": 25, "attr": [3, 6, 9, 20, 23], "attrdict": 3, "attribut": [4, 5, 6, 7, 9, 11, 18, 19, 20, 27, 33, 40, 43], "attrs_": 3, "audit": 34, "auto": [6, 9, 11, 22], "auto_regist": 13, "auto_register_export": 13, "auto_register_import": [13, 20], "automat": [1, 5, 6, 9, 12, 19, 27, 43], "avaialbl": 1, "avail": [0, 4, 5, 6, 9, 10, 11, 12, 18, 19, 26, 27, 29, 33, 34, 36, 39, 40], "availabledatastatu": 11, "averag": [12, 40], "averagepool": [9, 20], "avgpool": 9, "avgpool1d": 40, "avgpool2d": 40, "avgpool3d": 40, "avgpooling1d": 9, "avgpooling2d": 9, "avgpooling3d": 9, "avgpooling_op": 9, "avoid": [6, 7, 20, 23, 43], "awar": [27, 35], "ax": [9, 40], "axes3d": 27, "axi": [9, 19, 21, 26, 28], "b": [6, 9, 19, 20, 22, 40], "b64encod": [20, 21, 28], "back": [6, 9, 18, 27, 28], "backbon": [23, 34], "backedg": 9, "backend": [4, 5, 6, 8, 9, 14, 18, 19, 20, 25, 26, 34, 35, 36, 39, 40], "backend_opencv": 31, "backpropag": [11, 25], "backward": [4, 5, 6, 9, 11, 25, 33, 40, 41], "bandwidth": [26, 34], "base": [5, 6, 19, 27, 29, 31, 34, 39], "base64": [20, 21, 28], "base64_byt": [20, 21, 28], "base64_str": [20, 21, 28], "base_nam": 6, "base_url": 21, "basic": [19, 24, 25], "batch": [4, 5, 9, 10, 11, 12, 24, 31], "batch_siz": [4, 9, 12, 21, 25], "batchnorm": [19, 20, 29, 40, 43], "batchnorm1d": 40, "batchnorm2d": [9, 28, 40], "batchnorm3d": 40, "batchnorm_op": 9, "batchsiz": 4, "becaus": [4, 7, 23, 27, 36], "becom": [6, 27, 43], "been": [4, 6, 7, 9, 10, 19, 20, 22, 23, 26, 27, 28, 40], "befor": [4, 5, 6, 9, 10, 19, 22, 26, 27, 41], "beforehand": 10, "begin": [9, 20, 26, 43], "beginendtupl": 9, "behavior": [6, 7, 9, 23, 27], "behaviour": 6, "being": [0, 4, 6, 27, 43], "belong": [6, 9, 34], "below": [18, 23], "benchmark": 35, "benefici": 34, "best": 6, "beta": 20, "beta_prod": 20, "between": [4, 6, 7, 9, 18, 23, 27, 34, 39, 40, 43], "bewar": [4, 7, 23, 27], "beyond": 18, "bia": [6, 7, 9, 23, 25, 27], "bias": [6, 25], "bigger": 9, "billion": 26, "bin": [12, 16, 19, 22], "binari": 19, "bind": [12, 16, 19, 20, 29, 36], "bit": [9, 26], "bitshift": 20, "bitshift_op": 9, "block": 41, "bn0": 28, "bnmean": 28, "bnscale": 28, "bnshift": 28, "bnvar": 28, "board": 34, "bool": [2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 43], "boolean": [5, 13, 43], "border": 9, "bordertyp": 9, "bordervalu": 9, "both": [4, 5, 6, 7, 19, 23, 28, 29, 31, 33, 40], "bound": 4, "branch": [7, 11, 20, 23, 27], "break": [7, 23, 25], "broadcast": 9, "broken": 6, "brows": [4, 34], "buffer": [4, 42], "buffer_protocol": 36, "build": [0, 6, 9, 10, 12, 15, 18, 19, 22, 25], "build_cpp": 12, "build_cpp_dock": 12, "build_image_dock": 12, "build_lib_python": 12, "build_lib_python_dock": 12, "builder": 6, "built": [9, 10, 11, 16, 18, 19, 43], "builtin": 19, "busi": 11, "button": 22, "button_clear": 22, "button_gen": 22, "byte": [2, 19, 26], "c": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 18, 20, 22, 25, 29, 40], "cach": 12, "cache_file_path": 12, "calcul": [0, 9, 29, 30, 33, 34], "calibr": 12, "calibration_cach": 12, "calibration_fold": 12, "calibration_folder_path": 12, "call": [4, 6, 7, 9, 18, 19, 20, 26, 27, 31, 33, 34, 40, 41], "callabl": [5, 7, 13], "callback": 6, "can": [0, 4, 6, 7, 9, 10, 11, 12, 13, 16, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 40, 41, 42, 43], "cannot": [6, 7, 9, 19, 20, 23, 27, 43], "canva": 22, "capabl": [18, 34], "capac": 4, "captur": 23, "care": [6, 29], "carri": [6, 34, 40], "case": [4, 6, 7, 11, 19, 20, 23, 25, 27, 33, 34, 35, 40, 43], "cast": [4, 19, 26], "cast_op": 9, "cat": 19, "categor": [29, 35, 40], "categori": [6, 9, 40], "cd": [16, 19, 22], "ceil": 9, "ceil_mod": 9, "cell": [19, 22], "certifi": [22, 25], "chain": [13, 19], "chang": [4, 5, 6, 10, 23, 27, 29, 33, 35, 40], "channel": [4, 5, 9, 20], "char": [4, 9], "charact": [13, 43], "character": [15, 43], "characterist": [0, 4], "charset": [22, 25], "check": [4, 5, 6, 9, 18, 20, 27, 34, 43], "child": [6, 7, 23, 26, 27, 40], "child_input_tensor_idx": 6, "child_nod": 6, "childinputtensoridx": 6, "childnod": 6, "childnodetyp": 23, "children": [6, 23, 40], "choos": [18, 25, 27, 28, 29, 31, 33, 34, 40], "chosen": [33, 40], "chrono": 11, "chronolog": 34, "chw": [4, 31], "cifar": 25, "cifar10": 25, "circular": [6, 27], "ckei": 43, "cl": [6, 25], "clariti": 43, "class": [0, 2, 3, 4, 5, 6, 7, 19, 20, 25, 27, 31], "classic": 34, "classif": 30, "classmethod": 5, "clean": 12, "clear": [6, 11, 22], "clear_schedul": 11, "clearschedul": 11, "clip": [4, 19, 20, 26], "clip_op": 9, "clipping_mod": 19, "clone": [4, 6, 9, 12, 19], "clonecallback": 6, "clonenod": 6, "clonesharedoper": 6, "clonesharedproduc": 6, "closest": 5, "cmake": 16, "cmap": [19, 26], "cmpr": 43, "co": 22, "code": [0, 5, 9, 10, 15, 19, 20, 21, 22, 23, 26, 29, 34, 40], "coeffici": 26, "coher": 6, "colabor": 19, "collabor": 19, "collect": [5, 22, 25, 31, 43], "com": [10, 21], "combin": [10, 31, 43], "come": [6, 40], "comm": 22, "command": [12, 19, 23], "commerci": 0, "common": 40, "commonli": 9, "compact": 27, "compar": 28, "comparison": 19, "compat": [0, 4, 6, 9, 34, 36], "compil": [6, 12, 15, 20, 28, 29, 34, 35, 40], "complementari": 43, "complet": [21, 29, 40], "complex": [0, 7, 11, 18, 19, 23, 29, 40, 43], "compliant": 6, "complic": 6, "compon": [19, 34, 43], "compos": [4, 20, 25, 31, 34], "composit": [9, 20], "comprehens": 34, "compress": 26, "compresslevel": 19, "comput": [0, 5, 6, 9, 10, 11, 18, 19, 21, 25, 27, 28, 29, 31, 33, 35, 36, 39, 41], "computationn": 19, "compute_accuraci": 26, "computereceptivefield": 9, "concat": [10, 11, 20, 40], "concat_op": 9, "concaten": [9, 11, 28, 31, 40], "concept": [29, 33, 34, 40], "concretli": 31, "cond": [11, 27], "condit": [4, 11, 35, 43], "condition": 11, "conditionn": 27, "confer": 29, "config": 5, "config_extens": 5, "config_path": 5, "config_templ": 5, "configur": [0, 5, 18, 21, 22, 26, 34], "confus": 30, "conjunct": 18, "connect": [5, 6, 7, 9, 11, 13, 18, 23, 25, 26, 27, 39, 40], "connectinput": 11, "connector": [20, 40], "consecut": 6, "conserv": 4, "consid": [4, 10, 27, 34], "consist": [9, 23, 26, 34, 36, 40], "const": [2, 3, 4, 6, 7, 9, 10, 11], "constant": [9, 19, 20], "constant_fil": 25, "constant_fold": [19, 27], "constant_lr": 25, "constant_shap": 10, "constantfold": 10, "constantofshap": 20, "constantofshape_op": 9, "constantshap": 10, "constexpr": 4, "constitut": [13, 18, 40], "constrain": [0, 7, 34], "construct": [4, 6, 7, 9, 26, 27], "constructor": [4, 9, 11], "consum": [9, 11, 15, 20, 26, 27, 33], "consumm": 19, "consumpt": [0, 26], "contain": [4, 5, 6, 9, 10, 12, 13, 18, 19, 23, 26, 27, 34, 40, 43], "content": [6, 19, 20, 21, 22, 26], "context": [7, 20, 26, 43], "contigu": 4, "continu": [5, 27, 35], "contraint": 34, "contrari": 27, "contribut": 24, "control": [0, 9, 18, 34], "conv": [6, 7, 18, 19, 20, 23, 25, 43], "conv0": 28, "conv1": [6, 23, 27], "conv1_w": 23, "conv1d": [9, 40], "conv2": [6, 23, 27], "conv2_b": 23, "conv2_conv": 23, "conv2_pad": 23, "conv2_w": 23, "conv2d": [9, 19, 23, 26, 27, 28, 40], "conv2d_dataflow_cp": 27, "conv2d_df": 27, "conv2ddepthwis": 9, "conv3": [23, 27], "conv3_conv": 23, "conv3_pad": 23, "conv3_w": 23, "conv3d": 40, "conv3ddepthwis": 9, "conv4": 23, "conv4_b": 23, "conv4_conv": 23, "conv4_pad": 23, "conv4_w": 23, "conv5": 23, "conv5_b": 23, "conv5_conv": 23, "conv5_pad": 23, "conv5_w": 23, "conv_horizontal_til": 19, "conv_op": 9, "convb": 28, "convdepthwise1d": 9, "convdepthwise2d": 9, "convdepthwise_op": 9, "convdepthwiseop": 9, "convdwnd": 40, "conveni": [9, 23], "convers": [4, 6, 10, 13, 27, 36], "conversion_map": 5, "convert": [4, 5, 22, 26, 34, 36, 39], "converter_funct": 13, "convnd": 40, "convndtranspos": 40, "convnet": 26, "convolut": [6, 9, 10, 18, 24, 26, 28, 29, 33, 40, 41, 43], "convolv": 9, "convop": 9, "convtomatmul": 10, "convtranspose_op": 9, "convw": 28, "cooper": 34, "coord": 4, "coordidx": 4, "coordin": 4, "copi": [4, 5, 6, 9, 34, 36], "copycast": 4, "copycastfrom": 4, "copyfrom": 4, "copytran": 4, "copytranspos": 4, "core": [1, 14, 19, 26], "correct_pr": 21, "correctli": 34, "correspond": [2, 4, 6, 7, 13, 18, 29, 31, 39, 41, 43], "cost": [0, 29], "costli": 26, "could": [7, 23, 25, 27, 34, 43], "count": [6, 9], "counterpart": 26, "cours": 27, "cover": [6, 20, 43], "coverag": [20, 24, 34], "cp310": 25, "cpp": [4, 5, 10, 18, 19, 24, 29], "cpu": [4, 6, 14, 19, 20, 21, 22, 25, 26, 27, 28, 29, 33, 40], "cpy_transpos": 4, "cpython": 16, "creat": [4, 5, 6, 9, 12, 16, 18, 21, 23, 24, 26, 28, 29, 31, 34, 36, 39, 41, 43], "create_arrai": 9, "create_unique_nam": 6, "createuniquenam": 6, "creation": [20, 23], "criteria": [0, 34], "critic": [11, 27], "cross": 26, "cryptohash_op": 9, "ctor": 6, "cu": 12, "cuda": [25, 29, 33, 36], "current": [4, 6, 9, 11, 12, 13, 19, 25, 27, 35], "custom": [5, 9, 11, 13, 18, 19, 24, 25, 27], "customlay": 6, "cv": 2, "cycl": 6, "cyclic": [6, 11, 18, 27], "d": 4, "dangl": 6, "data": [0, 2, 5, 6, 8, 9, 10, 11, 12, 14, 18, 19, 20, 21, 22, 24, 25, 26, 28, 29, 33, 34, 35, 36, 40, 43], "data_0_bias_producerscaling_clipqu": 26, "data_0_bias_producerscaling_roundqu": 26, "data_0_conv": 26, "data_0_weight_producerscaling_clipqu": 26, "data_0_weight_producerscaling_roundqu": 26, "data_10_relu": 26, "data_11_bias_producerscaling_clipqu": 26, "data_11_bias_producerscaling_roundqu": 26, "data_11_gemm": 26, "data_11_weight_producerscaling_clipqu": 26, "data_11_weight_producerscaling_roundqu": 26, "data_1_relu": 26, "data_3_bias_producerscaling_clipqu": 26, "data_3_bias_producerscaling_roundqu": 26, "data_3_conv": 26, "data_3_weight_producerscaling_clipqu": 26, "data_3_weight_producerscaling_roundqu": 26, "data_4_relu": 26, "data_7_bias_producerscaling_clipqu": 26, "data_7_bias_producerscaling_roundqu": 26, "data_7_gemm": 26, "data_7_weight_producerscaling_clipqu": 26, "data_7_weight_producerscaling_roundqu": 26, "data_8_relu": 26, "data_9_bias_producerscaling_clipqu": 26, "data_9_bias_producerscaling_roundqu": 26, "data_9_gemm": 26, "data_9_weight_producerscaling_clipqu": 26, "data_9_weight_producerscaling_roundqu": 26, "data_batch": 21, "data_elt": 27, "data_format": 4, "data_input": 20, "databas": [14, 24], "dataelt": 18, "dataflow": [11, 15], "dataformat": [3, 4, 6, 9, 33, 40], "dataformattranspos": 4, "datainput": 6, "datapath": [2, 21], "dataprovid": [21, 23, 25, 27], "dataset": [19, 21, 25, 29], "datastructur": [19, 40], "datatyp": [2, 3, 4, 6, 9, 25, 31, 33, 40], "datatype1": 6, "datatype2": 6, "datayp": 19, "date": 0, "dcmake_build_typ": 16, "dcmake_install_prefix": 16, "dealloc": 4, "debug": [5, 6, 16], "decad": 26, "decai": 4, "decay_t": 4, "declar": [6, 20, 22, 26, 43], "decod": [20, 21, 28], "decompos": 20, "decompress": 21, "decompressed_file_path": 21, "deconv": [7, 18], "decor": [5, 13, 20, 22], "decoupl": [11, 18, 27], "dedic": 19, "deduc": 27, "deduct": 9, "deep": [0, 4, 9, 19, 24, 33, 34, 35], "def": [13, 19, 20, 21, 22, 25, 26, 27, 28], "default": [4, 5, 6, 7, 9, 11, 12, 13, 16, 18, 23, 27], "default_index": 6, "defaultdict": [13, 20], "defens": 29, "defin": [4, 5, 6, 7, 9, 11, 12, 13, 15, 19, 20, 21, 23, 26, 27, 29, 31, 33, 34, 36, 40, 43], "definit": 5, "degrad": 26, "degre": 0, "delet": [6, 7, 9, 11, 29], "delimit": 23, "demand": 23, "demonstr": [21, 24], "denomin": 9, "dens": 41, "depend": [0, 4, 6, 9, 11, 18, 19, 27, 30, 31, 33, 36, 39, 40], "deploi": [0, 26, 35], "deploy": [0, 18, 35], "deprec": 5, "depth": [7, 9, 18, 27, 40], "depthtospac": 20, "depthtospace_op": 9, "depthwis": 9, "deriv": 9, "describ": [9, 13, 19, 29, 33, 34, 40, 42], "descript": [4, 12, 16, 22, 29, 33, 34, 40], "deserialize_proto": 19, "design": [0, 6, 9, 11, 18, 27, 29, 35], "desir": [4, 9, 16, 26, 28, 34, 43], "destin": [4, 5], "destructor": 9, "detail": [0, 4, 5, 19, 24, 33, 40], "detect": [6, 30, 40, 43], "determin": [6, 9, 11, 27, 31], "determinist": [6, 18], "dev": [20, 21, 26], "dev_mod": 5, "develop": [0, 5, 26, 29, 34, 40, 43], "developp": [31, 43], "devic": [4, 6, 9, 12, 19, 26, 28, 34, 35, 36], "deviceidx_t": [4, 6, 9], "df": [4, 6], "dfg": 27, "dformat": [3, 4, 6, 9], "diagram": [11, 35], "dict": [5, 6, 13], "dictionari": [5, 20], "dictionnari": [5, 13], "didn": 23, "differ": [4, 5, 6, 9, 12, 23, 27, 29, 31, 33, 34, 43], "difficult": 26, "difficulti": 24, "digit": [19, 31], "dilat": 9, "dilation_dim": 9, "dilationdim": 9, "dim": [3, 4, 6, 9, 19, 20, 22, 27, 28], "dimens": [0, 4, 5, 6, 9, 10, 12, 13, 19, 22, 27, 28, 31, 40, 41], "dimension": 31, "dimensiosn": 20, "dimidx_t": 4, "dims_": 3, "dims_forward": 9, "dimsforward": 9, "dimsize_t": [4, 6, 9, 10], "dinstiguish": 42, "direct": [7, 11, 18, 23, 34, 40], "directli": [6, 9, 19, 27, 43], "directori": [16, 19, 22, 34], "dirnam": 6, "disabl": 9, "disconnect": 6, "disjoint": [7, 23], "displai": [11, 12, 13, 19, 20, 21, 23, 27, 28], "dissip": 0, "distil": 26, "distinct": 40, "distinguish": [4, 19], "div": [20, 40], "div_op": [9, 20], "divid": 28, "divis": [4, 9], "divop": 9, "dl": [6, 27], "dma": 34, "dnn": [5, 19, 22, 29, 31, 34, 35, 39, 40], "do": [4, 6, 7, 9, 10, 18, 19, 23, 27, 29, 34, 41], "doc": [22, 27], "docker": 12, "document": [29, 34], "doe": [4, 6, 9, 18, 20, 26, 27, 29, 33, 40, 43], "doesn": [6, 26], "domain": [13, 43], "don": [7, 19, 20, 23, 26], "done": [4, 6, 9, 10, 18, 19, 20, 22, 29, 30, 33, 36, 40], "doubl": [2, 5, 9], "download": [20, 21, 25], "download_materi": [19, 20, 21, 26], "downsiz": 4, "dpybind": 16, "drop": 4, "drop_last": [4, 21, 25], "droplast": 4, "dropout": [20, 40], "dropout_op": 9, "dsl": [7, 18, 23], "dsp": 0, "dst": 5, "dst_path": 5, "dt": [4, 9], "dtype": [3, 4, 5, 6, 9, 19, 20, 21, 22, 25, 26, 28], "due": [7, 27, 41, 43], "dummi": 6, "duplic": [6, 35, 40, 41], "durat": 9, "dure": [0, 6, 9, 11, 16, 18, 27, 29, 40, 43], "duti": 34, "dwerror": 16, "dynam": [11, 18, 34], "dynamicattribut": [3, 6, 9], "e": [4, 5, 6, 9, 19, 20, 27, 29, 33, 34, 40, 41], "e_prod": 20, "each": [2, 4, 5, 6, 7, 9, 10, 11, 16, 18, 19, 20, 27, 28, 30, 31, 33, 34, 40, 43], "eact": 5, "eager": 6, "earli": [11, 18, 27], "earlier": 11, "earlierthan": 11, "earliest": 11, "early_": 11, "eas": [0, 28], "easili": [6, 18, 20, 29, 33], "eclips": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43], "edg": [6, 7, 9, 35, 40, 41], "edgeleftidx": 7, "edgerightidx": 7, "edu": 25, "effect": [6, 15, 34], "effici": [7, 18, 23], "effort": [7, 18, 23], "either": [4, 12, 23, 27, 29, 33, 35], "elabor": 34, "electron": [11, 18, 27], "element": [4, 5, 6, 9, 11, 23, 25, 27, 34, 40], "elemwis": 6, "elif": 25, "elimin": 27, "elman": 40, "els": [6, 9, 18, 19, 20, 21, 22, 25, 26, 27, 43], "elts_t": [9, 18, 27], "elu": 40, "embed": [18, 19, 20, 26, 34, 35], "emerg": 43, "empti": [4, 5, 6, 7, 9, 23, 27, 33, 34, 40, 43], "emul": 40, "enabl": [5, 6, 12, 27, 29, 40, 43], "enable_custom_op": 13, "enable_if_t": 4, "enable_shared_from_thi": [6, 9], "encaplsul": 26, "encapsul": 43, "encod": [19, 20, 21, 25, 28], "encompass": [0, 6], "encount": [19, 24], "encourag": [18, 26], "end": [4, 6, 9, 11, 43], "end_": 11, "endstep": 9, "energi": 26, "engin": [10, 12, 15, 43], "enough": [18, 33], "enoughdatatocomputeoutputlin": 18, "ensur": [6, 9, 10, 27, 35], "enter": [9, 22], "enter_context": 19, "entir": [0, 6, 18, 27, 29, 34, 40], "entireti": 19, "entri": [5, 40], "enum": [2, 4, 9, 11], "enumer": [2, 11, 21, 25, 26], "env": 16, "environ": [18, 34, 36], "environn": [16, 19], "epsilon": 9, "eq": 43, "equal": [4, 6, 11, 26], "equal_op": 9, "equival": [4, 6, 7, 19, 23, 43], "eras": 9, "erf": 20, "erf_op": 9, "erfop": 9, "errno": 19, "erron": 23, "error": [5, 6, 7, 9, 16, 20, 22, 23, 27, 40], "especi": [10, 18], "eta": [22, 25], "etc": [0, 27, 34, 35], "eval": 22, "evalu": [26, 27, 30, 42], "even": [4, 6, 7, 9, 18, 19, 23, 26, 27], "eventu": [0, 18], "everi": [0, 6, 9, 27, 43], "everyth": [6, 26], "ex": 6, "exactli": [9, 18], "exampl": [4, 5, 7, 9, 12, 13, 16, 18, 19, 20, 21, 23, 25, 27, 29, 31, 33, 34, 41, 42, 43], "except": [4, 6, 7, 9, 22, 23, 27], "exceptiongroup": 22, "exchang": 0, "exclud": [6, 9], "exclus": 9, "exconv": 23, "exectim": 11, "execut": [6, 9, 11, 12, 18, 19, 22, 27, 29, 30, 34, 35], "executionmode_t": 12, "exempl": 27, "exercis": 24, "exhaust": 27, "exhibit": 27, "exig": 34, "exist": [4, 6, 7, 9, 21, 23, 25, 26, 27, 31, 40, 43], "exist_ok": 21, "exp": [9, 20, 43], "expand": [9, 18], "expand_metaop": [10, 23, 27], "expand_op": 9, "expandmetaop": 10, "exparam": 23, "expect": [6, 9, 19, 23, 26, 27, 34], "expectedtyp": 4, "experiment": 7, "expert": 34, "explain": 43, "explainalib": 34, "explan": 0, "explicit": [6, 9], "explicitcastmov": 10, "explicitli": 18, "explicittranspos": 10, "explor": 0, "exponenti": 40, "export": [8, 14, 16, 18, 20, 29, 41], "export_fold": [5, 12, 19, 22], "export_folder_path": 5, "export_lib": 5, "export_onnx": 13, "export_root": 5, "export_schedul": 19, "export_seri": 19, "export_util": [5, 19, 22], "exportlib": 5, "exportlibcpp": [19, 22], "exportnod": 5, "exportnodecpp": 5, "expos": 5, "expr": 43, "express": [23, 24, 29, 43], "extend": 24, "extens": [5, 11, 25], "extensivli": 20, "extern": [6, 29], "extra": 25, "extract": [4, 9, 25, 27, 28, 40], "f": [12, 19, 20, 21, 22, 23, 25, 26, 28], "facil": [18, 23], "facilit": 5, "fact": 23, "factor": [0, 9, 27], "factori": 9, "fail": [13, 19, 20, 21, 22, 26, 27], "fait": 13, "fallback": [4, 19], "fals": [2, 4, 5, 6, 7, 9, 10, 11, 13, 19, 21, 22, 26, 27, 43], "fashion": 40, "faster": 25, "fc": [6, 19, 23, 25, 26, 29, 41, 43], "fc0": 6, "fc1": 6, "fc1_gemm_input_0": 19, "fc2": 6, "fc3": 6, "fc_op": 9, "featur": [0, 6, 9, 11, 18, 19, 24, 27, 36, 39], "feature_feature_0_conv_input_0": 22, "fed": 18, "feder": 35, "fetch": [2, 4, 5], "fid": 19, "field": [9, 41], "figur": 43, "file": [5, 6, 11, 12, 13, 16, 20, 21, 22, 26, 29, 36, 43], "file_mmd": [20, 21, 28], "file_nam": 11, "file_path": 21, "filenam": [11, 13, 19], "filenotfounderror": 19, "fileobj": 19, "filepath": 12, "fill": [6, 12, 13, 23], "filler": 25, "filter": [6, 7, 9, 43], "filterlonguestdisjoint": 7, "final": [2, 6, 9, 26, 34, 41], "find": [0, 6, 7, 16, 18, 20, 23, 27, 29, 43], "finish": 11, "first": [0, 4, 6, 7, 9, 10, 11, 16, 19, 20, 25, 26, 27, 34, 43], "firsteltdim": 9, "firstidx": 9, "firstnod": 7, "firstsequ": 7, "fit": [5, 34], "fix": 10, "fix_import": 19, "fixeds": 9, "flag": [5, 9, 27], "flatidx": 4, "flatten": [4, 9, 18, 19, 21, 22, 26, 27], "flatten_op": 9, "flatten_output_0": 19, "float": [2, 4, 5, 6, 9, 11, 25, 26, 31, 33, 40, 43], "float16": 5, "float32": [4, 5, 6, 19, 20, 21, 22, 25, 26, 28], "float64": 5, "floor": 9, "flow": [0, 9, 40], "fmt": 6, "foat": 43, "fold": 26, "fold_op": 9, "folder": [5, 12, 16, 19, 34], "folk": 26, "follow": [5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 40, 43], "fopenmp": 22, "forc": 27, "forced_inputs_categori": 9, "forcedinputscategori": 9, "forget": 26, "form": [0, 6, 27, 31, 34], "formal": 43, "format": [0, 3, 4, 5, 6, 9, 10, 11, 19, 28, 31, 34, 35, 39], "format_": 3, "former": 6, "formul": 7, "forum": 0, "forward": [4, 5, 6, 9, 11, 19, 20, 21, 22, 25, 26, 27, 28, 33, 34, 40], "forward_dim": [6, 9, 11, 19, 27], "forward_dtyp": [6, 9], "forward_templ": 5, "forwarddatatyp": 6, "forwarddim": [4, 6, 9, 11, 27], "forwarddtyp": [6, 9], "found": [6, 7, 12, 19, 22, 23, 25, 43], "foundat": 9, "four": [6, 28], "fourth": 4, "fpga": 0, "framework": [6, 9, 19, 20, 24, 25, 27, 35, 36, 40, 43], "free": [6, 19], "friend": [4, 6], "from": [0, 2, 4, 5, 6, 9, 11, 12, 13, 16, 18, 19, 20, 21, 23, 25, 27, 28, 29, 31, 33, 34, 35, 36, 40, 43], "from_out_nod": 6, "from_tensor": 6, "fromoutnod": 6, "fromoutnodenam": 6, "fromtensor": 6, "fspath": 19, "full": [9, 11, 18, 23, 27], "fullfil": 43, "fulli": [9, 18, 20, 27, 40], "fullyconnect": 29, "func": [6, 7], "function": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 14, 18, 19, 20, 21, 25, 26, 27, 29, 30, 31, 33, 34, 42], "functionn": [10, 19, 20, 31, 40], "functionnali": 40, "functool": 20, "fundament": 27, "further": [7, 27], "furthermor": [6, 18], "fuse": [19, 29, 43], "fuse_batchnorm": [10, 19], "fuse_to_metaop": [10, 23], "fusebatchnorm": 10, "fuseconvbatchnorm": 29, "fusemuladd": 29, "fusetometaop": 10, "fusion": [23, 29], "futur": [9, 23], "fwd_includ": 5, "g": [5, 6, 9, 22, 27, 29, 33, 40], "gaph": 40, "garante": 27, "gate": [9, 40], "gather": [20, 26], "gather_op": 9, "gathered_shap": 9, "gatheredshap": 9, "gatherop": 9, "gelu": 40, "gemm": [19, 20], "gen": 22, "gen_swish_metaop": 20, "gener": [0, 5, 6, 10, 11, 12, 13, 15, 23, 27, 28, 29, 31, 33, 34, 35, 39], "generate_graph": [6, 20], "generate_input_fil": [19, 22], "generate_main_cpp": [19, 22], "generate_memori": 11, "generate_memory_auto_concat": 11, "generate_optimized_memory_info": [19, 22], "generate_plugin": 12, "generate_schedul": [11, 22, 27], "generategraph": 6, "generatememori": 11, "generatememoryautoconcat": 11, "generateschedul": 11, "generic_export": 13, "genericconv2d_dataflow_impl": 27, "genericoper": [5, 6, 9, 13, 19, 20, 27], "genericoperator_op": 9, "genericoperatorop": 9, "get": [2, 4, 5, 6, 9, 11, 18, 20, 21, 22, 23, 24, 26, 27, 35], "get_adapt": 5, "get_attr": 20, "get_available_backend": [4, 19, 26], "get_available_impl_spec": 5, "get_backward_schedul": 11, "get_best_adapt": 5, "get_best_match": 5, "get_children": 6, "get_connected_graph_view": [6, 27], "get_conv_horizontal_til": 28, "get_coord": 4, "get_export_nod": 5, "get_forward_schedul": 11, "get_idx": 4, "get_image_data": 22, "get_impl": 9, "get_input": [9, 20, 27], "get_input_nod": 6, "get_item": [2, 25, 31], "get_keys_conv2dop": 19, "get_len": 2, "get_nb_input": 6, "get_nb_mod": [2, 25], "get_nb_output": 6, "get_nb_required_data": 27, "get_nod": [6, 20, 23, 25, 27, 28], "get_oper": [5, 6, 19, 20, 21, 23, 25, 26, 27, 28], "get_ordered_children": 6, "get_ordered_input": 6, "get_ordered_nod": 6, "get_ordered_output": 6, "get_output": [9, 19, 20, 21, 25, 26, 27, 28], "get_output_nod": [6, 19, 20, 21, 25, 26], "get_par": [6, 28], "get_prod_conso": [5, 27], "get_ranked_nod": 6, "get_ranked_nodes_nam": 6, "get_raw_input": 9, "get_raw_output": 9, "get_required_memori": 27, "get_required_spec": 5, "get_sequential_static_schedul": [5, 11], "get_static_schedul": 11, "getattr": 19, "getavailablebackend": [4, 9], "getbackwardschedul": 11, "getchildren": 6, "getconnectedgraphview": 6, "getcoord": 4, "getfirstfreedatainput": 6, "getforwardschedul": 11, "getgraph": 40, "getidx": 4, "getimpl": [4, 9], "getimploffset": 4, "getindexbatch": 4, "getinput": 9, "getinputlines": 18, "getinputsnam": 9, "getitem": [2, 4], "getlen": [2, 4], "getnbbatch": 4, "getnbconsumeddata": 9, "getnbfreedatainput": 6, "getnbmod": [2, 4], "getnbproduceddata": 9, "getnbrequireddata": [9, 18], "getnbrequiredprotect": 9, "getnod": 6, "getoper": 6, "getorderedchildren": 6, "getorderedinput": 6, "getorderednod": 6, "getorderedoutput": 6, "getorderedpar": 6, "getoutput": 9, "getoutputlines": 18, "getoutputsnam": 9, "getpar": 6, "getrankednod": 6, "getrankednodesnam": 6, "getrawinput": 9, "getrawoutput": 9, "getrequiredmemori": [9, 18], "getsequentialstaticschedul": 11, "getstaticschedul": 11, "getstorageidx": 4, "getter": 6, "gettyp": 43, "git": [19, 20, 21, 26], "gitlab": [0, 20, 21, 26], "give": [6, 19, 30, 42], "given": [2, 4, 5, 6, 7, 9, 11, 23, 27, 31, 34, 40], "gk_iodefaultindex": 6, "global": [6, 18, 22, 34], "globalaveragepool": 20, "globalaveragepooling_op": 9, "gm": [7, 10, 18, 23], "go": [6, 23], "goal": [34, 41], "goe": 27, "good": [7, 23], "got": 22, "gpu": [0, 29, 33, 36, 40], "grad": 4, "gradient": [4, 9, 25, 40], "grai": [19, 26], "grammat": 43, "granular": 18, "graph": [5, 8, 9, 10, 11, 13, 14, 15, 20, 24, 25, 26, 27, 28, 29, 31, 35, 36, 39], "graph_fus": 23, "graph_mmd": [20, 21, 28], "graph_view": [5, 6, 10, 11, 13], "graphbyt": [20, 21, 28], "graphptr": 6, "graphview": [7, 9, 10, 11, 12, 13, 18, 20, 23, 25, 28], "graphviewab": 40, "greedi": 27, "gridsampl": 20, "gridsample_op": 9, "ground": 29, "group": [0, 5, 43], "groupement": 6, "grow": [10, 18], "gru": 40, "gt": [19, 22, 25, 26], "guarante": [4, 6, 19], "guid": [0, 17, 34], "gv": 6, "gz": [19, 21, 25, 26], "gzip": [19, 21, 26], "gzipfil": [19, 26], "h": [5, 22], "ha": [4, 6, 7, 9, 10, 18, 19, 20, 22, 23, 27, 28, 33, 34, 40, 43], "half": 5, "half_float": 5, "halid": 18, "hand": 27, "handl": [5, 6, 9, 13, 18, 20, 31, 41], "happen": [27, 43], "hardswitch": 40, "hardwar": [0, 10, 15, 19, 29, 30, 33, 35, 40], "has_impl": 4, "has_native_coverag": 20, "hasimpl": 4, "hasn": 23, "have": [0, 4, 6, 9, 10, 11, 12, 13, 16, 19, 20, 23, 25, 26, 27, 31, 33, 34, 35, 40, 43], "hbox": 22, "he": [18, 25], "he_fil": 25, "head": [20, 21, 26], "header": [5, 34], "heaviside_op": 9, "height": [5, 22], "held": 6, "help": [6, 12, 34], "helper": [4, 9, 14, 25], "henc": [4, 27, 31], "here": [6, 7, 18, 19, 23, 24, 27, 28, 35, 36, 40], "hereaft": 19, "hesit": 10, "heurist": [7, 15, 19, 23, 33, 43], "hi": 34, "hidden": 9, "hidden_channel": [9, 27], "hide": 40, "hierarch": [18, 23, 27], "hierarchi": 27, "high": [0, 18, 34], "high_resolution_clock": 11, "highest": [4, 16], "highli": 18, "hl": [18, 29], "hold": [5, 27], "hold_canva": 22, "home": 27, "horizont": 19, "horizontl": 28, "host": 12, "hot": 25, "how": [5, 6, 7, 10, 20, 26, 27, 28, 33, 34, 36, 40], "howev": [4, 6, 19, 20, 27, 41], "hpp": [5, 12, 19], "html": 27, "http": [0, 10, 20, 21, 22, 25, 26, 27, 28], "hub": 0, "huggingfac": 22, "hw": 4, "hybrid": 27, "hyperbol": 40, "i": [3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 23, 25, 27, 28, 29, 31, 33, 34, 35, 36, 39, 40, 41, 43], "id": [6, 12], "ident": [6, 10, 20, 27, 43], "identif": 18, "identifi": [9, 23], "identity_op": 9, "idna": [22, 25], "idx": [4, 6, 9, 25], "idx1": 21, "idx3": 21, "ie": 5, "ignor": [11, 27], "ignore_produc": 11, "ignoreproduc": 11, "ilayernorm_op": 9, "im2col": 10, "imag": [12, 19, 20, 21, 22, 28, 31], "imagin": 43, "img": [20, 21, 28], "img_nam": 22, "impl": [4, 9], "implement": [0, 1, 4, 5, 7, 9, 11, 18, 19, 23, 24, 27, 28, 31, 35, 43], "implemt": [29, 33], "impli": [4, 18], "implicit": [10, 27], "imploffset": 4, "implspec": [3, 5], "import": [1, 6, 14, 18, 21, 22, 23, 24, 25, 27, 28, 40, 43], "import_gener": 13, "import_swish": 20, "impos": 34, "imposs": 6, "imshow": [19, 26], "in_batch": 5, "in_cdtyp": 5, "in_chan": 5, "in_channel": [9, 25, 27], "in_dim": 5, "in_dtyp": 5, "in_height": 5, "in_id": [5, 6], "in_nam": 5, "in_nod": 5, "in_siz": 5, "in_tensor": 20, "in_view": 6, "in_width": 5, "inc_produc": 11, "inchannel": 9, "includ": [0, 5, 6, 7, 9, 11, 12, 19, 22, 23, 26, 29, 34, 35], "include_learnable_paramet": 6, "include_list": 5, "includelearnableparam": 6, "incom": 40, "incomplet": 35, "incproduc": 11, "increas": 9, "increment": 4, "incrementindexbatch": 4, "inde": [20, 29, 33, 34], "independ": 0, "independantli": 16, "indermedi": 4, "index": [2, 4, 6, 9, 11, 13, 25, 31], "indic": [5, 6, 9, 11, 13, 34, 40], "induc": 6, "infer": [6, 9, 18, 20, 21, 24, 28, 31, 42], "inferior": 4, "info": [12, 19, 27], "inform": [5, 6, 9, 13, 18, 24, 34, 40, 43], "inherit": [4, 20, 31], "inheritedattribut": 9, "inid": 6, "init_grad": 25, "initi": [4, 5, 6, 9, 10, 12, 25, 26, 27, 29, 39, 41], "initial_graph": 28, "ink": [20, 21, 28], "inlin": [2, 3, 4, 6, 7, 9, 11, 22], "inner": [6, 10], "innov": 43, "input": [4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 20, 23, 25, 26, 27, 28, 29, 31, 33, 34, 40, 42, 43], "input1": 9, "input2": 9, "input_arrai": 26, "input_categori": [6, 9], "input_data": 6, "input_digit": 19, "input_dim": 6, "input_idx": 27, "input_index": 9, "input_nam": 6, "input_nod": [13, 20], "input_op": 20, "input_tensor": [6, 9, 19, 26, 28], "inputcategori": [6, 9, 27], "inputconv": 6, "inputdata": 6, "inputdim": 6, "inputidx": [9, 18], "inputnam": 6, "inputnod": 6, "inputs_dim": 13, "inputs_nam": 6, "inputs_s": 27, "inputscategori": 9, "inputsnam": 6, "inputss": 9, "inputtyp": 6, "inquir": 6, "insequ": 7, "insert": [6, 10, 26], "insert_par": 6, "insertpar": 6, "insid": [6, 12, 16, 19, 26, 43], "insight": 0, "inspir": 43, "instal": [0, 15, 19, 22, 25, 27], "instanc": [4, 5, 6, 7, 9, 10, 27, 31, 43], "instanci": [2, 29, 31], "instanti": 18, "instead": [6, 9, 20, 26], "instrinct": 6, "instruct": [6, 18], "int": [2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 20, 31, 33, 40], "int16": 5, "int16_t": 5, "int32": 5, "int32_t": [5, 9], "int64": 5, "int64_t": [5, 9], "int8": 5, "int8_t": [5, 9], "integ": [4, 6, 9, 26, 43], "integr": [0, 9, 29, 43], "intend": [0, 5, 7, 18, 23, 27, 34, 35], "intent": 6, "interact": 20, "interest": [0, 18, 27, 28], "interfac": [5, 18, 19, 20, 29, 34], "interleav": 27, "intermedi": [4, 7, 23], "intern": [4, 9, 19, 33], "interoper": [0, 15, 19], "interpol": 4, "interpret": [9, 34], "intersect": 43, "intput": 43, "intrins": 6, "introduc": [7, 11, 18, 23, 25, 27, 29, 33, 40, 43], "invalid": [4, 27], "invers": 18, "inview": 6, "invok": 5, "involv": [35, 36, 43], "io": [3, 19], "ioindex_t": [6, 7, 9, 18], "iospec": 3, "iou": 30, "ipycanva": 22, "ipython": [20, 21, 22, 28], "ipywidget": 22, "ir": 15, "irreversibli": 4, "is_arithmet": 4, "is_atom": 9, "is_back_edg": 9, "is_optional_input": 9, "isatom": 9, "isbackedg": 9, "isconditionalnoderequir": 11, "iscontigu": 4, "isfil": [20, 21, 22, 26], "isinbound": 4, "isinputnod": 6, "isol": 27, "isomorph": [18, 43], "isoptionalinput": 9, "isoutputnod": 6, "isoutputunsign": 9, "isprior": 11, "issu": [0, 24], "item": [2, 4, 6, 31], "iter": [4, 5, 12, 27], "its": [4, 6, 7, 9, 11, 16, 18, 19, 23, 24, 25, 27, 29, 31, 33, 34, 40, 41], "itself": [4, 6, 18, 19, 29, 33], "jedi": 22, "jinja": [5, 18], "join": [19, 21, 23, 27], "jupyterlab_widget": 22, "just": [6, 9, 18, 19, 20, 23, 25, 26, 27, 29, 33], "k": [9, 43], "kb": [22, 25], "keep": [6, 7, 23, 28, 40, 41], "keep_dim": 9, "keepdim": 9, "kei": [4, 5, 11, 13, 20, 31, 43], "kept": [6, 7, 23], "kera": [0, 29], "kernel": [5, 6, 9, 10, 18, 19, 22, 27, 29, 33, 35, 40, 43], "kernel_dim": [9, 23], "kernel_dst_path": 5, "kernel_src_path": 5, "kerneldim": 9, "kernels_path": 5, "kernels_to_copi": 5, "keyword": 40, "kind": [9, 18, 29, 35, 40], "know": [6, 18, 27, 33, 34, 40], "known": [27, 40], "kpi": 35, "kriz": 25, "kwarg": [3, 6, 9, 10, 11], "l": 19, "label": [21, 25, 26, 29, 31], "lack": 12, "lambda": [6, 7, 18, 20, 27, 43], "languag": [34, 43], "larg": 26, "larger": 4, "last": [4, 6, 19, 27], "late": [11, 18, 27], "late_": 11, "latenc": 0, "later": [11, 19, 20, 27], "laterthan": 11, "latest": 11, "latter": [29, 34], "lattic": 6, "launch": 34, "layer": [0, 5, 9, 10, 11, 19, 22, 26, 28, 30], "layout": [5, 11, 22], "lazi": 4, "lbl": 21, "lbl_batch": 21, "lead": [6, 26, 27], "leaki": 40, "leakyrelu": [20, 28, 40], "leakyrelu0": 28, "leakyrelu_op": 9, "leanr": 25, "learn": [0, 19, 27, 29, 35, 40], "learnabl": 6, "learning_r": 25, "least": [6, 23, 28, 39, 40], "leav": [9, 22], "led": 23, "left": [6, 27], "len": [2, 21, 23, 25, 26], "lenet_export_fp32": 22, "lenet_mnist": 22, "length": [5, 6, 9], "less": 4, "let": [19, 20, 23, 26, 27, 28, 29], "level": [0, 6, 10, 11, 13, 18, 23, 27, 34], "lexem": 43, "lf": [19, 20, 21, 26], "lh": 6, "lib": [12, 16, 19, 22, 25, 27], "librari": [5, 12, 16, 19, 20, 21, 24, 29, 31, 33, 35, 40], "like": [4, 6, 7, 10, 23, 27, 29, 34, 35], "likewis": 4, "limit": 29, "line": [6, 18, 19, 25, 27], "linear": 40, "liner": 23, "link": [6, 28, 33, 34, 40], "linux": 15, "linux_x86_64": 25, "list": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 21, 23, 25, 27, 34, 40], "list_act": 5, "list_config": 5, "live": 28, "llvm": 18, "ln_op": 9, "load": [4, 9, 12, 13, 18, 19, 20, 25, 26, 27, 29, 31, 34, 35, 36], "load_data_in_memori": [2, 21], "load_external_data": 19, "load_model": 19, "load_onnx": [13, 19, 20, 21, 22, 26, 27], "loaddatainmemori": 2, "loadig": 12, "local": [27, 40], "locat": [5, 6], "log": [6, 19], "log_nb_ops_by_typ": 19, "log_output": 6, "log_scal": 19, "logic": [6, 11, 18, 27], "logoutput": 6, "long": [9, 23, 25, 27, 29, 33, 40], "longest": [7, 23], "longuestbranchfirst": 11, "look": [0, 10, 19, 25], "lookforchild": 7, "loss": 25, "lost": [4, 23], "lot": 27, "low": 0, "lower": [4, 6, 18], "lowercas": [13, 20], "lowest": [4, 6], "lparen": 43, "lrn_op": 9, "lstm": [18, 20, 27, 40], "lstm_graph": 27, "lstm_model": 27, "lstm_schedul": 27, "lt": [22, 25], "m": [4, 9, 12], "mac": 42, "machin": 12, "macro": 20, "madd": 26, "made": [6, 18, 34], "magicnumb": 2, "mai": [0, 4, 6, 7, 9, 11, 17, 18, 22, 23, 27, 31, 34, 41, 43], "main": [0, 5, 6, 22, 40], "maintain": 29, "major": 18, "make": [4, 6, 9, 14, 16, 18, 19, 20, 22, 23, 27], "make_shar": 6, "makecontigu": 4, "makedir": 21, "makefil": [12, 19, 22], "manag": [5, 9, 11, 34, 40], "mandatori": [6, 7, 27], "mani": [19, 27, 34], "manipul": [9, 10, 18, 19, 24, 26, 35, 43], "manipulatedbi": 43, "manner": [25, 31], "manual": [6, 19, 34], "manufactur": 34, "manylinux2014_x86_64": 25, "manylinux_2_17_x86_64": 25, "map": [2, 4, 5, 6, 7, 9, 10, 11, 13, 15, 31, 35], "mark_non_un": 6, "marknonun": 6, "mat": 2, "match": [4, 5, 6, 8, 9, 10, 14, 18, 19, 24, 25, 27, 29], "matchfrom": 7, "matchingresult": 7, "math": 20, "mathemat": [9, 18, 41, 43], "matmul": [19, 20, 29, 40], "matmul_op": 9, "matmul_to_fc": [10, 19], "matmulop": 9, "matmultil": 10, "matmultofc": 10, "matplotlib": [19, 20, 21, 22, 26, 27, 28], "matrix": [2, 9, 10, 30, 31], "mattr": 6, "max": [4, 6, 9, 27, 40], "max_header_s": 19, "maxdim": 10, "maximis": 43, "maximum": [9, 10], "maxpool": [7, 9, 18, 20], "maxpool1d": 40, "maxpool2d": 40, "maxpool3d": 40, "maxpooling_op": 9, "mb": [22, 25], "mbackward": 6, "mchildren": 6, "mcount": 11, "mcu": 0, "md": 6, "mdatatransform": 31, "mean": [4, 6, 7, 9, 11, 13, 20, 23, 27, 43], "meant": [6, 9], "measur": [19, 35], "mecan": 31, "mechan": [9, 19, 20, 23, 41], "meet": [29, 43], "mem": 34, "mem_info": [5, 19, 22], "mem_info_cont_offset": 5, "mem_info_cont_s": 5, "mem_info_length": 5, "mem_info_offset": 5, "mem_info_s": 5, "mem_info_strid": 5, "mem_info_wrap_offset": 5, "mem_info_wrap_s": 5, "member": [2, 3, 7, 11], "memori": [0, 4, 5, 9, 11, 18, 19, 26, 28, 29, 34, 36, 40, 43], "memorize_op": [6, 9], "memory_manag": [5, 19, 22], "memory_manager_arg": [5, 19, 22], "memorymanag": 11, "mention": [33, 40], "mere": 6, "merg": [10, 40], "mermaid": [6, 11, 19, 20, 21], "messag": 6, "meta": [5, 18, 23, 24], "meta_oper": [9, 20], "metadata": [22, 25, 27], "metaop": 20, "metaoper": [5, 9, 20], "metaoperator_op": 9, "method": [4, 5, 6, 9, 13, 15, 19, 20, 23, 27, 29, 41], "metric": [21, 25, 42], "mforward": 6, "micro": [9, 10, 20], "micrograph": 20, "middl": [7, 23], "midinchildren": 6, "midoutpar": 6, "might": [18, 43], "min": 4, "min_repeat": 11, "mind": 23, "minim": [18, 23], "minimum": 9, "minputnam": 6, "minputnod": 6, "minrepeat": 11, "miss": [6, 9, 13, 27], "mix": [6, 9], "mlp": 21, "mlp_mnist": [19, 21], "mm2": 11, "mma": 10, "mmap_mod": 19, "mmd": [19, 20, 21, 22, 23, 27, 28], "mmean": 11, "mnist": [4, 19, 26, 31], "mnist_dir": 21, "mnist_label": 26, "mnist_model": 19, "mnist_sampl": [19, 26], "mnist_test": 21, "mobilenetv2": 27, "mobilenetv20_features_conv0_fwd": 27, "mobilenetv20_output_flatten0_reshape0": 27, "mod_op": 9, "modal": [2, 4, 31], "mode": [5, 9, 11, 12, 16, 19, 27, 34], "model": [0, 5, 7, 9, 11, 13, 15, 21, 23, 28, 29, 31, 35, 40, 42], "model_after_til": 28, "model_filepath": 19, "model_forward": 5, "model_stat": 19, "modelproto": 19, "modesl": 40, "modif": [19, 40], "modifi": [0, 5, 7, 10, 20, 23, 29, 34, 40], "modul": [0, 5, 16, 19, 20, 25, 26, 29, 31, 36], "modular": [0, 18, 29, 33], "modulenotfounderror": 19, "moment": [19, 40], "momentum": 9, "moper": 6, "more": [0, 6, 10, 18, 23, 24, 26, 27, 29, 33, 34, 40], "moreov": 31, "most": [0, 19, 27, 28], "moutputnod": 6, "move": [4, 23, 40], "move_op": 9, "movedsrc": 4, "movement": [9, 10], "mparent": 6, "mschedul": 31, "mse": [19, 25], "mstimuli": 31, "mtime": 19, "much": [27, 33], "mul": [6, 20, 40], "mul_op": [9, 20], "mulop": 9, "multi": [11, 18, 31], "multimod": 31, "multiparadigm": 0, "multipl": [4, 6, 7, 9, 10, 11, 19, 20, 23, 27, 41, 43], "multipli": 42, "must": [4, 5, 6, 7, 9, 10, 11, 13, 19, 23, 27, 30, 34, 35, 41, 43], "mutabl": 7, "mview": 6, "my_numb": 22, "my_op_convert": 13, "my_op_onvert": 13, "mycustomipoper": [7, 18], "mycustompipelinedconvimpl": 18, "myexport": [12, 19], "myfileobj": 19, "mymodel": 19, "myop": 13, "mysupportedmodel": [19, 21], "n": [4, 6, 9, 11, 12, 19, 20, 23, 26, 43], "n2d2": 41, "naiv": 26, "name": [4, 5, 6, 7, 9, 10, 11, 12, 13, 19, 20, 23, 27, 28, 39], "name1_inid": 6, "name2_outid": 6, "name_typ": 6, "name_x": 6, "nameerror": 19, "namespac": 5, "nan": 22, "nativ": [18, 20], "native_coverage_report": 20, "natur": 7, "nb": [20, 25], "nb_bit": 26, "nb_chan": 20, "nb_channel": 9, "nb_cl": 25, "nb_data": 9, "nb_featur": 9, "nb_in": 5, "nb_input": 9, "nb_iter": 12, "nb_out": [5, 9], "nb_output": 9, "nb_param": 9, "nb_sampl": [19, 26], "nbchannel": 9, "nbdata": 9, "nbdim": [4, 9], "nbfeatur": 9, "nbin": 9, "nbinput": [6, 9], "nbout": 9, "nboutput": [6, 9], "nbparam": 9, "nbvalidinput": 6, "nbvalidoutput": 6, "nchw": [4, 6, 31, 33, 40], "nd": 40, "necessari": [4, 6, 12, 20, 34, 39], "necessarili": 27, "need": [4, 5, 6, 10, 18, 20, 22, 25, 27, 29, 33, 34, 40, 43], "neg": 9, "negative_slop": 9, "negativeslop": 9, "neighbour": 40, "neither": 40, "nenadmarku": 10, "neq": 43, "nest": 4, "network": [0, 6, 9, 13, 18, 24, 27, 28, 29, 31, 33, 34, 35, 40], "neural": [0, 9, 18, 19, 24, 26, 28, 31, 33, 34, 35, 40], "neuromorph": 0, "new": [4, 5, 6, 9, 13, 18, 23, 27, 28, 34, 40, 43], "new_graph": 6, "new_nod": 6, "new_parent_input_tensor_idx": 6, "new_parent_nod": 6, "new_parent_output_tensor_idx": 6, "newg": 6, "newgrad": 4, "newli": 9, "newnam": 6, "newnod": 6, "newnodeoutid": 6, "newparentinputtensoridx": 6, "newparentnod": 6, "newparentoutputtensoridx": 6, "next": [4, 6, 18, 20, 27, 33, 40, 43], "nhwc": [6, 33, 40], "no_bia": [5, 9, 23, 27], "no_quant": 19, "nobia": 9, "node": [7, 9, 10, 11, 13, 18, 19, 22, 25, 26, 29, 33, 39], "node_": 11, "node_convert": 20, "node_export": 13, "node_import": [13, 20], "node_inputs_nam": 13, "node_nam": [5, 6, 20], "node_or_block": 7, "node_outputs_nam": 13, "node_to_replac": 28, "nodeexectim": 11, "nodenam": 6, "nodeproto": 13, "nodeptr": [6, 10, 11], "noexcept": [2, 3, 4, 6, 7, 9, 11], "non": [6, 7, 9, 23, 27, 31, 34], "none": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 18, 19, 20, 21, 22, 26], "none_elt": 27, "noop_with_empty_ax": 9, "noqa": 19, "nor": 40, "normal": [10, 22, 25, 26, 40], "notconnect": 11, "note": [4, 7, 19, 20, 22, 23, 25, 26, 27, 29, 33], "notebook": [26, 28], "noth": 4, "notic": [23, 26, 27], "notion": [18, 29, 33, 43], "now": [18, 19, 25, 26, 27, 28], "np": [6, 19, 20, 21, 25, 26, 28], "npu": 0, "npy": [19, 26], "nullptr": [6, 9, 11], "number": [2, 4, 5, 6, 9, 10, 11, 12, 19, 27, 28, 31, 34, 35, 40, 42], "number_np": 22, "numer": 9, "numeric_limit": 4, "numpi": [9, 19, 20, 21, 22, 25, 26, 28], "numpy_tensor": 20, "nvidia": [29, 33], "o": [3, 19, 20, 21, 22, 23, 26, 27], "o2": 22, "ob222806": 27, "object": [1, 4, 6, 19, 27, 31, 34, 40], "observ": 26, "obtain": [6, 11, 35], "obvious": 9, "occur": 4, "off": [16, 19, 26], "offer": [0, 19, 29, 34, 35], "offset": [4, 5, 41], "often": [0, 6, 20, 26], "oh": 27, "old": [5, 6, 23], "old_graph": 6, "old_nod": 6, "oldg": 6, "oldnod": 6, "on_click": 22, "on_erase_button_click": 22, "on_generate_button_click": 22, "on_mouse_down": 22, "on_mouse_mov": 22, "on_mouse_up": 22, "onc": [6, 19, 20, 25, 40, 43], "one": [2, 4, 5, 6, 7, 9, 10, 16, 17, 18, 19, 20, 22, 23, 25, 27, 28, 29, 31, 33, 34, 40, 43], "one_hot_encod": 25, "one_prod": 20, "ones": [6, 43], "onli": [4, 6, 7, 9, 11, 18, 19, 20, 23, 26, 34, 35, 40, 41, 43], "onnx": [0, 6, 9, 10, 12, 14, 15, 21, 22, 24, 26, 27, 29, 34, 36, 40, 41, 43], "onnx__if": 27, "onnx_import": 19, "onnx_nod": [13, 20], "onnx_node_converter_": [13, 20], "onnx_tutori": 20, "op": [5, 6, 9, 20, 27], "op1": 43, "op_typ": 5, "opaqu": 43, "oparg": 6, "open": [0, 19, 20, 21, 22, 26, 28], "opencv": [14, 31, 33, 40], "oper": [0, 4, 5, 6, 7, 8, 11, 13, 14, 18, 19, 23, 24, 26, 27, 28, 29, 30, 31, 33, 35, 39, 41, 42], "operatora": 40, "operatorb": 40, "operatorimpl": [5, 9, 20, 27], "operatortensor": 6, "operatortyp": 9, "opitim": 29, "oppos": [6, 40], "opset": [13, 20, 27], "opt": 25, "optim": [0, 18, 25, 26, 29, 34, 35, 43], "optimis": 16, "optimize_sign": 19, "option": [4, 5, 6, 7, 9, 10, 11, 13, 14, 23, 27], "optionaldata": 6, "optionalparam": 27, "optionn": [10, 16], "optionnalparam": 9, "optyp": 23, "order": [4, 5, 6, 7, 9, 10, 11, 13, 18, 19, 20, 23, 26, 27, 28, 29, 31, 33, 34, 35, 39, 40, 43], "org": [0, 20, 21, 25, 26, 27], "origin": [4, 6, 9, 40], "ossci": 21, "other": [0, 4, 5, 6, 7, 9, 10, 16, 18, 23, 27, 29, 30, 34, 36, 40, 43], "other_graph": 6, "other_in_id": 6, "other_nd": 6, "other_nod": 6, "other_view": 6, "othergraph": 6, "otherinid": 6, "othernod": 6, "othertensor": 4, "otherview": 6, "otherwis": [4, 6, 9], "oup": 23, "ouput": 28, "our": [6, 17, 19, 20, 24, 25, 26, 27], "out": [6, 20, 23, 34], "out_batch": 5, "out_cdtyp": 5, "out_chan": 5, "out_channel": [9, 25], "out_dim": 5, "out_dtyp": 5, "out_height": 5, "out_id": [5, 6], "out_nam": 5, "out_nod": 5, "out_siz": 5, "out_width": 5, "outchannel": 9, "outid": 6, "outnod": [19, 20], "output": [4, 5, 6, 7, 9, 10, 12, 13, 18, 19, 21, 23, 25, 26, 27, 28, 33, 34, 40, 41, 42, 43], "output_aidg": [19, 20, 21], "output_arrai": 26, "output_connector": 6, "output_digit": 19, "output_dims_ord": 9, "output_idx": 27, "output_model": 19, "output_nam": 6, "output_nod": 26, "output_tensor": 26, "outputdim": 9, "outputdimsord": 9, "outputidx": [9, 18], "outputnam": 6, "outputnod": 6, "outputs_dim": 13, "outputs_nam": 6, "outputsnam": 6, "outsid": 6, "over": [0, 5, 6, 9, 20, 26, 27, 40], "overal": 4, "overhead": 18, "overlap": [6, 7, 23, 31], "overload": [3, 6, 9, 10, 11, 18, 27], "overrid": [2, 4, 5, 6, 9], "overwrit": 4, "overwritten": 4, "own": [4, 7, 9, 18, 31, 34], "own_fid": 19, "p": [10, 11, 16, 18], "packag": [12, 19, 21, 22, 25, 27, 34], "pad": [7, 18, 20, 23, 41], "pad2d": 23, "pad_op": 9, "padbordertyp": 9, "paddedavgpooling2d": 9, "paddedavgpoolingop": 9, "paddedconv1d": 9, "paddedconv2d": [9, 23, 27], "paddedconvdepthwise1d": 9, "paddedconvdepthwise2d": 9, "paddedconvdepthwiseop": 9, "paddedconvop": 9, "paddedconvrelu": 23, "paddedconvrelu_prod": 23, "paddedmaxpooling2d": 9, "paddedmaxpoolingop": 9, "padding_dim": [9, 23, 27], "pair": [3, 6, 9, 11], "paltform": 43, "paradigm": 18, "parallel": [6, 18, 27, 40], "parallelschedul": 11, "param": [6, 7, 9, 10], "paramet": [2, 4, 5, 7, 9, 10, 11, 12, 13, 16, 19, 22, 25, 26, 27, 28, 29, 31, 33, 35, 42], "parent": [5, 6, 7, 23, 26, 27, 40], "parent_list": 6, "parent_nam": 5, "parent_nod": 6, "parent_node_output": 6, "parent_vec": 6, "parenthes": 23, "parentisbackedg": 6, "parentless": 6, "parentnodetyp": 23, "pars": [7, 23, 40], "parser_funct": 13, "parso": 22, "part": [9, 10, 19, 20, 23, 40, 43], "parti": 34, "partial": 35, "particular": [4, 26, 31], "particularli": [7, 18, 23, 40], "partion": 31, "pass": [4, 5, 6, 7, 9, 11, 19, 23, 25, 27, 35, 40, 43], "past": 26, "path": [5, 6, 11, 12, 13, 16, 18, 19, 20, 21, 22, 23, 26, 27], "path_to_aidg": 16, "path_to_install_fold": 16, "path_to_mmd": [20, 21, 28], "path_to_sav": 13, "pathlik": 19, "pattern": [6, 7, 18, 23], "pe": 34, "peak": 5, "peak_mem": 5, "pep405": 16, "per": [4, 6, 9, 12, 26, 27, 42], "perceptron": 25, "perform": [4, 5, 6, 9, 10, 18, 19, 23, 24, 26, 27, 29, 30, 33, 35, 36, 40, 43], "permut": 9, "perspect": 19, "pexpect": 22, "phase": [6, 16], "philosophi": 27, "pi": 9, "pickl": 19, "piec": [19, 20, 26], "pillow": [22, 25], "pip": [16, 22, 25, 27], "pipelin": [18, 43], "pixel": 30, "place": [23, 41], "plan": [18, 34], "plane": 11, "plateform": 29, "platform": [0, 19, 29, 30, 33, 34, 43], "pleas": [0, 6, 17, 18, 22, 24, 35], "plt": [19, 20, 21, 26, 28], "plugin": [14, 34, 39, 43], "png": [19, 22], "po": 6, "point": [5, 6, 18, 19, 20, 23, 25, 26, 27], "pointer": [4, 6, 9, 11, 36], "polici": 11, "pool": [11, 40], "pop": [20, 26, 27], "pop_op": 9, "popular": [9, 19], "posit": [4, 6, 9, 22, 41], "possess": 6, "possib": 34, "possibl": [6, 7, 9, 10, 11, 13, 18, 19, 23, 27, 34, 36, 40, 43], "possiibl": 25, "post": [6, 24], "povid": 19, "pow": [20, 40], "pow_op": [9, 20], "power": [0, 9, 15], "powop": 9, "practic": [26, 43], "pre": [10, 19, 27, 31], "preced": [10, 23, 27], "preceed": 28, "precis": [4, 11, 18, 26, 27, 29, 30, 31, 33, 40], "pred": 25, "predic": 4, "predict": [19, 20, 21], "predicted_class": 21, "prefer": 6, "prefix": [5, 6], "prepar": [5, 25, 26, 35], "preprocess": 31, "present": [4, 6], "pretrain": 26, "previou": [4, 22, 28, 43], "previous": [4, 6, 27, 33, 40, 42, 43], "primari": 18, "principl": [29, 34], "print": [4, 12, 19, 20, 21, 22, 23, 25, 26, 27], "prior": [11, 27], "priorconsum": 11, "prioriti": 18, "priorproducersconsum": 11, "problem": [9, 26, 43], "problemat": 43, "process": [9, 10, 11, 12, 18, 19, 26, 27, 29, 31, 33, 34, 43], "prod_conso": 5, "prod_op": 25, "prodconso": [5, 27], "produc": [6, 7, 10, 11, 15, 19, 20, 23, 25, 26, 29, 33, 34, 39, 41, 43], "producer_op": 9, "product": 27, "profil": 12, "program": [18, 29, 33, 34], "project": 27, "projet_root": 16, "prompt_toolkit": 22, "propag": [6, 20, 25, 26, 27, 41], "proper": 26, "properti": [4, 6, 29, 40, 41], "propos": [6, 19, 40, 42], "protect": 43, "protobuff": [36, 39], "protocol": 4, "prototyp": [9, 34], "provid": [4, 5, 6, 9, 11, 12, 13, 18, 19, 21, 23, 24, 27, 29, 30, 31, 33, 34, 35, 40, 41, 43], "prun": 34, "prune": [26, 35], "pseudo": 6, "ptq": [15, 19], "ptq_tutori": [19, 26], "ptyprocess": 22, "public": [0, 2, 3, 4, 6, 7, 9, 11], "pure": [9, 22], "purpos": [20, 26, 31, 43], "push": 27, "put": [6, 19, 27, 42, 43], "px": 31, "py": [5, 6, 9, 19, 27], "py2": 22, "py3": 22, "py_env_aidg": 16, "pybind": [12, 16], "pybind11": 36, "pygment": 22, "pypi": 25, "pyplot": [19, 20, 21, 26, 28], "python": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 19, 20, 21, 24, 25, 29, 34, 39, 40], "python3": [16, 19, 22, 25, 27], "python_bind": 12, "pytorch": [0, 6, 15, 19, 25, 27, 29, 40], "qat": 15, "qom": 43, "quant": 26, "quantifi": [7, 18], "quantiti": [11, 18, 27], "quantiz": [0, 9, 18, 24, 34, 35], "quantize_network": [19, 26], "quantized_model": 19, "quantizedmodel": 19, "quantizednbbit": 9, "queri": [7, 10, 18, 23], "queue": [6, 11], "quick": [0, 15], "quickli": [6, 34], "qzm": 43, "r": [9, 19, 20, 21, 26, 28], "rais": [4, 5], "rand": 28, "randn": 20, "random": [4, 20, 28], "randomli": [31, 40], "rang": [0, 9, 19, 26], "rank": [4, 6, 9, 18], "rapid": 9, "rather": 27, "raw": [9, 20, 21, 26, 31, 43], "rb": [19, 21], "read": [17, 19, 20, 21, 28, 31], "readabl": 19, "readbatch": 4, "readi": [4, 6, 9, 18, 19, 25, 26], "readm": 34, "readrandombatch": 4, "realiz": 34, "realli": [25, 34], "realloc": 4, "reason": [4, 18, 43], "recal": 30, "receiv": [40, 43], "recent": 19, "recept": [9, 41], "recip": [7, 8, 9, 14, 19, 23, 27, 29, 43], "recipi": [19, 41], "recogn": 43, "recognit": [19, 43], "reconfigur": 26, "reconnect": 6, "record": 27, "recquir": [19, 36, 39], "rectifi": 40, "recur": 9, "recurr": [9, 40], "recurs": [6, 10, 18, 23], "reduc": [0, 9, 20, 26, 29], "reducemean": 20, "reducemean_op": 9, "reducesum": 20, "reducesum_op": 9, "reduct": [9, 41], "ref": [4, 6, 10], "ref_typ": [20, 21, 26], "refcast": 4, "refcastfrom": 4, "refcontigu": 4, "refer": [0, 4, 6, 20, 23, 24, 34, 35, 40, 43], "referenc": 43, "reffrom": 4, "reflect": [6, 43], "reformat_kernels_to_copi": 5, "regard": [4, 23], "regardless": 6, "regex": [7, 18, 23], "regist": [5, 6, 19, 29, 33, 40], "register_convert": 13, "register_export": 13, "register_gener": 5, "register_import": 13, "register_metaop": 5, "registr": 4, "registrar": 31, "registri": 5, "regular": [23, 24, 43], "rel": [5, 10, 11, 23, 41, 42], "relat": [13, 34], "relationship": [7, 11, 18, 23], "releas": [0, 16, 18], "relu": [7, 18, 20, 23, 25, 26, 27, 28, 40], "relu0": 28, "relu1": [23, 27], "relu2": [23, 27], "relu3": [23, 27], "relu5": 23, "relu_op": 9, "reluop": 9, "remain": [4, 6, 23, 27, 33, 40], "rememb": [23, 27], "remov": [6, 9, 19, 22, 29], "remove_flatten": [10, 19, 21, 22, 26], "remove_nod": 23, "removechild": 6, "removedropout": 10, "removeflatten": 10, "removeview": 6, "repeat": [4, 11], "repetit": [4, 27], "replac": [6, 7, 9, 10, 11, 15, 19, 26, 27, 28, 29, 40, 41], "replic": 6, "report": 20, "reprens": 31, "repres": [4, 9, 11, 13, 31, 35, 40], "represent": [7, 19], "reproduc": 20, "request": [20, 21, 22, 25, 26], "requir": [0, 3, 4, 5, 6, 7, 9, 11, 19, 20, 22, 23, 25, 26, 27, 28, 34, 35, 36, 40, 41], "requiredproduc": 11, "rerun": 23, "res1": 28, "res2": 28, "rescal": 26, "reserv": 23, "reset": [4, 9, 11, 26], "reset_cp_model": 11, "reset_grad": 25, "reset_schedul": [11, 27, 28], "resetconnect": 6, "resetconsummerproduc": 9, "resetcpmodel": 11, "resetindexbatch": 4, "resetinput": 9, "resetschedul": 11, "reshap": [4, 10, 19, 20, 26, 27, 40], "reshape_op": [9, 27], "reshapeop": 9, "residu": 6, "resiz": 4, "resize_op": 9, "resolut": 6, "resolv": 22, "resourc": [5, 34, 43], "respect": [5, 29, 33], "respons": [20, 21, 22, 26, 27, 34], "rest": 29, "restart": 22, "restrict": 18, "result": [6, 7, 9, 10, 19, 23, 26, 27, 28, 39, 40, 41], "retain": 9, "retreiv": 26, "retriev": [5, 9, 10, 11, 19], "return": [2, 4, 5, 7, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, 31, 34, 40, 43], "reus": 41, "reuslt": 25, "revers": [6, 11], "rf": 22, "rgb": 31, "rh": 6, "rid": 26, "right": [4, 6, 18, 27, 28, 40], "rm": [19, 22], "rnn": [9, 40], "robust": [29, 34, 35], "role": 34, "root": [5, 6, 7, 9, 16, 23, 25], "root_nod": [6, 23], "rootnod": 6, "roughcanva": 22, "round": 26, "round_op": 9, "routin": 26, "rparen": 43, "rtol": 19, "rtype": [6, 9, 10], "rule": [7, 9, 29, 43], "run": [6, 11, 12, 20, 21, 22, 25, 27, 28, 34, 35, 36, 42], "run_export": [19, 22], "run_sync": 12, "runabl": 35, "runnabl": [27, 35], "runtim": [6, 13, 27, 34, 40], "s3": 21, "safe": 6, "sake": 43, "same": [0, 4, 6, 7, 9, 11, 16, 18, 20, 23, 27, 28, 41], "sampl": [2, 4, 19, 25, 26], "satisfi": [22, 25, 27], "satur": 0, "save": [5, 6, 11, 12, 13, 19, 20, 21, 23, 27, 28, 29, 40], "save_factorized_static_scheduling_diagram": [11, 27], "save_scheduling_diagram": [11, 19], "save_static_scheduling_diagram": [11, 27], "savefactorizedstaticschedulingdiagram": 11, "saveschedulingdiagram": 11, "savestaticschedulingdiagram": 11, "scalar": 4, "scale": [26, 42], "scaling_op": 9, "scalingfactor": 9, "schedul": [8, 9, 14, 15, 20, 21, 22, 23, 25, 28, 29, 35, 40, 41], "scheduler_export": [5, 19, 22], "schedulingel": 11, "schedulingpolici": 11, "schedulingsequenti": 19, "schedulingsequential_forward": 19, "schema": [13, 36], "scope": [6, 22], "script": [19, 26], "se": 6, "seamless": 15, "search": [7, 9, 15, 23], "second": [4, 6, 7, 11, 23, 28, 34], "secondli": 26, "section": [20, 29, 33, 34, 35, 40, 43], "secur": 34, "see": [0, 3, 11, 18, 19, 20, 23, 26, 27, 33, 34, 35, 40, 43], "seem": 26, "seemless": 36, "seen": [20, 43], "segment": 30, "select": [6, 9, 11, 23, 27, 28, 40], "select_op": 9, "self": [2, 3, 4, 5, 6, 7, 9, 11, 19, 20, 25, 27], "send": [6, 20, 25], "sens": [6, 23], "sep": 43, "separ": [9, 18, 23, 29, 33, 34], "seq": 7, "seq_length": [9, 27], "sequenc": [7, 9, 23, 27, 29, 33], "sequenti": [6, 9, 18, 23, 25, 27, 28, 29, 31, 34, 40], "sequentialschedul": [11, 19, 20, 21, 22, 25, 26, 27, 28], "seri": 31, "serial": [19, 35], "serv": [5, 28], "set": [4, 5, 6, 7, 9, 11, 12, 13, 16, 18, 23, 27, 29, 34, 40, 42, 43], "set_back_edg": 9, "set_backend": [4, 6, 9, 19, 20, 21, 25, 26, 27], "set_data_format": 4, "set_dataformat": [6, 9], "set_datatyp": [4, 6, 9, 19, 20, 21, 25, 26], "set_forward_dim": [20, 27], "set_grad": 4, "set_impl": [9, 20, 27], "set_input": [9, 28], "set_learning_rate_schedul": 25, "set_nam": 6, "set_ordered_input": 6, "set_ordered_output": 6, "set_output": [9, 20], "set_paramet": 25, "set_root_nod": 6, "set_scheduling_polici": 11, "setbackedg": 9, "setbackend": [4, 6, 9, 20], "setbatch": 4, "setdataformat": [4, 6, 9], "setdatatyp": [4, 6, 9], "setgrad": 4, "setimpl": [4, 9], "setinheritedattr": 9, "setinput": 9, "setinputid": 6, "setnam": 6, "setnodesnam": 6, "setorderedinput": 6, "setorderedoutput": 6, "setoutput": 9, "setrootnod": 6, "setschedulingpolici": 11, "setup": [4, 6, 19, 25, 28], "sever": [0, 6, 7, 10, 12, 23, 26, 28, 31, 34, 35, 40, 43], "sgd": 25, "sh": [19, 22], "shallow": [4, 9], "shape": [4, 6, 9, 10, 20, 22, 27], "shape_op": 9, "share": [4, 6, 9, 11], "shared_ptr": [2, 4, 6, 7, 9, 10, 11], "shiftgelu_op": 9, "shiftmax_op": 9, "short": [2, 9, 40], "shortestbranchfirst": 11, "should": [4, 5, 6, 9, 12, 13, 16, 18, 20, 25, 28, 31, 34, 41], "show": [6, 16, 26], "show_produc": 6, "showcas": 20, "showproduc": 6, "shuffl": [4, 21, 25], "shutil": 21, "sibl": 23, "sigmoid": [20, 40], "sigmoid_op": 9, "sigmoidop": 9, "sign": 2, "signatur": 13, "similar": [10, 11, 18, 27, 33, 40, 41], "similarli": 36, "simpl": [0, 7, 9, 15, 19, 20, 23, 27, 35], "simpler": 6, "simpli": [23, 27], "simplifi": [10, 34, 36, 40, 43], "simul": 0, "simultan": 27, "sinc": [7, 9, 20, 23, 34, 40], "singl": [5, 6, 7, 9, 10, 18, 20, 23, 27, 28, 43], "single_shift": 19, "singleoutput": 7, "singlepassgraphmatch": [7, 10, 18, 23], "site": [19, 22, 25, 27], "situat": 6, "size": [0, 4, 5, 6, 9, 10, 12, 27, 31, 34, 40, 41], "size_0": 4, "size_1": 4, "size_2": 4, "size_3": 4, "size_t": [2, 4, 6, 7, 9, 10, 11], "size_typ": [4, 9], "skip": [11, 21], "skipbackward": 11, "slice": [6, 10, 20, 28, 40], "slice_op": 9, "sliceop": 9, "slide": 9, "slope": 9, "small": [9, 26, 28], "smaller": [6, 26, 28], "so": [0, 4, 6, 16, 19, 20, 23, 26, 27, 34, 40], "softmax": [20, 40], "softmax_op": 9, "softmaxop": 9, "softmin": 40, "softplu": 40, "softwar": 34, "solut": 43, "solv": 30, "some": [0, 4, 6, 7, 9, 10, 11, 17, 18, 19, 27, 30, 34, 35, 41], "sometim": [7, 18, 23], "somewher": 27, "soon": 4, "sophist": [7, 18, 23], "sort": 11, "sourc": [0, 4, 5, 10, 16, 19, 22, 29, 34], "sovereignti": 0, "space": [4, 9], "spatial": 9, "spec": 5, "special": [0, 6, 18, 19, 27], "specif": [0, 5, 6, 7, 9, 10, 18, 23, 25, 29, 33, 34, 35, 40, 41, 43], "specifi": [4, 5, 6, 9, 11, 18, 20, 23, 27, 29, 34, 40, 41], "split": [6, 10, 20, 31, 34, 40, 43], "split_op": 9, "splitdatabas": 31, "splite": 28, "splitext": 21, "sqrt": [4, 20], "sqrt_op": 9, "sqrtop": 9, "squar": 9, "squash": 9, "squeez": 20, "squeeze_op": 9, "src": [4, 5, 19], "stabil": 9, "stabl": [6, 27], "stack": 19, "stack_data": 22, "stackop": 9, "stage": 35, "stai": [4, 18], "standalon": [18, 19], "standard": [0, 16, 18, 23, 29], "start": [0, 6, 7, 9, 11, 19, 24, 27, 43], "start_": 11, "startnod": 7, "stat": [19, 22], "state": [15, 20, 27, 35], "state_begin": 27, "stateful": 27, "static": [4, 5, 6, 9, 11, 18, 23, 27, 34, 35], "static_analysi": 19, "static_cast": 11, "static_fil": 5, "staticanalysi": 19, "staticschedulingel": 11, "stats_fold": [19, 22], "stats_op": 19, "statu": [20, 21, 22, 26], "status_cod": [20, 21, 22, 26], "std": [2, 3, 4, 6, 7, 9, 10, 11, 23], "stddev": 11, "step": [6, 9, 10, 11, 16, 18, 20, 24, 26, 27, 29, 34, 36, 43], "still": [9, 10, 11, 27, 35], "stimulu": 12, "stm32": 24, "stop": [27, 43], "storag": [4, 9], "store": [3, 4, 5, 7, 11, 12, 19, 23, 26, 34, 35, 40], "str": [2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 20, 21, 26], "strategi": [4, 33], "strictli": 27, "stride": [4, 5, 9, 40], "stride_dim": [9, 23, 27], "stridedim": 9, "string": [2, 4, 5, 6, 7, 9, 10, 11, 13, 43], "stripe": 28, "stroke_lin": 22, "stroke_styl": 22, "struct": [3, 7, 11], "structur": [4, 5, 6, 19, 29, 33], "stub": 19, "style": [6, 9], "sub": [4, 6, 7, 10, 20, 23, 27, 28, 40, 43], "sub_op": 9, "subclass": [4, 5, 9, 11], "subdirectori": 5, "subgraph": [40, 41, 43], "subop": 9, "subplot": [19, 26], "subsequ": [23, 34], "subset": [7, 18, 23, 26, 43], "substitut": 6, "subtract": [4, 9], "succe": 6, "succeed": [6, 23], "success": [6, 27, 28, 43], "successfulli": [9, 20, 21, 22, 25, 26], "suffix": 23, "suggest": 6, "sum": [6, 20, 21], "summar": [12, 27, 34], "summari": 19, "support": [0, 5, 9, 12, 13, 18, 19, 20, 23, 27, 40, 43], "supported_graph": 20, "supported_oper": [13, 20], "suppos": [35, 40], "sure": 19, "swap": [6, 27], "swich": 20, "swish": 20, "swish0": 20, "swish_micro": 20, "swish_micro_graph": 20, "swish_nod": 20, "swish_op": 20, "swishimpl": 20, "switch": [29, 33], "sy": [19, 23, 27], "symbol": 23, "symlink": 5, "sync_image_data": 22, "synchron": 12, "syntax": [7, 23, 43], "synthax": 40, "system": [0, 18, 27, 33, 34, 35, 40], "t": [4, 6, 7, 9, 19, 20, 23, 25, 26, 40], "t10k": 21, "tabl": 12, "tag": 27, "tag_conditional_nod": [11, 27], "tagconditionalnod": 11, "tagforkbranch": 11, "take": [4, 5, 6, 9, 13, 17, 19, 26, 27, 29, 31, 34, 40, 41, 43], "taken": [6, 43], "tangent": 40, "tanh": [20, 40], "tanh_op": 9, "tanhop": 9, "tar": 25, "target": [0, 4, 5, 9, 18, 19, 26, 29, 30, 33, 34, 35, 40, 43], "target_typ": 19, "targetreq": 4, "targettyp": 9, "task": [19, 26, 30], "team": 0, "technic": 0, "techniqu": [0, 26, 34], "teh": 6, "templat": [4, 5, 9, 12, 18, 34], "temporari": 6, "tensor": [2, 6, 9, 10, 11, 20, 22, 23, 25, 26, 28, 29, 33, 40], "tensordim": 4, "tensorflow": [15, 36, 40], "tensorimpl": 4, "tensoropencv": 2, "tensorrt": [14, 24, 29, 33], "term": [9, 19, 29, 34, 40], "termin": 13, "test": [0, 4, 6, 7, 9, 12, 13, 18, 20, 26, 31, 34], "test_cpp_dock": 12, "test_lib_python_dock": 12, "test_plugin": 12, "test_swish": 20, "textual": [7, 18, 23], "tf2onnx": 36, "th": [6, 23, 26], "than": [4, 6, 27, 29, 33], "thank": [11, 18, 19, 28, 36], "thei": [5, 6, 7, 10, 11, 19, 23, 26, 29, 41], "them": [6, 7, 9, 10, 18, 19, 23, 26, 27, 28, 33, 40, 42, 43], "themselv": [34, 40], "theori": 43, "therefor": [5, 7, 27, 34, 40, 43], "thi": [4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 39, 40, 41, 42, 43], "third": [4, 34], "those": [16, 26, 34, 43], "thread": [11, 18], "threadpool": 11, "three": [27, 31, 40], "through": [6, 9, 11, 23, 31, 35, 36], "throughout": 6, "throw": [6, 7, 23], "thrown": 6, "thu": [10, 11, 18, 20, 26, 27, 29], "tier": 31, "tight_layout": [19, 26], "tile": [15, 24, 35], "tiled_conv": 28, "till": [19, 34], "time": [4, 6, 9, 11, 12, 17, 27, 31, 34, 35, 40, 43], "time_point": 11, "tlm": [11, 18, 27], "to_fil": 22, "to_other_nod": 6, "to_tensor": 6, "tocoord": 4, "todo": [4, 20], "togeth": 34, "toindex": 4, "token": [9, 11, 18, 27, 43], "tolpolog": 34, "tonod": 6, "tool": [18, 19, 20, 24, 43], "toolchain": 19, "toolkit": 34, "toothernod": 6, "tootherview": 6, "top": 21, "top1_accuraci": 21, "topk_op": 9, "topolog": [0, 6, 33, 40, 43], "topologi": [18, 40], "torch": [25, 27, 36], "torchvis": [25, 36], "toronto": 25, "tostr": 4, "tot_acc": 25, "total": [9, 11, 21], "totensor": [6, 25], "toto": 5, "toward": [6, 40], "tpu": 10, "traceback": 19, "track": 6, "train": [0, 2, 4, 9, 19, 21, 24, 30, 31, 35, 40], "training_mod": 9, "trainingmod": 9, "trainset": 25, "traitlet": 22, "transact": [11, 18, 27], "transfert": 40, "transfomr": 10, "transform": [2, 6, 10, 22, 24, 25, 28, 34, 35, 40, 41], "transit": 43, "transmitt": 6, "transpos": [4, 6, 19, 20, 40], "transpose_op": 9, "transposit": [4, 10, 43], "treat": 6, "tree": [19, 43], "trigger": [6, 27], "trivial": [18, 26], "trt": 12, "trt_version": 12, "true": [4, 5, 6, 7, 9, 10, 11, 12, 13, 19, 21, 22, 23, 25, 27, 28, 43], "truth": 29, "try": [6, 22, 27], "tune": 18, "tupl": [3, 4, 6, 9, 13, 31], "tuple_out": 25, "tuto_util": [19, 23, 27], "tutori": [0, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28], "tvm": 18, "two": [4, 6, 9, 11, 16, 18, 23, 27, 31, 34, 40, 41, 42, 43], "type": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 16, 18, 19, 20, 25, 26, 27, 29, 33, 40, 43], "type_": 3, "typenam": 4, "typic": [5, 27], "typing_extens": 22, "u": 26, "ubyt": 21, "uint": 31, "uint16": [5, 6], "uint16_t": 5, "uint32": 5, "uint32_t": [2, 5, 9], "uint64": 5, "uint64_t": 5, "uint8": 5, "uint8_t": [2, 5], "unabl": 27, "unalt": 43, "unchang": 9, "uncompress": 26, "unconnect": 6, "undefin": [4, 5, 6, 9, 27], "under": [0, 5, 31], "undergon": 34, "understand": 10, "unfold": 10, "unfold_op": 9, "unic": 6, "unimpl": 43, "uninstal": 25, "union": [2, 5, 19], "uniqu": [5, 6, 18, 23], "unit": [9, 10, 34, 40], "unitari": 34, "unknown": [9, 20, 27, 39, 40], "unless": 5, "unlik": [4, 18], "unnecessari": [27, 43], "unord": 23, "unquantifi": [7, 18, 23], "unsign": [2, 9], "unsqueez": 20, "unsqueeze_op": 9, "unsupport": [9, 18, 20], "until": [6, 10, 11, 27], "unus": 4, "up": [12, 18, 34], "updat": [1, 6, 9, 11, 22, 25, 26, 27, 40, 41], "updateconsummerproduc": 9, "updatenodenam": 6, "upper": 11, "uppernod": 11, "uppernodeinputconnect": 11, "uppernodeinputfound": 11, "url": [20, 21, 25, 28], "urllib": 21, "urllib3": [22, 25], "urlretriev": 21, "us": [0, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 39, 40, 43], "usabl": 6, "usag": [0, 5, 6, 12, 21, 43], "use_cuda": 19, "useful": 31, "useless": 22, "user": [0, 6, 17, 18, 19, 27, 29, 34, 40, 42, 43], "userwarn": 27, "usr": [19, 22], "usual": 18, "utf": 28, "util": [12, 14, 19, 23, 26, 27], "v": [6, 16], "val": [4, 43], "val_acc": 21, "val_dataprovid": 21, "val_mnist": 21, "valid": [4, 6, 19, 31, 34], "validi": 4, "validtensor": 11, "valu": [2, 4, 6, 9, 11, 13, 16, 19, 20, 25, 26, 27, 28, 40], "vanish": 9, "variabl": [5, 27, 31], "variant": 9, "variou": [9, 19, 31], "vbox": 22, "ve": 26, "vector": [2, 3, 4, 6, 9, 10, 11], "venv": [19, 22, 25], "verbos": [6, 13, 19, 26, 27, 40], "veri": [10, 26], "verif": 6, "verifi": 6, "version": [6, 12, 13, 19, 27], "versu": 34, "via": [5, 29, 33, 34, 36, 39, 40], "view": [6, 10, 18, 36, 39, 43], "virtual": [2, 4, 5, 6, 9, 11], "virtualenv": 16, "visit": 43, "visual": [11, 19, 20, 21, 26], "visualis": 20, "visualize_mmd": [19, 20, 21, 23, 27, 28], "void": [4, 6, 7, 9, 10, 11], "vt": 4, "vtemplier": 22, "w": 9, "wa": [4, 6, 22, 23, 28], "wai": [5, 6, 18, 19, 20, 25, 43], "wait": 11, "walk": 6, "wall": 22, "want": [4, 6, 10, 19, 20, 23, 26, 27, 43], "warn": [6, 16, 26, 27], "wb": [20, 21, 22, 26], "wcwidth": 22, "we": [4, 6, 7, 10, 19, 20, 22, 23, 25, 26, 27, 28, 41, 42, 43], "weak": 6, "weight": [6, 7, 9, 23, 25, 27, 31, 39], "weightinterleaving_op": 9, "welcom": 4, "well": [4, 5, 6, 7, 11, 15, 19, 20, 23, 27, 34], "were": [4, 6], "wether": [5, 27], "wextra": 22, "what": [18, 23, 25, 27, 29, 41, 43], "whatev": [19, 34], "whatsoev": 18, "when": [1, 4, 6, 7, 9, 10, 11, 12, 19, 23, 27, 34, 36, 40, 41, 43], "where": [4, 5, 6, 9, 10, 11, 12, 13, 26, 27, 40], "whether": [4, 6, 9, 43], "which": [4, 5, 6, 7, 9, 10, 12, 13, 16, 18, 19, 20, 23, 25, 27, 29, 30, 31, 33, 34, 36, 40, 42, 43], "while": [9, 26, 29, 33], "whitespac": 7, "whl": [22, 25], "who": 18, "whole": [34, 40], "whose": 6, "why": [0, 15, 23, 27, 29, 33], "wide": 0, "widgetsnbextens": 22, "width": [5, 22], "wiki": 24, "window": 9, "wise": [4, 9, 30, 40], "within": [5, 6, 9, 36, 40], "without": [4, 6, 7, 11, 18, 19, 27, 29, 34, 35, 36, 40, 42], "won": 40, "work": [6, 7, 9, 10, 11, 27, 33, 34, 36, 40], "workaround": 27, "would": [6, 19, 23, 27], "wrap": [5, 11, 19, 22, 36], "wrap_around_buff": 11, "wraparoundbuff": 11, "wrapper": [5, 36], "write": [7, 18, 20, 21, 22, 23, 25, 26, 34], "wrong": [7, 23, 27], "www": 25, "x": [6, 9, 20, 22, 26, 27, 40], "xavier_uniform_fil": 25, "y": [6, 20, 22, 26, 40], "yet": [4, 6, 9, 19, 23, 27, 40], "you": [4, 6, 7, 9, 12, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 33, 34, 43], "your": [0, 7, 12, 16, 18, 23, 24, 27], "z": [6, 43], "z0": 43, "z1": 6, "z2": 6, "z3": 6, "za": 43, "zero": [4, 9, 23, 26, 40, 43], "\u00ecnstall": 16}, "titles": ["Aidge", "Aidge backend CPU", "Aidge backend OpenCV API", "Backend", "Data", "Export", "Graph", "Graph Matching", "Aidge core API", "Operators", "Recipes", "Scheduler", "Aidge Export TensorRT API", "Aidge ONNX API", "API", "Get Started", "Install", "Quick Start", "Why Aidge?", "Aidge demonstration", "Aidge ONNX tutorial", "Database MNIST", "Export a MNIST model to a CPP standalone project", "Graph matching and manipulation with Aidge", "Tutorials", "Training a simple Neural Network", "Post Training Quantization with AIDGE", "Understanding Aidge\u2019s scheduling", "Aidge tiling demonstration", "Framework architecture", "Benchmark neural network model", "Data", "Ensure robustness", "Runtime graph execution", "Perform an export", "User Guide", "Plateform interoperability", "Learn on edge", "Learn model", "Load and store model", "Computational graph", "Optimize graph", "Static analysis", "Transform graph"], "titleterms": {"": 27, "101": 24, "The": 26, "accuraci": 26, "ad": [24, 41], "adapt": 10, "add": [9, 10, 34], "advanc": 23, "aggreg": 42, "agnost": 18, "aidg": [0, 1, 2, 8, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "altern": 23, "an": [19, 20, 21, 34, 40], "analysi": [19, 42], "ani": 23, "api": [2, 8, 12, 13, 14], "appli": 26, "architectur": [29, 34], "art": 18, "attribut": [23, 34], "averag": 9, "backend": [1, 2, 3, 10, 29, 33], "base": [9, 11, 23], "batchnorm": [9, 10], "benchmark": 30, "block": 23, "build": 16, "c": [16, 19, 24, 27], "cast": [9, 10], "chang": 41, "character": 18, "class": [9, 11], "clone": 40, "code": 18, "compil": [16, 18, 19, 22], "complet": 34, "comput": [20, 26, 30, 34, 40, 42], "concat": 9, "condit": 27, "configur": 19, "connector": 6, "constant": 10, "constraint": 34, "consum": 18, "conv": [9, 10], "convdepthwis": 9, "convert": [10, 13], "copi": 40, "core": [8, 29, 40], "cpp": 22, "cpu": 1, "creat": [19, 20, 25, 27, 40], "creation": 26, "data": [4, 27, 31], "databas": [2, 4, 21, 25, 31], "dataflow": [18, 27], "dataprovid": [4, 31], "dataset": 26, "deep": 40, "default": 33, "defin": [18, 28], "definit": 40, "demand": 27, "demonstr": [19, 28], "describ": 43, "design": 34, "dimens": 20, "direct": 27, "div": 9, "dnn": 24, "do": 26, "done": 26, "download": [19, 22, 26], "draw": 22, "dropout": 10, "edg": [23, 37], "effect": 18, "engin": 18, "ensur": 32, "environ": 26, "erf": 9, "evalu": 21, "exampl": [6, 26, 40], "excut": 30, "execut": 33, "expand": [10, 43], "expans": 23, "explicit": [10, 40], "export": [5, 12, 13, 19, 22, 24, 34], "extra": 34, "factor": 23, "fc": [9, 10], "file": [19, 34], "first": 23, "flatten": 10, "fold": 10, "fonctionn": 24, "footprint": 42, "framework": 29, "from": [22, 39, 42], "function": [12, 13, 23, 28, 35, 40, 43], "fuse": [10, 41], "gather": 9, "gener": [9, 18, 19, 20, 22, 40], "get": [15, 42], "graph": [6, 7, 12, 18, 19, 23, 33, 34, 40, 41, 43], "graphview": 6, "guid": 35, "hardwar": [18, 34], "helper": [6, 12], "heurist": 18, "high": 35, "i": [0, 26], "ident": 9, "implement": [3, 20, 29, 33, 34, 40, 41], "import": [13, 19, 20, 26], "infer": [19, 26], "input": [3, 19, 22], "instal": [16, 21], "integr": 34, "interoper": [18, 36], "interpret": 43, "introduct": 40, "ir": 18, "isomorph": 41, "kera": 36, "kernel": 34, "kpi": 42, "lambda": 23, "last": 23, "layer": 41, "leakyrelu": 9, "learn": [25, 37, 38], "lenet": 21, "level": 35, "lexer": 43, "lib": 5, "librari": 34, "licens": 0, "like": 21, "linux": 16, "load": [22, 39], "loop": 25, "lstm": 9, "machin": 43, "main": 19, "make": [12, 40], "manipul": [22, 23], "map": [18, 34], "master": 27, "match": [7, 23, 43], "matmul": [9, 10, 41], "measur": 30, "memor": 9, "memori": 42, "mermaid": 28, "meta": [9, 10], "metanod": [20, 43], "method": 18, "metric": 30, "mnist": [2, 21, 22], "model": [18, 19, 20, 22, 25, 26, 27, 30, 34, 36, 38, 39, 41], "move": [9, 10], "mul": 9, "multi": 41, "need": [19, 26], "network": [19, 25, 26, 30], "neural": [25, 30], "new": 20, "node": [5, 6, 20, 23, 27, 34, 40, 42, 43], "note": 6, "notebook": [19, 20], "number": 22, "numpi": 36, "object": 25, "onc": 27, "onli": 27, "onnx": [13, 18, 19, 20, 39], "opencv": 2, "oper": [9, 10, 20, 40, 43], "operatortensor": 9, "optim": [19, 24, 41], "option": [12, 16, 19], "output": [3, 20], "overview": [30, 35, 42, 43], "own": 22, "p": 27, "pad": 9, "paddedavgpool": 9, "paddedconv": 9, "paddedconvdepthwis": 9, "paddedmaxpool": 9, "parallel": [11, 23], "paramet": [6, 34, 40], "parser": 43, "partit": 31, "pattern": 43, "perform": [21, 34], "phase": 34, "pipelin": [26, 27], "plateform": 36, "plugin": [12, 29, 40], "pool": 9, "pop": 9, "post": 26, "pow": 9, "power": 18, "predefin": 9, "produc": [9, 18, 27, 40], "project": [22, 34], "propos": 41, "provid": 20, "ptq": [18, 26], "python": 16, "pytorch": [18, 36], "qat": 18, "quantifi": 23, "quantiz": 26, "quick": 17, "recip": 10, "reducemean": 9, "regex": 43, "regist": [13, 20], "relu": 9, "remov": [10, 23, 43], "replac": [18, 23, 43], "requir": 21, "reset": 27, "reshap": 9, "retriev": 20, "return": 6, "robust": 32, "rule": [23, 34], "run": [19, 26], "runtim": 33, "scale": 9, "schedul": [5, 11, 18, 19, 26, 27, 33, 34], "score": 30, "seamless": 18, "search": 18, "select": 33, "sequenti": 11, "set": [19, 20, 25, 26], "setup": 26, "share": 40, "sigmoid": 9, "simpl": [18, 25], "slice": 9, "softmax": 9, "solver": 43, "some": [23, 26], "spatial": 41, "specif": 3, "specifiyng": 23, "sqrt": 9, "standalon": 22, "start": [15, 17], "state": [18, 43], "static": [19, 42], "stimuli": 31, "store": 39, "strategi": 34, "structur": 31, "sub": 9, "subgraph": 42, "syntax": 40, "tanh": 9, "tensor": [4, 19, 27, 31, 36], "tensorflow": 18, "tensorrt": 12, "test": [19, 22], "tile": [10, 18, 28, 41], "time": 30, "topologi": 41, "train": [25, 26], "transform": [19, 43], "transmitt": 40, "transpos": [9, 10], "tutori": [20, 24], "type": 23, "understand": 27, "up": [19, 20, 25, 26], "updat": 20, "usag": 23, "user": 35, "util": 2, "view": 40, "visual": 28, "well": 18, "what": [0, 26], "whole": 27, "why": 18, "work": [20, 26], "workflow": 35, "your": 22}}) \ No newline at end of file +Search.setIndex({"alltitles": {"(Optional) Generate an input file for tests": [[19, "(Optional)-Generate-an-input-file-for-tests"]], "(if needed) Download the model": [[19, "(if-needed)-Download-the-model"], [31, "(if-needed)-Download-the-model"], [33, "(if-needed)-Download-the-model"]], "0. Requirements for this tutorial": [[27, "0.-Requirements-for-this-tutorial"]], "1. Exporting the model": [[27, "1.-Exporting-the-model"]], "2. Modifying the test script for quantization": [[27, "2.-Modifying-the-test-script-for-quantization"]], "3. Preparing the calibration dataset": [[27, "3.-Preparing-the-calibration-dataset"]], "4. Generating the quantized model": [[27, "4.-Generating-the-quantized-model"]], "API": [[14, null]], "Adapt to backend": [[10, "adapt-to-backend"]], "Add": [[9, "add"]], "Add Swish to the CPP export support": [[24, "Add-Swish-to-the-CPP-export-support"]], "Add a custom operator to the C++ export": [[24, null]], "Add extra files to complete the export": [[40, "add-extra-files-to-complete-the-export"]], "Advanced usage": [[28, "Advanced-usage"]], "Aggregate KPI from a subgraph": [[48, "aggregate-kpi-from-a-subgraph"]], "Aidge": [[0, null]], "Aidge Export TensorRT API": [[12, null]], "Aidge ONNX API": [[13, null]], "Aidge ONNX tutorial": [[20, null]], "Aidge backend CPU": [[1, null]], "Aidge backend OpenCV API": [[2, null]], "Aidge core API": [[8, null]], "Aidge database": [[30, "Aidge-database"]], "Aidge demonstration": [[19, null]], "Aidge tiling demonstration": [[34, null]], "Applying the PTQ to the model \u2026": [[31, "Applying-the-PTQ-to-the-model-..."]], "Average Pooling": [[9, "average-pooling"]], "Backend": [[3, null]], "Backend CUDA example": [[21, null]], "Base Matching Rules": [[28, "Base-Matching-Rules"]], "BatchNorm": [[9, "batchnorm"]], "Benchmark neural network model": [[36, null]], "Build on Linux": [[16, "build-on-linux"]], "C++ Compilation": [[16, "c-compilation"]], "Cast": [[9, "cast"]], "Change topology (model isomorphism)": [[47, "change-topology-model-isomorphism"]], "Clone a graph": [[46, "clone-a-graph"]], "Compilation options": [[16, "compilation-options"]], "Compile the export": [[19, "Compile-the-export"]], "Compile the export and test it": [[23, "Compile-the-export-and-test-it"], [26, "Compile-the-export-and-test-it"]], "Computational footprint": [[48, "computational-footprint"]], "Computational graph": [[46, null]], "Compute score metrics": [[36, "compute-score-metrics"]], "Computing output dimensions": [[20, "Computing-output-dimensions"]], "Computing the model accuracy \u2026": [[31, "Computing-the-model-accuracy-..."]], "Computing the quantized accuracy \u2026": [[31, "Computing-the-quantized-accuracy-..."]], "Concat": [[9, "concat"]], "Conditional nodes scheduling": [[32, "Conditional-nodes-scheduling"]], "Configure the model for inference": [[19, "Configure-the-model-for-inference"], [33, "Configure-the-model-for-inference"]], "Connector": [[6, "connector"]], "Constant folding": [[10, "constant-folding"]], "Conv": [[9, "conv"]], "ConvDepthWise": [[9, "convdepthwise"]], "Convert Conv to MatMul": [[10, "convert-conv-to-matmul"]], "Converters Aidge to ONNX": [[13, "converters-aidge-to-onnx"]], "Converters ONNX to Aidge": [[13, "converters-onnx-to-aidge"]], "Core": [[35, "core"]], "Core operator": [[46, "core-operator"]], "Create a dataflow pipelining": [[32, "Create-a-dataflow-pipelining"]], "Create a scheduler and run inference": [[19, "Create-a-scheduler-and-run-inference"]], "Create an input tensor": [[19, "Create-an-input-tensor"]], "Create database to quantize model": [[25, "Create-database-to-quantize-model"]], "Creating Aidge model": [[30, "Creating-Aidge-model"]], "Creating a MetaNode": [[20, "Creating-a-MetaNode"]], "Data": [[4, null], [37, null]], "Data Structure": [[37, "data-structure"]], "Data partitioning": [[37, "data-partitioning"]], "Data provider tutorial": [[22, null]], "DataProvider": [[4, "dataprovider"], [37, "dataprovider"]], "Database": [[4, "database"], [37, "database"]], "Databases": [[2, "databases"]], "Default scheduler": [[39, "default-scheduler"]], "Define mermaid visualizer function": [[34, "Define-mermaid-visualizer-function"]], "Definition": [[46, "definition"]], "Describe graph patterns": [[49, "describe-graph-patterns"]], "Design and export the computation kernels": [[40, "design-and-export-the-computation-kernels"]], "Direct tensors produce whole data only once": [[32, "Direct-tensors-produce-whole-data-only-once"]], "Div": [[9, "div"]], "Doing the PTQ with AIDGE": [[31, "Doing-the-PTQ-with-AIDGE"]], "Download the model": [[23, "Download-the-model"], [25, "Download-the-model"], [26, "Download-the-model"]], "Draw your own number": [[23, "Draw-your-own-number"], [26, "Draw-your-own-number"]], "Ensure robustness": [[38, null]], "Environment setup \u2026": [[31, "Environment-setup-..."]], "Erf": [[9, "erf"]], "Example of Operator": [[46, "example-of-operator"]], "Examples": [[6, "examples"]], "Expand meta operators": [[10, "expand-meta-operators"]], "Expand operator": [[49, "expand-operator"]], "Expansion": [[28, "Expansion"]], "Explicit Cast Move": [[10, "explicit-cast-move"]], "Explicit Transpose": [[10, "explicit-transpose"]], "Explicit syntax": [[46, "explicit-syntax"]], "Explore a handful of graph transformations": [[33, "Explore-a-handful-of-graph-transformations"]], "Export": [[5, null], [13, "export"], [19, "Export"]], "Export 101": [[23, null]], "Export function": [[12, "export-function"]], "Export implementation phase": [[40, "export-implementation-phase"]], "Export lib": [[5, "export-lib"]], "Export mapping phase": [[40, "export-mapping-phase"]], "Export node": [[5, "export-node"]], "Export scheduler": [[5, "export-scheduler"]], "Export strategy": [[40, "export-strategy"]], "Export the attributes of the nodes": [[40, "export-the-attributes-of-the-nodes"]], "Export the model": [[23, "Export-the-model"], [26, "Export-the-model"]], "Export the parameters of the model": [[40, "export-the-parameters-of-the-model"]], "Export the scheduling of the graph": [[40, "export-the-scheduling-of-the-graph"]], "Export to an integrated kernel library": [[40, "export-to-an-integrated-kernel-library"]], "FC": [[9, "fc"]], "Factorization": [[28, "Factorization"]], "Framework architecture": [[35, null]], "Functional syntax": [[46, "functional-syntax"]], "Fuse BatchNorm": [[10, "fuse-batchnorm"]], "Fuse MatMul & added": [[47, "fuse-matmul-added"]], "Fuse MatMul and Add to FC": [[10, "fuse-matmul-and-add-to-fc"]], "Fuse to meta operator": [[10, "fuse-to-meta-operator"]], "Gather": [[9, "gather"]], "Generate an export in C++": [[19, "Generate-an-export-in-C++"]], "Generate inputs for testing the model from your drawing": [[23, "Generate-inputs-for-testing-the-model-from-your-drawing"], [26, "Generate-inputs-for-testing-the-model-from-your-drawing"]], "Generate main file": [[19, "Generate-main-file"]], "Generic Operator": [[9, "generic-operator"]], "Generic hardware model and mapping heuristics": [[18, "generic-hardware-model-and-mapping-heuristics"]], "Generic operator": [[46, "generic-operator"]], "Generic, compiler-agnostic tiling methods": [[18, "generic-compiler-agnostic-tiling-methods"]], "Get Started": [[15, null]], "Get node KPI": [[48, "get-node-kpi"]], "Graph": [[6, null]], "Graph Matching": [[7, null], [49, "graph-matching"]], "Graph Regex": [[49, "graph-regex"]], "Graph Regex Lexer": [[49, "graph-regex-lexer"]], "Graph Regex Parser": [[49, "graph-regex-parser"]], "Graph View": [[46, "graph-view"]], "Graph functions": [[12, "graph-functions"]], "Graph helpers": [[6, "graph-helpers"]], "Graph manipulation": [[28, "Graph-manipulation"]], "Graph matching": [[28, "Graph-matching"]], "Graph matching and manipulation": [[28, null]], "Graph transformation": [[19, "Graph-transformation"], [49, "graph-transformation"]], "GraphView": [[6, "graphview"]], "High level functionalities": [[41, "high-level-functionalities"]], "Identity": [[9, "identity"]], "Implementation of an operator": [[46, "implementation-of-an-operator"]], "Implementation selection": [[39, "implementation-selection"]], "Implementation specification": [[3, "implementation-specification"]], "Implementations & Backends": [[35, "implementations-backends"]], "Implementations and backends": [[39, "implementations-and-backends"]], "Import": [[13, "import"]], "Import Aidge": [[19, "Import-Aidge"], [24, "Import-Aidge"]], "Import the ONNX model into Aidge": [[33, "Import-the-ONNX-model-into-Aidge"]], "Importing an ONNX": [[20, "Importing-an-ONNX"]], "Importing the model in AIDGE \u2026": [[31, "Importing-the-model-in-AIDGE-..."]], "Inference": [[19, "Inference"]], "Input/Output specification": [[3, "input-output-specification"]], "Install": [[16, null]], "Install Python": [[16, "install-python"]], "Installation and Requirements": [[22, "Installation-and-Requirements"]], "Introduction": [[46, "introduction"]], "Keras Tensor interoperability": [[42, "keras-tensor-interoperability"]], "Keras interoperability": [[42, "keras-interoperability"]], "Keras model interoperability": [[42, "keras-model-interoperability"]], "LSTM": [[9, "lstm"]], "LeakyReLU": [[9, "leakyrelu"]], "Learn model": [[44, null]], "Learn on edge": [[43, null]], "License": [[0, "license"]], "Load ONNX model": [[24, "Load-ONNX-model"]], "Load and store model": [[45, null]], "Load model from ONNX": [[45, "load-model-from-onnx"]], "Load the model in Aidge and manipulate it": [[23, "Load-the-model-in-Aidge-and-manipulate-it"], [25, "Load-the-model-in-Aidge-and-manipulate-it"], [26, "Load-the-model-in-Aidge-and-manipulate-it"]], "MAKE Options": [[12, "make-options"]], "MNIST": [[2, "mnist"]], "Make a deep copy": [[46, "make-a-deep-copy"]], "Make a deep copy with shared parameters": [[46, "make-a-deep-copy-with-shared-parameters"]], "Master the C-P model": [[32, "Master-the-C-P-model"]], "MatMul": [[9, "matmul"]], "MatMul tiling": [[10, "matmul-tiling"]], "Match alternative blocks": [[28, "Match-alternative-blocks"]], "Match any node type": [[28, "Match-any-node-type"]], "Match node attributes with a lambda function": [[28, "Match-node-attributes-with-a-lambda-function"]], "Match parallel blocks": [[28, "Match-parallel-blocks"]], "Match solver": [[49, "match-solver"]], "Match the first / last node of some type": [[28, "Match-the-first-/-last-node-of-some-type"]], "Match \u201cno edge\u201d": [[28, "Match-%22no-edge%22"]], "Measure excution time": [[36, "measure-excution-time"]], "Memorize": [[9, "memorize"]], "Memory footprint": [[48, "memory-footprint"]], "Meta Operator": [[9, "meta-operator"]], "MetaNode": [[49, "metanode"]], "Model hardware & architecture rules": [[40, "model-hardware-architecture-rules"]], "Move": [[9, "move"]], "Mul": [[9, "mul"]], "Multi-layer spatial tiling": [[47, "multi-layer-spatial-tiling"]], "Node": [[6, "node"], [46, "node"]], "Node Regex": [[49, "node-regex"]], "Node Regex Interpreter": [[49, "node-regex-interpreter"]], "Node Regex Lexer": [[49, "node-regex-lexer"]], "Node Regex Parser": [[49, "node-regex-parser"]], "Note": [[6, "note"]], "Numpy interoperability": [[42, "numpy-interoperability"]], "ONNX": [[45, "onnx"]], "ONNX Import": [[19, "ONNX-Import"]], "Operator": [[46, "operator"]], "Operator base class": [[9, "operator-base-class"]], "OperatorTensor base class": [[9, "operatortensor-base-class"]], "Operators": [[9, null], [46, "operators"]], "Optimize graph": [[47, null]], "Optimize network": [[19, "Optimize-network"]], "Overview": [[36, "overview"], [48, "overview"], [49, "overview"]], "Pad": [[9, "pad"]], "PaddedAvgPooling": [[9, "paddedavgpooling"]], "PaddedConv": [[9, "paddedconv"]], "PaddedConvDepthWise": [[9, "paddedconvdepthwise"]], "PaddedMaxPooling": [[9, "paddedmaxpooling"]], "Parallel scheduler": [[11, "parallel-scheduler"]], "Parameters": [[6, "parameters"]], "Perform an evaluation of the LeNet-like on Aidge": [[22, "Perform-an-evaluation-of-the-LeNet-like-on-Aidge"]], "Perform an export": [[40, null]], "Perform static analysis on a neural network model": [[33, null]], "Plateform interoperability": [[42, null]], "Plugin Operator": [[46, "plugin-operator"]], "Plugin helper": [[12, "plugin-helper"]], "Plugins": [[35, "plugins"]], "Pop": [[9, "pop"]], "Post Training Quantization with AIDGE": [[31, null]], "Pow": [[9, "pow"]], "Powerful graph search & replace engine": [[18, "powerful-graph-search-replace-engine"]], "Predefined meta-operators": [[9, "predefined-meta-operators"]], "Predefined operators": [[9, "predefined-operators"]], "Producer": [[9, "producer"], [46, "producer"]], "Producers produce whole tensor data on demand": [[32, "Producers-produce-whole-tensor-data-on-demand"]], "Project constraints": [[40, "project-constraints"]], "Proposed implementation": [[47, "proposed-implementation"]], "Providing an implementation": [[20, "Providing-an-implementation"]], "PyTorch interoperability": [[42, "pytorch-interoperability"]], "PyTorch model interoperability": [[42, "pytorch-model-interoperability"]], "PyTorch tensor interoperability": [[42, "pytorch-tensor-interoperability"]], "Quantifiers": [[28, "Quantifiers"]], "Quantization dataset creation \u2026": [[31, "Quantization-dataset-creation-..."]], "Quantize the model to int8": [[25, "Quantize-the-model-to-int8"]], "Quantized model C++ export": [[25, null]], "Quick Start": [[17, null]], "ReLU": [[9, "relu"]], "Recipes": [[10, null]], "ReduceMean": [[9, "reducemean"]], "Register export functions": [[13, "register-export-functions"]], "Register import functions": [[13, "register-import-functions"]], "Registering new node import": [[20, "Registering-new-node-import"]], "Remove Dropout": [[10, "remove-dropout"]], "Remove Flatten": [[10, "remove-flatten"]], "Remove nodes": [[28, "Remove-nodes"]], "Remove operator": [[49, "remove-operator"]], "Replace ReLU operators by Swish operators": [[24, "Replace-ReLU-operators-by-Swish-operators"]], "Replace nodes": [[28, "Replace-nodes"]], "Replace operator": [[49, "replace-operator"]], "Reset the C-P model": [[32, "Reset-the-C-P-model"]], "Reshape": [[9, "reshape"]], "Retrieve the onnx model": [[20, "Retrieve-the-onnx-model"]], "Returns": [[6, "returns"]], "Run static analysis": [[33, "Run-static-analysis"]], "Run the export": [[19, "Run-the-export"]], "Running some example inferences \u2026": [[31, "Running-some-example-inferences-..."]], "Running some quantized inferences \u2026": [[31, "Running-some-quantized-inferences-..."]], "Runtime graph execution": [[39, null]], "STM32 export": [[26, null]], "Schedule the graph": [[24, "Schedule-the-graph"]], "Scheduler": [[11, null], [39, "scheduler"], [40, "scheduler"]], "Scheduler base class": [[11, "scheduler-base-class"]], "Seamless interoperability with ONNX, PyTorch and TensorFlow": [[18, "seamless-interoperability-with-onnx-pytorch-and-tensorflow"]], "Sequential scheduler": [[11, "sequential-scheduler"]], "Set up learning objects": [[30, "Set-up-learning-objects"]], "Setting up the AIDGE scheduler \u2026": [[31, "Setting-up-the-AIDGE-scheduler-..."]], "Setting up the notebook": [[19, "Setting-up-the-notebook"], [20, "Setting-up-the-notebook"], [33, "Setting-up-the-notebook"]], "Sigmoid": [[9, "sigmoid"]], "Simple and effective code generation engine": [[18, "simple-and-effective-code-generation-engine"]], "Slice": [[9, "slice"]], "Softmax": [[9, "softmax"]], "Specifiyng Edges": [[28, "Specifiyng-Edges"]], "Sqrt": [[9, "sqrt"]], "State machine": [[49, "state-machine"]], "Static analysis": [[19, "Static-analysis"], [48, null]], "Stimuli": [[37, "stimuli"]], "Sub": [[9, "sub"]], "Syntax to create a computational graph": [[46, "syntax-to-create-a-computational-graph"]], "Tanh": [[9, "tanh"]], "Tensor": [[4, "tensor"], [37, "tensor"]], "TensorRT export": [[27, null]], "The Quantization Pipeline": [[31, "The-Quantization-Pipeline"]], "Tiling": [[47, "tiling"]], "Training a simple Neural Network": [[30, null]], "Training loop": [[30, "Training-loop"]], "Transform graph": [[49, null]], "Transformation functions": [[49, "transformation-functions"]], "Transmitter": [[46, "transmitter"]], "Transpose": [[9, "transpose"]], "Tutorials": [[29, null]], "UTILS": [[2, "utils"]], "Understanding Aidge\u2019s scheduling": [[32, null]], "Updating ONNX import": [[20, "Updating-ONNX-import"]], "User Guide": [[41, null]], "Well-characterized, state-of-the-art PTQ and QAT methods": [[18, "well-characterized-state-of-the-art-ptq-and-qat-methods"]], "Well-defined consumer-producer model and scheduling": [[18, "well-defined-consumer-producer-model-and-scheduling"]], "Well-defined dataflow graph IR model": [[18, "well-defined-dataflow-graph-ir-model"]], "What is Aidge?": [[0, "what-is-aidge"]], "What is Network Quantization ?": [[31, "What-is-Network-Quantization-?"]], "Why Aidge?": [[18, null]], "Work is done !": [[31, "Work-is-done-!"]], "Workflow overview": [[41, "workflow-overview"]], "Working with generic operator": [[20, "Working-with-generic-operator"]], "\u2699\ufe0f Optimization tutorials": [[29, "optimization-tutorials"]], "\ud83d\ude80 Export tutorials": [[29, "export-tutorials"]], "\ud83d\udee0 Aidge functionalities": [[29, "aidge-functionalities"]]}, "docnames": ["index", "source/API/BackendCPU/index", "source/API/BackendOPENCV/index", "source/API/Core/backend", "source/API/Core/data", "source/API/Core/export", "source/API/Core/graph", "source/API/Core/graphMatching", "source/API/Core/index", "source/API/Core/operator", "source/API/Core/recipes", "source/API/Core/scheduler", "source/API/ExportTensorRT/index", "source/API/Onnx/index", "source/API/index", "source/GetStarted/index", "source/GetStarted/install", "source/GetStarted/quickStart", "source/GetStarted/whyAidge", "source/Tutorial/101_first_step", "source/Tutorial/ONNX", "source/Tutorial/backend_cuda", "source/Tutorial/database", "source/Tutorial/export_cpp", "source/Tutorial/export_cpp_add_impl", "source/Tutorial/export_cpp_quant", "source/Tutorial/export_stm32", "source/Tutorial/export_trt", "source/Tutorial/graph_matching", "source/Tutorial/index", "source/Tutorial/learning", "source/Tutorial/ptq", "source/Tutorial/scheduling", "source/Tutorial/static_analysis", "source/Tutorial/tiling", "source/UserGuide/architecture", "source/UserGuide/benchmark", "source/UserGuide/data", "source/UserGuide/ensureRobustness", "source/UserGuide/executeGraph", "source/UserGuide/export", "source/UserGuide/index", "source/UserGuide/interoperability", "source/UserGuide/learnEdge", "source/UserGuide/learnModel", "source/UserGuide/loadStoreModel", "source/UserGuide/modelGraph", "source/UserGuide/optimizeGraph", "source/UserGuide/staticAnalysis", "source/UserGuide/transformGraph"], "envversion": {"nbsphinx": 4, "sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinxcontrib.bibtex": 9}, "filenames": ["index.rst", "source/API/BackendCPU/index.rst", "source/API/BackendOPENCV/index.rst", "source/API/Core/backend.rst", "source/API/Core/data.rst", "source/API/Core/export.rst", "source/API/Core/graph.rst", "source/API/Core/graphMatching.rst", "source/API/Core/index.rst", "source/API/Core/operator.rst", "source/API/Core/recipes.rst", "source/API/Core/scheduler.rst", "source/API/ExportTensorRT/index.rst", "source/API/Onnx/index.rst", "source/API/index.rst", "source/GetStarted/index.rst", "source/GetStarted/install.rst", "source/GetStarted/quickStart.rst", "source/GetStarted/whyAidge.rst", "source/Tutorial/101_first_step.nblink", "source/Tutorial/ONNX.nblink", "source/Tutorial/backend_cuda.nblink", "source/Tutorial/database.nblink", "source/Tutorial/export_cpp.nblink", "source/Tutorial/export_cpp_add_impl.nblink", "source/Tutorial/export_cpp_quant.nblink", "source/Tutorial/export_stm32.nblink", "source/Tutorial/export_trt.nblink", "source/Tutorial/graph_matching.nblink", "source/Tutorial/index.rst", "source/Tutorial/learning.nblink", "source/Tutorial/ptq.nblink", "source/Tutorial/scheduling.nblink", "source/Tutorial/static_analysis.nblink", "source/Tutorial/tiling.nblink", "source/UserGuide/architecture.rst", "source/UserGuide/benchmark.rst", "source/UserGuide/data.rst", "source/UserGuide/ensureRobustness.rst", "source/UserGuide/executeGraph.rst", "source/UserGuide/export.rst", "source/UserGuide/index.rst", "source/UserGuide/interoperability.rst", "source/UserGuide/learnEdge.rst", "source/UserGuide/learnModel.rst", "source/UserGuide/loadStoreModel.rst", "source/UserGuide/modelGraph.rst", "source/UserGuide/optimizeGraph.rst", "source/UserGuide/staticAnalysis.rst", "source/UserGuide/transformGraph.rst"], "indexentries": {"__init__() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.__init__", false]], "__init__() (aidge_core.connector method)": [[6, "aidge_core.Connector.__init__", false]], "__init__() (aidge_core.dataprovider method)": [[4, "aidge_core.DataProvider.__init__", false]], "__init__() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.__init__", false]], "__init__() (aidge_core.export_utils.exportnode method)": [[5, "aidge_core.export_utils.ExportNode.__init__", false]], "__init__() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.__init__", false]], "__init__() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.__init__", false]], "__init__() (aidge_core.implspec method)": [[3, "aidge_core.ImplSpec.__init__", false]], "__init__() (aidge_core.iospec method)": [[3, "aidge_core.IOSpec.__init__", false]], "__init__() (aidge_core.node method)": [[6, "aidge_core.Node.__init__", false]], "__init__() (aidge_core.operator method)": [[9, "aidge_core.Operator.__init__", false]], "__init__() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.__init__", false]], "__init__() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.__init__", false]], "__init__() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.__init__", false]], "__init__() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.__init__", false]], "__init__() (aidge_core.singlepassgraphmatching method)": [[7, "aidge_core.SinglePassGraphMatching.__init__", false]], "__init__() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.__init__", false]], "abs() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.abs", false]], "adapt_to_backend() (in module aidge_core)": [[10, "aidge_core.adapt_to_backend", false]], "add() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.add", false]], "add() (in module aidge_core)": [[9, "aidge_core.Add", false]], "add_child() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.add_child", false]], "add_child() (aidge_core.node method)": [[6, "aidge_core.Node.add_child", false]], "add_kernel_to_copy() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.add_kernel_to_copy", false]], "add_node_lambda() (aidge_core.singlepassgraphmatching method)": [[7, "aidge_core.SinglePassGraphMatching.add_node_lambda", false]], "add_ordered_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.add_ordered_outputs", false]], "aidge::adapttobackend (c++ function)": [[10, "_CPPv4N5Aidge14adaptToBackendENSt10shared_ptrI9GraphViewEE", false]], "aidge::add (c++ function)": [[9, "_CPPv4N5Aidge3AddERKNSt6stringE", false]], "aidge::avgpooling (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", false]], "aidge::batchnorm (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", false]], "aidge::cast (c++ function)": [[9, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", false]], "aidge::concat (c++ function)": [[9, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", false]], "aidge::connector (c++ class)": [[6, "_CPPv4N5Aidge9ConnectorE", false]], "aidge::connector::connector (c++ function)": [[6, "_CPPv4N5Aidge9Connector9ConnectorENSt10shared_ptrI4NodeEE", false], [6, "_CPPv4N5Aidge9Connector9ConnectorEv", false]], "aidge::connector::index (c++ function)": [[6, "_CPPv4NK5Aidge9Connector5indexEv", false]], "aidge::connector::node (c++ function)": [[6, "_CPPv4NK5Aidge9Connector4nodeEv", false]], "aidge::connector::operator[] (c++ function)": [[6, "_CPPv4NK5Aidge9ConnectorixE9IOIndex_t", false]], "aidge::connector::size (c++ function)": [[6, "_CPPv4NK5Aidge9Connector4sizeEv", false]], "aidge::connector::~connector (c++ function)": [[6, "_CPPv4N5Aidge9ConnectorD0Ev", false]], "aidge::constantfolding (c++ function)": [[10, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", false]], "aidge::conv (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::convdepthwise (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::convtomatmul (c++ function)": [[10, "_CPPv4N5Aidge12convToMatMulENSt10shared_ptrI9GraphViewEE", false]], "aidge::database (c++ class)": [[4, "_CPPv4N5Aidge8DatabaseE", false]], "aidge::database::database (c++ function)": [[4, "_CPPv4N5Aidge8Database8DatabaseEv", false]], "aidge::database::getitem (c++ function)": [[4, "_CPPv4NK5Aidge8Database7getItemEKNSt6size_tE", false]], "aidge::database::getlen (c++ function)": [[4, "_CPPv4NK5Aidge8Database6getLenEv", false]], "aidge::database::getnbmodalities (c++ function)": [[4, "_CPPv4NK5Aidge8Database15getNbModalitiesEv", false]], "aidge::database::~database (c++ function)": [[4, "_CPPv4N5Aidge8DatabaseD0Ev", false]], "aidge::dataprovider (c++ class)": [[4, "_CPPv4N5Aidge12DataProviderE", false]], "aidge::dataprovider::dataprovider (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", false]], "aidge::dataprovider::done (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider4doneEv", false]], "aidge::dataprovider::getindexbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider13getIndexBatchEv", false]], "aidge::dataprovider::getnbbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider10getNbBatchEv", false]], "aidge::dataprovider::incrementindexbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider19incrementIndexBatchEv", false]], "aidge::dataprovider::iter (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider4iterEv", false]], "aidge::dataprovider::next (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider4nextEv", false]], "aidge::dataprovider::readbatch (c++ function)": [[4, "_CPPv4NK5Aidge12DataProvider9readBatchEv", false]], "aidge::dataprovider::resetindexbatch (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider15resetIndexBatchEv", false]], "aidge::dataprovider::setbatches (c++ function)": [[4, "_CPPv4N5Aidge12DataProvider10setBatchesEv", false]], "aidge::div (c++ function)": [[9, "_CPPv4N5Aidge3DivERKNSt6stringE", false]], "aidge::erf (c++ function)": [[9, "_CPPv4N5Aidge3ErfERKNSt6stringE", false]], "aidge::expandmetaops (c++ function)": [[10, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb", false]], "aidge::explicitcastmove (c++ function)": [[10, "_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE", false]], "aidge::explicittranspose (c++ function)": [[10, "_CPPv4N5Aidge17explicitTransposeENSt10shared_ptrI9GraphViewEE", false]], "aidge::fc (c++ function)": [[9, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", false]], "aidge::fusebatchnorm (c++ function)": [[10, "_CPPv4N5Aidge13fuseBatchNormENSt10shared_ptrI9GraphViewEE", false]], "aidge::fusetometaops (c++ function)": [[10, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", false]], "aidge::gather (c++ function)": [[9, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", false]], "aidge::generategraph (c++ function)": [[6, "_CPPv4N5Aidge13generateGraphERKNSt6vectorI9ConnectorEE", false]], "aidge::genericoperator (c++ function)": [[9, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", false], [9, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", false]], "aidge::getconnectedgraphview (c++ function)": [[6, "_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE", false]], "aidge::graphview (c++ class)": [[6, "_CPPv4N5Aidge9GraphViewE", false]], "aidge::graphview::add (c++ function)": [[6, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", false], [6, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", false], [6, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", false], [6, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", false]], "aidge::graphview::addchild (c++ function)": [[6, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", false], [6, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", false], [6, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", false]], "aidge::graphview::addorderedoutputs (c++ function)": [[6, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", false]], "aidge::graphview::clone (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView5cloneEv", false]], "aidge::graphview::clonecallback (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView13cloneCallbackEPF7NodePtr7NodePtrE", false]], "aidge::graphview::clonesharedoperators (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView20cloneSharedOperatorsEv", false]], "aidge::graphview::clonesharedproducers (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView20cloneSharedProducersEv", false]], "aidge::graphview::compile (c++ function)": [[6, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", false]], "aidge::graphview::datainputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10dataInputsEKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView10dataInputsEv", false]], "aidge::graphview::forwarddims (c++ function)": [[6, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", false]], "aidge::graphview::forwarddtype (c++ function)": [[6, "_CPPv4N5Aidge9GraphView12forwardDTypeE8DataType", false], [6, "_CPPv4N5Aidge9GraphView12forwardDTypeERKNSt6vectorI8DataTypeEE", false]], "aidge::graphview::getchildren (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr", false], [6, "_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView11getChildrenEv", false]], "aidge::graphview::getnbfreedatainputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView19getNbFreeDataInputsEv", false]], "aidge::graphview::getnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE", false]], "aidge::graphview::getnodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView8getNodesEv", false]], "aidge::graphview::getorderedinputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView16getOrderedInputsEv", false]], "aidge::graphview::getorderednodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView15getOrderedNodesEb", false]], "aidge::graphview::getorderedoutputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView17getOrderedOutputsEv", false]], "aidge::graphview::getorderedparents (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView17getOrderedParentsEv", false]], "aidge::graphview::getparents (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10getParentsEKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView10getParentsEv", false]], "aidge::graphview::getrankednodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView14getRankedNodesEv", false]], "aidge::graphview::getrankednodesname (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", false]], "aidge::graphview::graphview (c++ function)": [[6, "_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE", false]], "aidge::graphview::inputnodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory", false]], "aidge::graphview::inputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView6inputsEv", false]], "aidge::graphview::insertparent (c++ function)": [[6, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", false]], "aidge::graphview::inview (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr", false], [6, "_CPPv4NK5Aidge9GraphView6inViewERKNSt6stringE", false]], "aidge::graphview::isinputnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr", false]], "aidge::graphview::isoutputnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr", false]], "aidge::graphview::link (c++ function)": [[6, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", false]], "aidge::graphview::logoutputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE", false]], "aidge::graphview::name (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView4nameEv", false]], "aidge::graphview::operator() (c++ function)": [[6, "_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE", false]], "aidge::graphview::operator== (c++ function)": [[6, "_CPPv4NK5Aidge9GraphVieweqERK9GraphView", false]], "aidge::graphview::operator[] (c++ function)": [[6, "_CPPv4NK5Aidge9GraphViewixERKNSt6stringE", false]], "aidge::graphview::outputnodes (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11outputNodesEv", false]], "aidge::graphview::outputs (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView7outputsERKNSt6stringE", false], [6, "_CPPv4NK5Aidge9GraphView7outputsEv", false]], "aidge::graphview::remove (c++ function)": [[6, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", false]], "aidge::graphview::replace (c++ function)": [[6, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", false], [6, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", false]], "aidge::graphview::rootnode (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView8rootNodeEv", false]], "aidge::graphview::save (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", false]], "aidge::graphview::setbackend (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", false]], "aidge::graphview::setdataformat (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat", false]], "aidge::graphview::setdatatype (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType", false]], "aidge::graphview::setinputid (c++ function)": [[6, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", false]], "aidge::graphview::setname (c++ function)": [[6, "_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE", false]], "aidge::graphview::setnodesname (c++ function)": [[6, "_CPPv4NK5Aidge9GraphView12setNodesNameEv", false]], "aidge::graphview::setorderedinputs (c++ function)": [[6, "_CPPv4N5Aidge9GraphView16setOrderedInputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", false]], "aidge::graphview::setorderedoutputs (c++ function)": [[6, "_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", false]], "aidge::graphview::setrootnode (c++ function)": [[6, "_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr", false]], "aidge::graphview::swap (c++ function)": [[6, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", false]], "aidge::graphview::updatenodename (c++ function)": [[6, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", false]], "aidge::identity (c++ function)": [[9, "_CPPv4N5Aidge8IdentityERKNSt6stringE", false]], "aidge::implspec (c++ struct)": [[3, "_CPPv4N5Aidge8ImplSpecE", false]], "aidge::implspec::attrs (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec5attrsE", false]], "aidge::implspec::implspec (c++ function)": [[3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK17DynamicAttributes", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKN5Aidge8ImplSpecE", false], [3, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", false]], "aidge::implspec::inputs (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6inputsE", false]], "aidge::implspec::iospec (c++ struct)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpecE", false]], "aidge::implspec::iospec::dims (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec4dimsE", false]], "aidge::implspec::iospec::format (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec6formatE", false]], "aidge::implspec::iospec::iospec (c++ function)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", false]], "aidge::implspec::iospec::type (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec6IOSpec4typeE", false]], "aidge::implspec::outputs (c++ member)": [[3, "_CPPv4N5Aidge8ImplSpec7outputsE", false]], "aidge::implspec::~implspec (c++ function)": [[3, "_CPPv4N5Aidge8ImplSpecD0Ev", false]], "aidge::leakyrelu (c++ function)": [[9, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", false]], "aidge::lstm (c++ function)": [[9, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", false]], "aidge::matmul (c++ function)": [[9, "_CPPv4N5Aidge6MatMulERKNSt6stringE", false]], "aidge::matmultiling (c++ function)": [[10, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", false]], "aidge::matmultofc (c++ function)": [[10, "_CPPv4N5Aidge10matMulToFCENSt10shared_ptrI9GraphViewEE", false]], "aidge::memorize (c++ function)": [[9, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", false]], "aidge::metaoperator (c++ function)": [[9, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", false]], "aidge::mnist (c++ class)": [[2, "_CPPv4N5Aidge5MNISTE", false]], "aidge::mnist::datatype (c++ enum)": [[2, "_CPPv4N5Aidge5MNIST8DataTypeE", false]], "aidge::mnist::datatype::double (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType6DoubleE", false]], "aidge::mnist::datatype::float (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType5FloatE", false]], "aidge::mnist::datatype::int (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType3IntE", false]], "aidge::mnist::datatype::short (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType5ShortE", false]], "aidge::mnist::datatype::signed (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType6SignedE", false]], "aidge::mnist::datatype::unsigned (c++ enumerator)": [[2, "_CPPv4N5Aidge5MNIST8DataType8UnsignedE", false]], "aidge::mnist::getitem (c++ function)": [[2, "_CPPv4NK5Aidge5MNIST7getItemEKNSt6size_tE", false]], "aidge::mnist::getlen (c++ function)": [[2, "_CPPv4NK5Aidge5MNIST6getLenEv", false]], "aidge::mnist::getnbmodalities (c++ function)": [[2, "_CPPv4NK5Aidge5MNIST15getNbModalitiesEv", false]], "aidge::mnist::magicnumber (c++ union)": [[2, "_CPPv4N5Aidge5MNIST11MagicNumberE", false]], "aidge::mnist::magicnumber::byte (c++ member)": [[2, "_CPPv4N5Aidge5MNIST11MagicNumber4byteE", false]], "aidge::mnist::magicnumber::value (c++ member)": [[2, "_CPPv4N5Aidge5MNIST11MagicNumber5valueE", false]], "aidge::mnist::mnist (c++ function)": [[2, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", false]], "aidge::mnist::~mnist (c++ function)": [[2, "_CPPv4N5Aidge5MNISTD0Ev", false]], "aidge::move (c++ function)": [[9, "_CPPv4N5Aidge4MoveERKNSt6stringE", false]], "aidge::mul (c++ function)": [[9, "_CPPv4N5Aidge3MulERKNSt6stringE", false]], "aidge::node (c++ class)": [[6, "_CPPv4N5Aidge4NodeE", false]], "aidge::node::addafterbackward (c++ function)": [[6, "_CPPv4N5Aidge4Node16addAfterBackwardENSt8functionIFbvEEE", false]], "aidge::node::addafterforward (c++ function)": [[6, "_CPPv4N5Aidge4Node15addAfterForwardENSt8functionIFbvEEE", false]], "aidge::node::addbeforebackward (c++ function)": [[6, "_CPPv4N5Aidge4Node17addBeforeBackwardENSt8functionIFbvEEE", false]], "aidge::node::addbeforeforward (c++ function)": [[6, "_CPPv4N5Aidge4Node16addBeforeForwardENSt8functionIFbvEEE", false]], "aidge::node::addchild (c++ function)": [[6, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", false], [6, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", false]], "aidge::node::addview (c++ function)": [[6, "_CPPv4N5Aidge4Node7addViewERKNSt10shared_ptrI9GraphViewEE", false]], "aidge::node::attributes (c++ function)": [[6, "_CPPv4NK5Aidge4Node10attributesEv", false]], "aidge::node::backward (c++ function)": [[6, "_CPPv4N5Aidge4Node8backwardEv", false]], "aidge::node::clone (c++ function)": [[6, "_CPPv4N5Aidge4Node5cloneE7NodePtr", false], [6, "_CPPv4NK5Aidge4Node5cloneEv", false]], "aidge::node::clonesharedoperators (c++ function)": [[6, "_CPPv4N5Aidge4Node20cloneSharedOperatorsE7NodePtr", false], [6, "_CPPv4NK5Aidge4Node20cloneSharedOperatorsEv", false]], "aidge::node::clonesharedproducers (c++ function)": [[6, "_CPPv4N5Aidge4Node20cloneSharedProducersE7NodePtr", false], [6, "_CPPv4NK5Aidge4Node20cloneSharedProducersEv", false]], "aidge::node::createuniquename (c++ function)": [[6, "_CPPv4N5Aidge4Node16createUniqueNameENSt6stringE", false]], "aidge::node::datainputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node10dataInputsEv", false]], "aidge::node::forward (c++ function)": [[6, "_CPPv4N5Aidge4Node7forwardEv", false]], "aidge::node::getchildren (c++ function)": [[6, "_CPPv4NK5Aidge4Node11getChildrenEK9IOIndex_t", false], [6, "_CPPv4NK5Aidge4Node11getChildrenEv", false]], "aidge::node::getfirstfreedatainput (c++ function)": [[6, "_CPPv4NK5Aidge4Node21getFirstFreeDataInputEv", false]], "aidge::node::getnbfreedatainputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node19getNbFreeDataInputsEv", false]], "aidge::node::getoperator (c++ function)": [[6, "_CPPv4NK5Aidge4Node11getOperatorEv", false]], "aidge::node::getorderedchildren (c++ function)": [[6, "_CPPv4NK5Aidge4Node18getOrderedChildrenEv", false]], "aidge::node::getparent (c++ function)": [[6, "_CPPv4N5Aidge4Node9getParentEK9IOIndex_t", false]], "aidge::node::getparents (c++ function)": [[6, "_CPPv4NK5Aidge4Node10getParentsEv", false]], "aidge::node::input (c++ function)": [[6, "_CPPv4NK5Aidge4Node5inputEK9IOIndex_t", false]], "aidge::node::inputcategory (c++ function)": [[6, "_CPPv4NK5Aidge4Node13inputCategoryE9IOIndex_t", false]], "aidge::node::inputname (c++ function)": [[6, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", false], [6, "_CPPv4NK5Aidge4Node9inputNameEK9IOIndex_t", false]], "aidge::node::inputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node6inputsEv", false]], "aidge::node::inputsnames (c++ function)": [[6, "_CPPv4NK5Aidge4Node11inputsNamesEv", false]], "aidge::node::name (c++ function)": [[6, "_CPPv4NK5Aidge4Node4nameEv", false]], "aidge::node::nbinputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node8nbInputsEv", false]], "aidge::node::nboutputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node9nbOutputsEv", false]], "aidge::node::nbvalidinputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node13nbValidInputsEv", false]], "aidge::node::nbvalidoutputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node14nbValidOutputsEv", false]], "aidge::node::node (c++ function)": [[6, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", false], [6, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", false], [6, "_CPPv4N5Aidge4Node4NodeEv", false]], "aidge::node::operator() (c++ function)": [[6, "_CPPv4N5Aidge4NodeclERKNSt6vectorI9ConnectorEE", false]], "aidge::node::operator== (c++ function)": [[6, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", false]], "aidge::node::output (c++ function)": [[6, "_CPPv4NK5Aidge4Node6outputE9IOIndex_t", false]], "aidge::node::outputname (c++ function)": [[6, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", false], [6, "_CPPv4NK5Aidge4Node10outputNameE9IOIndex_t", false]], "aidge::node::outputs (c++ function)": [[6, "_CPPv4NK5Aidge4Node7outputsEv", false]], "aidge::node::outputsnames (c++ function)": [[6, "_CPPv4NK5Aidge4Node12outputsNamesEv", false]], "aidge::node::parentisbackedge (c++ function)": [[6, "_CPPv4NK5Aidge4Node16parentIsBackEdgeE9IOIndex_t", false]], "aidge::node::removechild (c++ function)": [[6, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", false]], "aidge::node::removeview (c++ function)": [[6, "_CPPv4N5Aidge4Node10removeViewERKNSt10shared_ptrI9GraphViewEE", false]], "aidge::node::resetconnections (c++ function)": [[6, "_CPPv4N5Aidge4Node16resetConnectionsEb", false]], "aidge::node::setname (c++ function)": [[6, "_CPPv4N5Aidge4Node7setNameERKNSt6stringE", false]], "aidge::node::type (c++ function)": [[6, "_CPPv4NK5Aidge4Node4typeEv", false]], "aidge::node::valid (c++ function)": [[6, "_CPPv4NK5Aidge4Node5validEv", false]], "aidge::node::views (c++ function)": [[6, "_CPPv4NK5Aidge4Node5viewsEv", false]], "aidge::node::~node (c++ function)": [[6, "_CPPv4N5Aidge4NodeD0Ev", false]], "aidge::operator (c++ class)": [[9, "_CPPv4N5Aidge8OperatorE", false]], "aidge::operator::associateinput (c++ function)": [[9, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operator::attributes (c++ function)": [[9, "_CPPv4NK5Aidge8Operator10attributesEv", false]], "aidge::operator::backend (c++ function)": [[9, "_CPPv4NK5Aidge8Operator7backendEv", false]], "aidge::operator::backward (c++ function)": [[9, "_CPPv4N5Aidge8Operator8backwardEv", false]], "aidge::operator::clone (c++ function)": [[9, "_CPPv4NK5Aidge8Operator5cloneEv", false]], "aidge::operator::forward (c++ function)": [[9, "_CPPv4N5Aidge8Operator7forwardEv", false]], "aidge::operator::getavailablebackends (c++ function)": [[9, "_CPPv4NK5Aidge8Operator20getAvailableBackendsEv", false]], "aidge::operator::getimpl (c++ function)": [[9, "_CPPv4NK5Aidge8Operator7getImplEv", false]], "aidge::operator::getnbconsumeddata (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t", false]], "aidge::operator::getnbproduceddata (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getNbProducedDataEK9IOIndex_t", false]], "aidge::operator::getnbrequireddata (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t", false]], "aidge::operator::getnbrequiredprotected (c++ function)": [[9, "_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t", false]], "aidge::operator::getrawinput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t", false]], "aidge::operator::getrawoutput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator12getRawOutputEK9IOIndex_t", false]], "aidge::operator::getrequiredmemory (c++ function)": [[9, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", false]], "aidge::operator::inheritedattributes (c++ function)": [[9, "_CPPv4NK5Aidge8Operator19inheritedAttributesEv", false]], "aidge::operator::inputcategory (c++ function)": [[9, "_CPPv4NK5Aidge8Operator13inputCategoryE9IOIndex_t", false], [9, "_CPPv4NK5Aidge8Operator13inputCategoryEv", false]], "aidge::operator::isatomic (c++ function)": [[9, "_CPPv4NK5Aidge8Operator8isAtomicEv", false]], "aidge::operator::isbackedge (c++ function)": [[9, "_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t", false]], "aidge::operator::isoptionalinput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator15isOptionalInputENSt6size_tE", false]], "aidge::operator::nbinputs (c++ function)": [[9, "_CPPv4NK5Aidge8Operator8nbInputsEv", false]], "aidge::operator::nboutputs (c++ function)": [[9, "_CPPv4NK5Aidge8Operator9nbOutputsEv", false]], "aidge::operator::operator (c++ function)": [[9, "_CPPv4N5Aidge8Operator8OperatorERK8Operator", false], [9, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", false], [9, "_CPPv4N5Aidge8Operator8OperatorEv", false]], "aidge::operator::operatortype (c++ function)": [[9, "_CPPv4NK5Aidge8Operator12operatorTypeEv", false]], "aidge::operator::resetconsummerproducer (c++ function)": [[9, "_CPPv4N5Aidge8Operator22resetConsummerProducerEv", false]], "aidge::operator::resetinput (c++ function)": [[9, "_CPPv4N5Aidge8Operator10resetInputEK9IOIndex_t", false]], "aidge::operator::setbackedges (c++ function)": [[9, "_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE", false]], "aidge::operator::setbackend (c++ function)": [[9, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", false], [9, "_CPPv4N5Aidge8Operator10setBackendERKNSt6vectorINSt4pairINSt6stringE11DeviceIdx_tEEEE", false]], "aidge::operator::setdataformat (c++ function)": [[9, "_CPPv4NK5Aidge8Operator13setDataFormatERK10DataFormat", false]], "aidge::operator::setdatatype (c++ function)": [[9, "_CPPv4NK5Aidge8Operator11setDataTypeERK8DataType", false]], "aidge::operator::setimpl (c++ function)": [[9, "_CPPv4N5Aidge8Operator7setImplENSt10shared_ptrI12OperatorImplEE", false]], "aidge::operator::setinheritedattrs (c++ function)": [[9, "_CPPv4N5Aidge8Operator17setInheritedAttrsERNSt10shared_ptrI17DynamicAttributesEE", false]], "aidge::operator::setinput (c++ function)": [[9, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operator::setoutput (c++ function)": [[9, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operator::type (c++ function)": [[9, "_CPPv4NK5Aidge8Operator4typeEv", false]], "aidge::operator::updateconsummerproducer (c++ function)": [[9, "_CPPv4N5Aidge8Operator23updateConsummerProducerEv", false]], "aidge::operator::~operator (c++ function)": [[9, "_CPPv4N5Aidge8OperatorD0Ev", false]], "aidge::operatortensor (c++ class)": [[9, "_CPPv4N5Aidge14OperatorTensorE", false]], "aidge::operatortensor::associateinput (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operatortensor::computereceptivefield (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", false]], "aidge::operatortensor::dimsforwarded (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor13dimsForwardedEv", false]], "aidge::operatortensor::forward (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor7forwardEv", false]], "aidge::operatortensor::forwarddims (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor11forwardDimsEb", false]], "aidge::operatortensor::forwarddtype (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor12forwardDTypeEv", false]], "aidge::operatortensor::getinput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor8getInputEK9IOIndex_t", false]], "aidge::operatortensor::getinputs (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor9getInputsEv", false]], "aidge::operatortensor::getoutput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor9getOutputEK9IOIndex_t", false]], "aidge::operatortensor::getoutputs (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor10getOutputsEv", false]], "aidge::operatortensor::getrawinput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor11getRawInputEK9IOIndex_t", false]], "aidge::operatortensor::getrawoutput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor12getRawOutputEKN5Aidge9IOIndex_tE", false]], "aidge::operatortensor::operatortensor (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERK14OperatorTensor", false], [9, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", false], [9, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorEv", false]], "aidge::operatortensor::resetinput (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor10resetInputEK9IOIndex_t", false]], "aidge::operatortensor::setdataformat (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor13setDataFormatERK10DataFormat", false]], "aidge::operatortensor::setdatatype (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor11setDataTypeERK8DataType", false]], "aidge::operatortensor::setinput (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operatortensor::setoutput (c++ function)": [[9, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", false]], "aidge::operatortensor::~operatortensor (c++ function)": [[9, "_CPPv4N5Aidge14OperatorTensorD0Ev", false]], "aidge::pad (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", false]], "aidge::paddedavgpooling (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", false]], "aidge::paddedconv (c++ function)": [[9, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::paddedconvdepthwise (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", false]], "aidge::paddedmaxpooling (c++ function)": [[9, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", false]], "aidge::parallel (c++ function)": [[6, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", false]], "aidge::parallelscheduler (c++ class)": [[11, "_CPPv4N5Aidge17ParallelSchedulerE", false]], "aidge::parallelscheduler::forward (c++ function)": [[11, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", false]], "aidge::parallelscheduler::parallelscheduler (c++ function)": [[11, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", false]], "aidge::parallelscheduler::~parallelscheduler (c++ function)": [[11, "_CPPv4N5Aidge17ParallelSchedulerD0Ev", false]], "aidge::pop (c++ function)": [[9, "_CPPv4N5Aidge3PopERKNSt6stringE", false]], "aidge::pow (c++ function)": [[9, "_CPPv4N5Aidge3PowERKNSt6stringE", false]], "aidge::producer (c++ function)": [[9, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", false], [9, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", false]], "aidge::reducemean (c++ function)": [[9, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", false]], "aidge::relu (c++ function)": [[9, "_CPPv4N5Aidge4ReLUERKNSt6stringE", false]], "aidge::removedropout (c++ function)": [[10, "_CPPv4N5Aidge13removeDropoutENSt10shared_ptrI9GraphViewEE", false]], "aidge::removeflatten (c++ function)": [[10, "_CPPv4N5Aidge13removeFlattenENSt10shared_ptrI9GraphViewEE", false]], "aidge::reshape (c++ function)": [[9, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", false]], "aidge::residual (c++ function)": [[6, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", false]], "aidge::scheduler (c++ class)": [[11, "_CPPv4N5Aidge9SchedulerE", false]], "aidge::scheduler::availabledatastatus (c++ enum)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatusE", false]], "aidge::scheduler::availabledatastatus::connected (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus9ConnectedE", false]], "aidge::scheduler::availabledatastatus::notconnected (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus12NotConnectedE", false]], "aidge::scheduler::availabledatastatus::uppernodeinputconnected (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus23UpperNodeInputConnectedE", false]], "aidge::scheduler::availabledatastatus::uppernodeinputfound (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus19UpperNodeInputFoundE", false]], "aidge::scheduler::availabledatastatus::validtensor (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus11ValidTensorE", false]], "aidge::scheduler::clearscheduling (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler15clearSchedulingEv", false]], "aidge::scheduler::connectinputs (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler13connectInputsERKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", false]], "aidge::scheduler::exectime (c++ class)": [[11, "_CPPv4N5Aidge9Scheduler8ExecTimeE", false]], "aidge::scheduler::exectime::get (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler8ExecTime3getEv", false]], "aidge::scheduler::exectime::update (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler8ExecTime6updateERKNSt6vectorI17SchedulingElementEE", false]], "aidge::scheduler::generatescheduling (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler18generateSchedulingEv", false]], "aidge::scheduler::getbackwardscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler21getBackwardSchedulingEv", false]], "aidge::scheduler::getforwardscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler20getForwardSchedulingEv", false]], "aidge::scheduler::getsequentialstaticscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", false]], "aidge::scheduler::getstaticscheduling (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler19getStaticSchedulingENSt6size_tE", false]], "aidge::scheduler::graphview (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler9graphViewEv", false]], "aidge::scheduler::nodeexectime (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTimeE", false]], "aidge::scheduler::nodeexectime::mcount (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime6mCountE", false]], "aidge::scheduler::nodeexectime::mean (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler12NodeExecTime4meanEv", false]], "aidge::scheduler::nodeexectime::mm2 (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime3mM2E", false]], "aidge::scheduler::nodeexectime::mmean (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime5mMeanE", false]], "aidge::scheduler::nodeexectime::nodeexectime (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime12NodeExecTimeEv", false]], "aidge::scheduler::nodeexectime::stddev (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler12NodeExecTime6stdDevEv", false]], "aidge::scheduler::nodeexectime::update (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", false]], "aidge::scheduler::priorproducersconsumers (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersE", false]], "aidge::scheduler::priorproducersconsumers::isprior (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers7isPriorE", false]], "aidge::scheduler::priorproducersconsumers::priorconsumers (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers14priorConsumersE", false]], "aidge::scheduler::priorproducersconsumers::priorproducersconsumers (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersERK23PriorProducersConsumers", false], [11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersEv", false]], "aidge::scheduler::priorproducersconsumers::requiredproducers (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers17requiredProducersE", false]], "aidge::scheduler::priorproducersconsumers::~priorproducersconsumers (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersD0Ev", false]], "aidge::scheduler::resetscheduling (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler15resetSchedulingEv", false]], "aidge::scheduler::savefactorizedstaticschedulingdiagram (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", false]], "aidge::scheduler::saveschedulingdiagram (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", false]], "aidge::scheduler::savestaticschedulingdiagram (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", false]], "aidge::scheduler::scheduler (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", false], [11, "_CPPv4N5Aidge9Scheduler9SchedulerEv", false]], "aidge::scheduler::schedulingelement (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElementE", false]], "aidge::scheduler::schedulingelement::end (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement3endE", false]], "aidge::scheduler::schedulingelement::node (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement4nodeE", false]], "aidge::scheduler::schedulingelement::schedulingelement (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", false]], "aidge::scheduler::schedulingelement::start (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElement5startE", false]], "aidge::scheduler::schedulingelement::~schedulingelement (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler17SchedulingElementD0Ev", false]], "aidge::scheduler::schedulingpolicy (c++ enum)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicyE", false]], "aidge::scheduler::schedulingpolicy::aslateaspossible (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsLateAsPossibleE", false]], "aidge::scheduler::schedulingpolicy::assoonaspossible (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsSoonAsPossibleE", false]], "aidge::scheduler::schedulingpolicy::default (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy7DefaultE", false]], "aidge::scheduler::schedulingpolicy::longuestbranchfirst (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19LonguestBranchFirstE", false]], "aidge::scheduler::schedulingpolicy::shortestbranchfirst (c++ enumerator)": [[11, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19ShortestBranchFirstE", false]], "aidge::scheduler::staticschedulingelement (c++ struct)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElementE", false]], "aidge::scheduler::staticschedulingelement::earlierthan (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement11earlierThanE", false]], "aidge::scheduler::staticschedulingelement::early (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement5earlyE", false]], "aidge::scheduler::staticschedulingelement::late (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4lateE", false]], "aidge::scheduler::staticschedulingelement::laterthan (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement9laterThanE", false]], "aidge::scheduler::staticschedulingelement::node (c++ member)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4nodeE", false]], "aidge::scheduler::staticschedulingelement::staticschedulingelement (c++ function)": [[11, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", false]], "aidge::scheduler::tagconditionalnodes (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler19tagConditionalNodesEv", false]], "aidge::scheduler::tagforkbranches (c++ function)": [[11, "_CPPv4NK5Aidge9Scheduler15tagForkBranchesEv", false]], "aidge::scheduler::~scheduler (c++ function)": [[11, "_CPPv4N5Aidge9SchedulerD0Ev", false]], "aidge::sequential (c++ function)": [[6, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", false]], "aidge::sequentialscheduler (c++ class)": [[11, "_CPPv4N5Aidge19SequentialSchedulerE", false]], "aidge::sequentialscheduler::backward (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler8backwardEv", false]], "aidge::sequentialscheduler::forward (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", false]], "aidge::sequentialscheduler::generatememory (c++ function)": [[11, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", false]], "aidge::sequentialscheduler::generatememoryautoconcat (c++ function)": [[11, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", false]], "aidge::sequentialscheduler::getsequentialstaticscheduling (c++ function)": [[11, "_CPPv4NK5Aidge19SequentialScheduler29getSequentialStaticSchedulingENSt6size_tE", false]], "aidge::sequentialscheduler::sequentialscheduler (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", false]], "aidge::sequentialscheduler::setschedulingpolicy (c++ function)": [[11, "_CPPv4N5Aidge19SequentialScheduler19setSchedulingPolicyE16SchedulingPolicy", false]], "aidge::sequentialscheduler::~sequentialscheduler (c++ function)": [[11, "_CPPv4N5Aidge19SequentialSchedulerD0Ev", false]], "aidge::sigmoid (c++ function)": [[9, "_CPPv4N5Aidge7SigmoidERKNSt6stringE", false]], "aidge::singlepassgraphmatching (c++ class)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatchingE", false]], "aidge::singlepassgraphmatching::addnodelambda (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", false]], "aidge::singlepassgraphmatching::context (c++ struct)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextE", false]], "aidge::singlepassgraphmatching::context::anchors (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7anchorsE", false]], "aidge::singlepassgraphmatching::context::context (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextERK7Context", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextEv", false]], "aidge::singlepassgraphmatching::context::depth (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5depthE", false]], "aidge::singlepassgraphmatching::context::edgeleftidx (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context11edgeLeftIdxE", false]], "aidge::singlepassgraphmatching::context::edgerightidx (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12edgeRightIdxE", false]], "aidge::singlepassgraphmatching::context::firstnode (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9firstNodeE", false]], "aidge::singlepassgraphmatching::context::firstsequence (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context13firstSequenceE", false]], "aidge::singlepassgraphmatching::context::insequence (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context10inSequenceE", false]], "aidge::singlepassgraphmatching::context::lookforchild (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12lookForChildE", false]], "aidge::singlepassgraphmatching::context::operator= (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextaSERK7Context", false]], "aidge::singlepassgraphmatching::context::query (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5queryE", false]], "aidge::singlepassgraphmatching::context::singleoutput (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12singleOutputE", false]], "aidge::singlepassgraphmatching::context::startnode (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9startNodeE", false]], "aidge::singlepassgraphmatching::context::~context (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextD0Ev", false]], "aidge::singlepassgraphmatching::filterlonguestdisjoint (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching22filterLonguestDisjointERKNSt3setI14MatchingResultEE", false]], "aidge::singlepassgraphmatching::match (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", false]], "aidge::singlepassgraphmatching::matchfrom (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", false]], "aidge::singlepassgraphmatching::matchingresult (c++ struct)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultE", false]], "aidge::singlepassgraphmatching::matchingresult::anchors (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult7anchorsE", false]], "aidge::singlepassgraphmatching::matchingresult::graph (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult5graphE", false]], "aidge::singlepassgraphmatching::matchingresult::matchingresult (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultERK14MatchingResult", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultEv", false]], "aidge::singlepassgraphmatching::matchingresult::operator= (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultaSERK14MatchingResult", false]], "aidge::singlepassgraphmatching::matchingresult::startnode (c++ member)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult9startNodeE", false]], "aidge::singlepassgraphmatching::matchingresult::~matchingresult (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultD0Ev", false]], "aidge::singlepassgraphmatching::operator= (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatchingaSERK23SinglePassGraphMatching", false]], "aidge::singlepassgraphmatching::singlepassgraphmatching (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingENSt10shared_ptrI9GraphViewEE", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingERK23SinglePassGraphMatching", false], [7, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingEv", false]], "aidge::singlepassgraphmatching::~singlepassgraphmatching (c++ function)": [[7, "_CPPv4N5Aidge23SinglePassGraphMatchingD0Ev", false]], "aidge::slice (c++ function)": [[9, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", false]], "aidge::softmax (c++ function)": [[9, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", false]], "aidge::sqrt (c++ function)": [[9, "_CPPv4N5Aidge4SqrtERKNSt6stringE", false]], "aidge::sub (c++ function)": [[9, "_CPPv4N5Aidge3SubERKNSt6stringE", false]], "aidge::tanh (c++ function)": [[9, "_CPPv4N5Aidge4TanhERKNSt6stringE", false]], "aidge::tensor (c++ class)": [[4, "_CPPv4N5Aidge6TensorE", false]], "aidge::tensor::abs (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor3absEv", false]], "aidge::tensor::backend (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7backendEv", false]], "aidge::tensor::capacity (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8capacityEv", false]], "aidge::tensor::clip (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4clipEff", false]], "aidge::tensor::clone (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5cloneEv", false]], "aidge::tensor::copycast (c++ function)": [[4, "_CPPv4N5Aidge6Tensor8copyCastERK6Tensor", false]], "aidge::tensor::copycastfrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor12copyCastFromERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", false]], "aidge::tensor::copyfrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor8copyFromERK6Tensor", false]], "aidge::tensor::copytranspose (c++ function)": [[4, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", false], [4, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", false]], "aidge::tensor::dataformat (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor10dataFormatEv", false]], "aidge::tensor::datatype (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8dataTypeEv", false]], "aidge::tensor::device (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6deviceEv", false]], "aidge::tensor::dim (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor3dimE8DimIdx_t", false]], "aidge::tensor::dims (c++ function)": [[4, "_CPPv4I_8DimIdx_tENK5Aidge6Tensor4dimsENSt5arrayI9DimSize_t3DIMEEv", false], [4, "_CPPv4NK5Aidge6Tensor4dimsEv", false]], "aidge::tensor::empty (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5emptyEv", false]], "aidge::tensor::extract (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEE", false], [4, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::get (c++ function)": [[4, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", false], [4, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::getavailablebackends (c++ function)": [[4, "_CPPv4N5Aidge6Tensor20getAvailableBackendsEv", false]], "aidge::tensor::getcoord (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8getCoordENSt6size_tE", false]], "aidge::tensor::getidx (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6getIdxERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::getimpl (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7getImplEv", false]], "aidge::tensor::getimploffset (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor13getImplOffsetEv", false]], "aidge::tensor::getstorageidx (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor13getStorageIdxERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::grad (c++ function)": [[4, "_CPPv4N5Aidge6Tensor4gradEv", false]], "aidge::tensor::hasimpl (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7hasImplEv", false]], "aidge::tensor::iscontiguous (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor12isContiguousEv", false]], "aidge::tensor::isinbounds (c++ function)": [[4, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", false], [4, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", false]], "aidge::tensor::makecontiguous (c++ function)": [[4, "_CPPv4N5Aidge6Tensor14makeContiguousEv", false]], "aidge::tensor::mean (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4meanEv", false]], "aidge::tensor::nbdims (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6nbDimsEv", false]], "aidge::tensor::operator* (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", false], [4, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensormlERK6Tensor", false]], "aidge::tensor::operator*= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensormLERK6Tensor", false]], "aidge::tensor::operator+ (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", false], [4, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensorplERK6Tensor", false]], "aidge::tensor::operator+= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensorpLERK6Tensor", false]], "aidge::tensor::operator- (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", false], [4, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensormiERK6Tensor", false]], "aidge::tensor::operator-= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensormIERK6Tensor", false]], "aidge::tensor::operator/ (c++ function)": [[4, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", false], [4, "_CPPv4NK5Aidge6TensordvERK6Tensor", false]], "aidge::tensor::operator/= (c++ function)": [[4, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", false], [4, "_CPPv4N5Aidge6TensordVERK6Tensor", false]], "aidge::tensor::operator= (c++ function)": [[4, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", false], [4, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", false], [4, "_CPPv4N5Aidge6TensoraSERK6Tensor", false], [4, "_CPPv4N5Aidge6TensoraSERR6Tensor", false]], "aidge::tensor::operator== (c++ function)": [[4, "_CPPv4NK5Aidge6TensoreqERK6Tensor", false]], "aidge::tensor::print (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5printEv", false]], "aidge::tensor::ref (c++ function)": [[4, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false], [4, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false]], "aidge::tensor::refcast (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", false], [4, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", false]], "aidge::tensor::refcastfrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false], [4, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", false], [4, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", false]], "aidge::tensor::refcontiguous (c++ function)": [[4, "_CPPv4N5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", false], [4, "_CPPv4NK5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", false]], "aidge::tensor::reffrom (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", false], [4, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", false]], "aidge::tensor::repeat (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6repeatEi", false]], "aidge::tensor::resize (c++ function)": [[4, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", false], [4, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", false]], "aidge::tensor::set (c++ function)": [[4, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", false], [4, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", false]], "aidge::tensor::setbackend (c++ function)": [[4, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", false]], "aidge::tensor::setdataformat (c++ function)": [[4, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", false]], "aidge::tensor::setdatatype (c++ function)": [[4, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", false]], "aidge::tensor::setgrad (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7setGradENSt10shared_ptrI6TensorEE", false]], "aidge::tensor::setimpl (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", false]], "aidge::tensor::size (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4sizeEv", false]], "aidge::tensor::sqrt (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor4sqrtEv", false]], "aidge::tensor::stride (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor6strideE8DimIdx_t", false]], "aidge::tensor::strides (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor7stridesEv", false]], "aidge::tensor::tensor (c++ function)": [[4, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", false], [4, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", false], [4, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", false], [4, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", false], [4, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", false], [4, "_CPPv4N5Aidge6Tensor6TensorERK6Tensor", false], [4, "_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE", false], [4, "_CPPv4N5Aidge6Tensor6TensorERR6Tensor", false]], "aidge::tensor::tocoord (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", false]], "aidge::tensor::toindex (c++ function)": [[4, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", false]], "aidge::tensor::tostring (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", false]], "aidge::tensor::type (c++ member)": [[4, "_CPPv4N5Aidge6Tensor4TypeE", false]], "aidge::tensor::undefined (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor9undefinedEv", false]], "aidge::tensor::zeros (c++ function)": [[4, "_CPPv4NK5Aidge6Tensor5zerosEv", false]], "aidge::tensor::~tensor (c++ function)": [[4, "_CPPv4N5Aidge6TensorD0Ev", false]], "aidge::tensoropencv (c++ function)": [[2, "_CPPv4N5Aidge12tensorOpencvEN2cv3MatE", false]], "aidge::transpose (c++ function)": [[9, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", false]], "aidge_onnx.node_import.onnx_node_converter_ (built-in variable)": [[13, "aidge_onnx.node_import.ONNX_NODE_CONVERTER_", false]], "associate_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.associate_input", false]], "associate_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.associate_input", false]], "attributes() (aidge_core.node method)": [[6, "aidge_core.Node.attributes", false]], "auto_register_export() (in module aidge_onnx.node_export)": [[13, "aidge_onnx.node_export.auto_register_export", false]], "auto_register_import() (in module aidge_onnx.node_import)": [[13, "aidge_onnx.node_import.auto_register_import", false]], "avgpooling1d() (in module aidge_core)": [[9, "aidge_core.AvgPooling1D", false]], "avgpooling2d() (in module aidge_core)": [[9, "aidge_core.AvgPooling2D", false]], "avgpooling3d() (in module aidge_core)": [[9, "aidge_core.AvgPooling3D", false]], "backend() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.backend", false]], "backend() (aidge_core.operator method)": [[9, "aidge_core.Operator.backend", false]], "backend() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.backend", false]], "backend() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.backend", false]], "backward() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.backward", false]], "backward() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.backward", false]], "batchnorm2d() (in module aidge_core)": [[9, "aidge_core.BatchNorm2D", false]], "calibrate (c++ function)": [[12, "_CPPv49calibrate23calibration_folder_path15cache_file_path10batch_size", false]], "capacity() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.capacity", false]], "clear_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.clear_scheduling", false]], "clear_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.clear_scheduling", false]], "clear_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.clear_scheduling", false]], "clone() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.clone", false]], "clone() (aidge_core.node method)": [[6, "aidge_core.Node.clone", false]], "clone() (aidge_core.operator method)": [[9, "aidge_core.Operator.clone", false]], "clone() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.clone", false]], "clone() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.clone", false]], "compile() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.compile", false]], "concat() (in module aidge_core)": [[9, "aidge_core.Concat", false]], "connector (class in aidge_core)": [[6, "aidge_core.Connector", false]], "conv1d() (in module aidge_core)": [[9, "aidge_core.Conv1D", false]], "conv2d() (in module aidge_core)": [[9, "aidge_core.Conv2D", false]], "convdepthwise1d() (in module aidge_core)": [[9, "aidge_core.ConvDepthWise1D", false]], "convdepthwise2d() (in module aidge_core)": [[9, "aidge_core.ConvDepthWise2D", false]], "cpy_transpose() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.cpy_transpose", false]], "create_unique_name() (aidge_core.node method)": [[6, "aidge_core.Node.create_unique_name", false]], "dataprovider (class in aidge_core)": [[4, "aidge_core.DataProvider", false]], "device (c++ function)": [[12, "_CPPv46device2id", false]], "dformat() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.dformat", false]], "dims() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.dims", false]], "dims_forwarded() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.dims_forwarded", false]], "div() (in module aidge_core)": [[9, "aidge_core.Div", false]], "dtype() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.dtype", false]], "erf() (in module aidge_core)": [[9, "aidge_core.Erf", false]], "expand_metaops() (in module aidge_core)": [[10, "aidge_core.expand_metaops", false]], "export() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.export", false]], "export() (in module aidge_export_tensorrt)": [[12, "aidge_export_tensorrt.export", false]], "export_onnx() (in module aidge_onnx)": [[13, "aidge_onnx.export_onnx", false]], "exportlib (class in aidge_core.export_utils)": [[5, "aidge_core.export_utils.ExportLib", false]], "exportnode (class in aidge_core.export_utils)": [[5, "aidge_core.export_utils.ExportNode", false]], "exportnodecpp (class in aidge_core.export_utils)": [[5, "aidge_core.export_utils.ExportNodeCpp", false]], "fc() (in module aidge_core)": [[9, "aidge_core.FC", false]], "forward() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.forward", false]], "forward() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.forward", false]], "forward() (aidge_core.operator method)": [[9, "aidge_core.Operator.forward", false]], "forward() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.forward", false]], "forward() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.forward", false]], "forward() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.forward", false]], "forward_dims() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.forward_dims", false]], "forward_dims() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.forward_dims", false]], "forward_dtype() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.forward_dtype", false]], "forward_dtype() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.forward_dtype", false]], "fuse_batchnorm() (in module aidge_core)": [[10, "aidge_core.fuse_batchnorm", false]], "fuse_to_metaops() (in module aidge_core)": [[10, "aidge_core.fuse_to_metaops", false]], "gather() (in module aidge_core)": [[9, "aidge_core.Gather", false]], "generate_graph() (in module aidge_core)": [[6, "aidge_core.generate_graph", false]], "generate_memory() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.generate_memory", false]], "generate_memory_auto_concat() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.generate_memory_auto_concat", false]], "generate_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.generate_scheduling", false]], "generate_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.generate_scheduling", false]], "generate_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.generate_scheduling", false]], "generic_export() (in module aidge_onnx.node_export.generic_export)": [[13, "aidge_onnx.node_export.generic_export.generic_export", false]], "genericoperator() (in module aidge_core)": [[9, "aidge_core.GenericOperator", false]], "get_adaptation() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_adaptation", false]], "get_available_backends() (aidge_core.tensor static method)": [[4, "aidge_core.Tensor.get_available_backends", false]], "get_available_impl_specs() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_available_impl_specs", false]], "get_backward_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_backward_scheduling", false]], "get_backward_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_backward_scheduling", false]], "get_backward_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_backward_scheduling", false]], "get_best_adaptation() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_best_adaptation", false]], "get_best_match() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_best_match", false]], "get_children() (aidge_core.node method)": [[6, "aidge_core.Node.get_children", false]], "get_connected_graph_view() (in module aidge_core)": [[6, "aidge_core.get_connected_graph_view", false]], "get_coord() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.get_coord", false]], "get_export_node() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_export_node", false]], "get_forward_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_forward_scheduling", false]], "get_forward_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_forward_scheduling", false]], "get_forward_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_forward_scheduling", false]], "get_idx() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.get_idx", false]], "get_impl() (aidge_core.operator method)": [[9, "aidge_core.Operator.get_impl", false]], "get_impl() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_impl", false]], "get_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_input", false]], "get_input_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_input_nodes", false]], "get_inputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_inputs", false]], "get_item() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.get_item", false]], "get_len() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.get_len", false]], "get_nb_inputs() (aidge_core.node method)": [[6, "aidge_core.Node.get_nb_inputs", false]], "get_nb_modalities() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.get_nb_modalities", false]], "get_nb_outputs() (aidge_core.node method)": [[6, "aidge_core.Node.get_nb_outputs", false]], "get_node() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_node", false]], "get_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_nodes", false]], "get_operator() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_operator", false]], "get_operator() (aidge_core.node method)": [[6, "aidge_core.Node.get_operator", false]], "get_ordered_children() (aidge_core.node method)": [[6, "aidge_core.Node.get_ordered_children", false]], "get_ordered_inputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ordered_inputs", false]], "get_ordered_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ordered_nodes", false]], "get_ordered_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ordered_outputs", false]], "get_output() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_output", false]], "get_output_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_output_nodes", false]], "get_outputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_outputs", false]], "get_parent() (aidge_core.node method)": [[6, "aidge_core.Node.get_parent", false]], "get_parents() (aidge_core.node method)": [[6, "aidge_core.Node.get_parents", false]], "get_prod_conso() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_prod_conso", false]], "get_ranked_nodes() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ranked_nodes", false]], "get_ranked_nodes_name() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.get_ranked_nodes_name", false]], "get_raw_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.get_raw_input", false]], "get_raw_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_raw_input", false]], "get_raw_output() (aidge_core.operator method)": [[9, "aidge_core.Operator.get_raw_output", false]], "get_raw_output() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.get_raw_output", false]], "get_required_spec() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.get_required_spec", false]], "get_sequential_static_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_sequential_static_scheduling", false]], "get_sequential_static_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_sequential_static_scheduling", false]], "get_sequential_static_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_sequential_static_scheduling", false]], "get_static_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.get_static_scheduling", false]], "get_static_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.get_static_scheduling", false]], "get_static_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.get_static_scheduling", false]], "grad() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.grad", false]], "graph_view() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.graph_view", false]], "graph_view() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.graph_view", false]], "graph_view() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.graph_view", false]], "graphview (class in aidge_core)": [[6, "aidge_core.GraphView", false]], "has_impl() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.has_impl", false]], "identity() (in module aidge_core)": [[9, "aidge_core.Identity", false]], "implspec (class in aidge_core)": [[3, "aidge_core.ImplSpec", false]], "import_generic() (in module aidge_onnx.node_import.generic)": [[13, "aidge_onnx.node_import.generic.import_generic", false]], "in_view() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.in_view", false]], "initialize (c++ function)": [[12, "_CPPv410initializev", false]], "input() (aidge_core.node method)": [[6, "aidge_core.Node.input", false]], "input_category() (aidge_core.node method)": [[6, "aidge_core.Node.input_category", false]], "input_category() (aidge_core.operator method)": [[9, "aidge_core.Operator.input_category", false]], "input_category() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.input_category", false]], "input_name() (aidge_core.node method)": [[6, "aidge_core.Node.input_name", false]], "inputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.inputs", false]], "inputs() (aidge_core.node method)": [[6, "aidge_core.Node.inputs", false]], "inputs_names() (aidge_core.node method)": [[6, "aidge_core.Node.inputs_names", false]], "insert_parent() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.insert_parent", false]], "iospec (class in aidge_core)": [[3, "aidge_core.IOSpec", false]], "is_atomic() (aidge_core.operator method)": [[9, "aidge_core.Operator.is_atomic", false]], "is_atomic() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.is_atomic", false]], "is_back_edge() (aidge_core.operator method)": [[9, "aidge_core.Operator.is_back_edge", false]], "is_back_edge() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.is_back_edge", false]], "is_optional_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.is_optional_input", false]], "is_optional_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.is_optional_input", false]], "leakyrelu() (in module aidge_core)": [[9, "aidge_core.LeakyReLU", false]], "len() (aidge_backend_opencv.mnist method)": [[2, "aidge_backend_opencv.MNIST.len", false]], "load (c++ function)": [[12, "_CPPv44load8filepath", false]], "load_onnx() (in module aidge_onnx)": [[13, "aidge_onnx.load_onnx", false]], "log_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.log_outputs", false]], "lstm() (in module aidge_core)": [[9, "aidge_core.LSTM", false]], "match() (aidge_core.singlepassgraphmatching method)": [[7, "aidge_core.SinglePassGraphMatching.match", false]], "matmul() (in module aidge_core)": [[9, "aidge_core.MatMul", false]], "matmul_to_fc() (in module aidge_core)": [[10, "aidge_core.matmul_to_fc", false]], "mean() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.mean", false]], "meta_operator() (in module aidge_core)": [[9, "aidge_core.meta_operator", false]], "mnist (class in aidge_backend_opencv)": [[2, "aidge_backend_opencv.MNIST", false]], "mul() (in module aidge_core)": [[9, "aidge_core.Mul", false]], "name() (aidge_core.node method)": [[6, "aidge_core.Node.name", false]], "nb_inputs() (aidge_core.operator method)": [[9, "aidge_core.Operator.nb_inputs", false]], "nb_inputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.nb_inputs", false]], "nb_outputs() (aidge_core.operator method)": [[9, "aidge_core.Operator.nb_outputs", false]], "nb_outputs() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.nb_outputs", false]], "node (class in aidge_core)": [[6, "aidge_core.Node", false]], "operator (class in aidge_core)": [[9, "aidge_core.Operator", false]], "operatortensor (class in aidge_core)": [[9, "aidge_core.OperatorTensor", false]], "output() (aidge_core.node method)": [[6, "aidge_core.Node.output", false]], "output_name() (aidge_core.node method)": [[6, "aidge_core.Node.output_name", false]], "outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.outputs", false]], "outputs() (aidge_core.node method)": [[6, "aidge_core.Node.outputs", false]], "outputs_names() (aidge_core.node method)": [[6, "aidge_core.Node.outputs_names", false]], "paddedavgpooling2d() (in module aidge_core)": [[9, "aidge_core.PaddedAvgPooling2D", false]], "paddedconv1d() (in module aidge_core)": [[9, "aidge_core.PaddedConv1D", false]], "paddedconv2d() (in module aidge_core)": [[9, "aidge_core.PaddedConv2D", false]], "paddedconvdepthwise1d() (in module aidge_core)": [[9, "aidge_core.PaddedConvDepthWise1D", false]], "paddedconvdepthwise2d() (in module aidge_core)": [[9, "aidge_core.PaddedConvDepthWise2D", false]], "paddedmaxpooling2d() (in module aidge_core)": [[9, "aidge_core.PaddedMaxPooling2D", false]], "parallel() (in module aidge_core)": [[6, "aidge_core.parallel", false]], "parallelscheduler (class in aidge_core)": [[11, "aidge_core.ParallelScheduler", false]], "pop() (in module aidge_core)": [[9, "aidge_core.Pop", false]], "pow() (in module aidge_core)": [[9, "aidge_core.Pow", false]], "prod_conso() (aidge_core.export_utils.exportlib method)": [[5, "aidge_core.export_utils.ExportLib.prod_conso", false]], "producer() (in module aidge_core)": [[9, "aidge_core.Producer", false]], "profile (c++ function)": [[12, "_CPPv47profile13nb_iterations4mode", false]], "reducemean() (in module aidge_core)": [[9, "aidge_core.ReduceMean", false]], "reformat_kernels_to_copy() (aidge_core.export_utils.exportnodecpp method)": [[5, "aidge_core.export_utils.ExportNodeCpp.reformat_kernels_to_copy", false]], "register() (aidge_core.export_utils.exportlib class method)": [[5, "aidge_core.export_utils.ExportLib.register", false]], "register_export() (in module aidge_onnx.node_export)": [[13, "aidge_onnx.node_export.register_export", false]], "register_generic() (aidge_core.export_utils.exportlib class method)": [[5, "aidge_core.export_utils.ExportLib.register_generic", false]], "register_import() (in module aidge_onnx.node_import)": [[13, "aidge_onnx.node_import.register_import", false]], "register_metaop() (aidge_core.export_utils.exportlib class method)": [[5, "aidge_core.export_utils.ExportLib.register_metaop", false]], "relu() (in module aidge_core)": [[9, "aidge_core.ReLU", false]], "remove_flatten() (in module aidge_core)": [[10, "aidge_core.remove_flatten", false]], "replace() (aidge_core.graphview static method)": [[6, "aidge_core.GraphView.replace", false]], "reset_scheduling() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.reset_scheduling", false]], "reset_scheduling() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.reset_scheduling", false]], "reset_scheduling() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.reset_scheduling", false]], "reshape() (in module aidge_core)": [[9, "aidge_core.Reshape", false]], "residual() (in module aidge_core)": [[6, "aidge_core.residual", false]], "resize() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.resize", false]], "root_node() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.root_node", false]], "run_sync (c++ function)": [[12, "_CPPv48run_sync6inputs", false]], "save (c++ function)": [[12, "_CPPv44save8filepath", false]], "save() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.save", false]], "save_factorized_static_scheduling_diagram() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.save_factorized_static_scheduling_diagram", false]], "save_factorized_static_scheduling_diagram() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.save_factorized_static_scheduling_diagram", false]], "save_factorized_static_scheduling_diagram() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.save_factorized_static_scheduling_diagram", false]], "save_scheduling_diagram() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.save_scheduling_diagram", false]], "save_scheduling_diagram() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.save_scheduling_diagram", false]], "save_scheduling_diagram() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.save_scheduling_diagram", false]], "save_static_scheduling_diagram() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.save_static_scheduling_diagram", false]], "save_static_scheduling_diagram() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.save_static_scheduling_diagram", false]], "save_static_scheduling_diagram() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.save_static_scheduling_diagram", false]], "scheduler (class in aidge_core)": [[11, "aidge_core.Scheduler", false]], "scheduler_export() (in module aidge_core.export_utils)": [[5, "aidge_core.export_utils.scheduler_export", false]], "sequential() (in module aidge_core)": [[6, "aidge_core.sequential", false]], "sequentialscheduler (class in aidge_core)": [[11, "aidge_core.SequentialScheduler", false]], "set_back_edges() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_back_edges", false]], "set_back_edges() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_back_edges", false]], "set_backend() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_backend", false]], "set_backend() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_backend", false]], "set_backend() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_backend", false]], "set_backend() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_backend", false]], "set_data_format() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_data_format", false]], "set_dataformat() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_dataformat", false]], "set_dataformat() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_dataformat", false]], "set_dataformat() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_dataformat", false]], "set_datatype() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_datatype", false]], "set_datatype() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_datatype", false]], "set_datatype() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_datatype", false]], "set_datatype() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_datatype", false]], "set_grad() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.set_grad", false]], "set_impl() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_impl", false]], "set_impl() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_impl", false]], "set_input() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_input", false]], "set_input() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_input", false]], "set_name() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_name", false]], "set_name() (aidge_core.node method)": [[6, "aidge_core.Node.set_name", false]], "set_ordered_inputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_ordered_inputs", false]], "set_ordered_outputs() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_ordered_outputs", false]], "set_output() (aidge_core.operator method)": [[9, "aidge_core.Operator.set_output", false]], "set_output() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.set_output", false]], "set_root_node() (aidge_core.graphview method)": [[6, "aidge_core.GraphView.set_root_node", false]], "set_scheduling_policy() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.set_scheduling_policy", false]], "sigmoid() (in module aidge_core)": [[9, "aidge_core.Sigmoid", false]], "singlepassgraphmatching (class in aidge_core)": [[7, "aidge_core.SinglePassGraphMatching", false]], "size() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.size", false]], "slice() (in module aidge_core)": [[9, "aidge_core.Slice", false]], "softmax() (in module aidge_core)": [[9, "aidge_core.Softmax", false]], "sqrt() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.sqrt", false]], "sqrt() (in module aidge_core)": [[9, "aidge_core.Sqrt", false]], "stride() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.stride", false]], "strides() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.strides", false]], "sub() (in module aidge_core)": [[9, "aidge_core.Sub", false]], "supported_operators() (in module aidge_onnx.node_export)": [[13, "aidge_onnx.node_export.supported_operators", false]], "supported_operators() (in module aidge_onnx.node_import)": [[13, "aidge_onnx.node_import.supported_operators", false]], "tag_conditional_nodes() (aidge_core.parallelscheduler method)": [[11, "aidge_core.ParallelScheduler.tag_conditional_nodes", false]], "tag_conditional_nodes() (aidge_core.scheduler method)": [[11, "aidge_core.Scheduler.tag_conditional_nodes", false]], "tag_conditional_nodes() (aidge_core.sequentialscheduler method)": [[11, "aidge_core.SequentialScheduler.tag_conditional_nodes", false]], "tanh() (in module aidge_core)": [[9, "aidge_core.Tanh", false]], "tensor (class in aidge_core)": [[4, "aidge_core.Tensor", false]], "transpose() (in module aidge_core)": [[9, "aidge_core.Transpose", false]], "type() (aidge_core.node method)": [[6, "aidge_core.Node.type", false]], "type() (aidge_core.operator method)": [[9, "aidge_core.Operator.type", false]], "type() (aidge_core.operatortensor method)": [[9, "aidge_core.OperatorTensor.type", false]], "undefined() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.undefined", false]], "zeros() (aidge_core.tensor method)": [[4, "aidge_core.Tensor.zeros", false]]}, "objects": {"": [[9, 0, 1, "_CPPv4N5Aidge3AddERKNSt6stringE", "Aidge::Add"], [9, 1, 1, "_CPPv4N5Aidge3AddERKNSt6stringE", "Aidge::Add::name"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::ceil_mode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::dilations"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::roundingMode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode", "Aidge::AvgPooling::stride_dims"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::epsilon"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::momentum"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::nbFeatures"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge9BatchNormENSt10shared_ptrI4NodeEEK9DimSize_tKfKfKbRKNSt6stringE", "Aidge::BatchNorm::trainingMode"], [9, 0, 1, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", "Aidge::Cast"], [9, 1, 1, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", "Aidge::Cast::name"], [9, 1, 1, "_CPPv4N5Aidge4CastEK8DataTypeRKNSt6stringE", "Aidge::Cast::targetType"], [9, 0, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat"], [9, 1, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat::axis"], [9, 1, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat::name"], [9, 1, 1, "_CPPv4N5Aidge6ConcatEK9IOIndex_tKNSt7int32_tERKNSt6stringE", "Aidge::Concat::nbIn"], [6, 3, 1, "_CPPv4N5Aidge9ConnectorE", "Aidge::Connector"], [6, 0, 1, "_CPPv4N5Aidge9Connector9ConnectorENSt10shared_ptrI4NodeEE", "Aidge::Connector::Connector"], [6, 0, 1, "_CPPv4N5Aidge9Connector9ConnectorEv", "Aidge::Connector::Connector"], [6, 1, 1, "_CPPv4N5Aidge9Connector9ConnectorENSt10shared_ptrI4NodeEE", "Aidge::Connector::Connector::node"], [6, 0, 1, "_CPPv4NK5Aidge9Connector5indexEv", "Aidge::Connector::index"], [6, 0, 1, "_CPPv4NK5Aidge9Connector4nodeEv", "Aidge::Connector::node"], [6, 0, 1, "_CPPv4NK5Aidge9ConnectorixE9IOIndex_t", "Aidge::Connector::operator[]"], [6, 1, 1, "_CPPv4NK5Aidge9ConnectorixE9IOIndex_t", "Aidge::Connector::operator[]::index"], [6, 0, 1, "_CPPv4NK5Aidge9Connector4sizeEv", "Aidge::Connector::size"], [6, 0, 1, "_CPPv4N5Aidge9ConnectorD0Ev", "Aidge::Connector::~Connector"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::dilationDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::inChannels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::kernelDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::noBias"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::outChannels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge4ConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::Conv::strideDims"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::dilationDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::kernelDims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::nbChannels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::noBias"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge13ConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::ConvDepthWise::strideDims"], [4, 3, 1, "_CPPv4N5Aidge12DataProviderE", "Aidge::DataProvider"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::backend"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::batchSize"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::database"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::dropLast"], [4, 1, 1, "_CPPv4N5Aidge12DataProvider12DataProviderERK8DatabaseKNSt6size_tERKNSt6stringEKbKb", "Aidge::DataProvider::DataProvider::shuffle"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider4doneEv", "Aidge::DataProvider::done"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider13getIndexBatchEv", "Aidge::DataProvider::getIndexBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider10getNbBatchEv", "Aidge::DataProvider::getNbBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider19incrementIndexBatchEv", "Aidge::DataProvider::incrementIndexBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider4iterEv", "Aidge::DataProvider::iter"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider4nextEv", "Aidge::DataProvider::next"], [4, 0, 1, "_CPPv4NK5Aidge12DataProvider9readBatchEv", "Aidge::DataProvider::readBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider15resetIndexBatchEv", "Aidge::DataProvider::resetIndexBatch"], [4, 0, 1, "_CPPv4N5Aidge12DataProvider10setBatchesEv", "Aidge::DataProvider::setBatches"], [4, 3, 1, "_CPPv4N5Aidge8DatabaseE", "Aidge::Database"], [4, 0, 1, "_CPPv4N5Aidge8Database8DatabaseEv", "Aidge::Database::Database"], [4, 0, 1, "_CPPv4NK5Aidge8Database7getItemEKNSt6size_tE", "Aidge::Database::getItem"], [4, 1, 1, "_CPPv4NK5Aidge8Database7getItemEKNSt6size_tE", "Aidge::Database::getItem::index"], [4, 0, 1, "_CPPv4NK5Aidge8Database6getLenEv", "Aidge::Database::getLen"], [4, 0, 1, "_CPPv4NK5Aidge8Database15getNbModalitiesEv", "Aidge::Database::getNbModalities"], [4, 0, 1, "_CPPv4N5Aidge8DatabaseD0Ev", "Aidge::Database::~Database"], [9, 0, 1, "_CPPv4N5Aidge3DivERKNSt6stringE", "Aidge::Div"], [9, 1, 1, "_CPPv4N5Aidge3DivERKNSt6stringE", "Aidge::Div::name"], [9, 0, 1, "_CPPv4N5Aidge3ErfERKNSt6stringE", "Aidge::Erf"], [9, 1, 1, "_CPPv4N5Aidge3ErfERKNSt6stringE", "Aidge::Erf::name"], [9, 0, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::inChannels"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::name"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::noBias"], [9, 1, 1, "_CPPv4N5Aidge2FCEK9DimSize_tK9DimSize_tbRKNSt6stringE", "Aidge::FC::outChannels"], [9, 0, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::axis"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::gatheredShape"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::indices"], [9, 1, 1, "_CPPv4N5Aidge6GatherENSt6int8_tERKNSt6vectorI7int64_tEERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Gather::name"], [9, 0, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator"], [9, 0, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::name"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator::name"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::nbData"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::nbOut"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::nbParam"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator::op"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringE9IOIndex_t9IOIndex_t9IOIndex_tRKNSt6stringE", "Aidge::GenericOperator::type"], [9, 1, 1, "_CPPv4N5Aidge15GenericOperatorERKNSt6stringENSt10shared_ptrI14OperatorTensorEERKNSt6stringE", "Aidge::GenericOperator::type"], [6, 3, 1, "_CPPv4N5Aidge9GraphViewE", "Aidge::GraphView"], [6, 0, 1, "_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE", "Aidge::GraphView::GraphView"], [6, 1, 1, "_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE", "Aidge::GraphView::GraphView::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", "Aidge::GraphView::add"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", "Aidge::GraphView::add"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", "Aidge::GraphView::add"], [6, 0, 1, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", "Aidge::GraphView::add"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", "Aidge::GraphView::add::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb", "Aidge::GraphView::add::otherGraph"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addE7NodePtrb", "Aidge::GraphView::add::otherNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt3setI7NodePtrEEb", "Aidge::GraphView::add::otherNodes"], [6, 1, 1, "_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb", "Aidge::GraphView::add::otherNodes"], [6, 0, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild"], [6, 0, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild"], [6, 0, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromOutNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild::fromOutNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromOutNodeName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromTensor"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::fromTensor"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild::toNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toOtherNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toOtherNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE", "Aidge::GraphView::addChild::toOtherView"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toTensor"], [6, 1, 1, "_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t", "Aidge::GraphView::addChild::toTensor"], [6, 0, 1, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", "Aidge::GraphView::addOrderedOutputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", "Aidge::GraphView::addOrderedOutputs::outputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView17addOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEEi", "Aidge::GraphView::addOrderedOutputs::pos"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView5cloneEv", "Aidge::GraphView::clone"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView13cloneCallbackEPF7NodePtr7NodePtrE", "Aidge::GraphView::cloneCallback"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView13cloneCallbackEPF7NodePtr7NodePtrE", "Aidge::GraphView::cloneCallback::cloneNode"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView20cloneSharedOperatorsEv", "Aidge::GraphView::cloneSharedOperators"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView20cloneSharedProducersEv", "Aidge::GraphView::cloneSharedProducers"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::backend"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::datatype"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::device"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE", "Aidge::GraphView::compile::dims"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10dataInputsEKNSt6stringE", "Aidge::GraphView::dataInputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10dataInputsEv", "Aidge::GraphView::dataInputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10dataInputsEKNSt6stringE", "Aidge::GraphView::dataInputs::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeE8DataType", "Aidge::GraphView::forwardDType"], [6, 0, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeERKNSt6vectorI8DataTypeEE", "Aidge::GraphView::forwardDType"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeE8DataType", "Aidge::GraphView::forwardDType::inputType"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12forwardDTypeERKNSt6vectorI8DataTypeEE", "Aidge::GraphView::forwardDType::inputTypes"], [6, 0, 1, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", "Aidge::GraphView::forwardDims"], [6, 1, 1, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", "Aidge::GraphView::forwardDims::allowDataDependency"], [6, 1, 1, "_CPPv4N5Aidge9GraphView11forwardDimsERKNSt6vectorINSt6vectorI9DimSize_tEEEEb", "Aidge::GraphView::forwardDims::dims"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr", "Aidge::GraphView::getChildren"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE", "Aidge::GraphView::getChildren"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEv", "Aidge::GraphView::getChildren"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE", "Aidge::GraphView::getChildren::nodeName"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr", "Aidge::GraphView::getChildren::otherNode"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView19getNbFreeDataInputsEv", "Aidge::GraphView::getNbFreeDataInputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE", "Aidge::GraphView::getNode"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE", "Aidge::GraphView::getNode::nodeName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView8getNodesEv", "Aidge::GraphView::getNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView16getOrderedInputsEv", "Aidge::GraphView::getOrderedInputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView15getOrderedNodesEb", "Aidge::GraphView::getOrderedNodes"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView15getOrderedNodesEb", "Aidge::GraphView::getOrderedNodes::reversed"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView17getOrderedOutputsEv", "Aidge::GraphView::getOrderedOutputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView17getOrderedParentsEv", "Aidge::GraphView::getOrderedParents"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10getParentsEKNSt6stringE", "Aidge::GraphView::getParents"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10getParentsEv", "Aidge::GraphView::getParents"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10getParentsEKNSt6stringE", "Aidge::GraphView::getParents::nodeName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView14getRankedNodesEv", "Aidge::GraphView::getRankedNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", "Aidge::GraphView::getRankedNodesName"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", "Aidge::GraphView::getRankedNodesName::format"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb", "Aidge::GraphView::getRankedNodesName::markNonUnicity"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr", "Aidge::GraphView::inView"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inViewERKNSt6stringE", "Aidge::GraphView::inView"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView6inViewERKNSt6stringE", "Aidge::GraphView::inView::nodeName"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr", "Aidge::GraphView::inView::nodePtr"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory", "Aidge::GraphView::inputNodes"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory", "Aidge::GraphView::inputNodes::filter"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE", "Aidge::GraphView::inputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView6inputsEv", "Aidge::GraphView::inputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE", "Aidge::GraphView::inputs::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::childInputTensorIdx"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::childNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::newParentInputTensorIdx"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::newParentNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t", "Aidge::GraphView::insertParent::newParentOutputTensorIdx"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr", "Aidge::GraphView::isInputNode"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr", "Aidge::GraphView::isInputNode::nodePtr"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr", "Aidge::GraphView::isOutputNode"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr", "Aidge::GraphView::isOutputNode::nodePtr"], [6, 0, 1, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", "Aidge::GraphView::link"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", "Aidge::GraphView::link::name1_inID"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE", "Aidge::GraphView::link::name2_outID"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE", "Aidge::GraphView::logOutputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE", "Aidge::GraphView::logOutputs::dirName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView4nameEv", "Aidge::GraphView::name"], [6, 0, 1, "_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE", "Aidge::GraphView::operator()"], [6, 1, 1, "_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE", "Aidge::GraphView::operator()::ctors"], [6, 0, 1, "_CPPv4NK5Aidge9GraphVieweqERK9GraphView", "Aidge::GraphView::operator=="], [6, 1, 1, "_CPPv4NK5Aidge9GraphVieweqERK9GraphView", "Aidge::GraphView::operator==::gv"], [6, 0, 1, "_CPPv4NK5Aidge9GraphViewixERKNSt6stringE", "Aidge::GraphView::operator[]"], [6, 1, 1, "_CPPv4NK5Aidge9GraphViewixERKNSt6stringE", "Aidge::GraphView::operator[]::nodeName"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11outputNodesEv", "Aidge::GraphView::outputNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView7outputsERKNSt6stringE", "Aidge::GraphView::outputs"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView7outputsEv", "Aidge::GraphView::outputs"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView7outputsERKNSt6stringE", "Aidge::GraphView::outputs::nodeName"], [6, 0, 1, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", "Aidge::GraphView::remove"], [6, 1, 1, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", "Aidge::GraphView::remove::includeLearnableParam"], [6, 1, 1, "_CPPv4N5Aidge9GraphView6removeE7NodePtrb", "Aidge::GraphView::remove::nodePtr"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", "Aidge::GraphView::replace"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", "Aidge::GraphView::replace"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", "Aidge::GraphView::replace::newG"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", "Aidge::GraphView::replace::newNodes"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE", "Aidge::GraphView::replace::oldG"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7replaceERKNSt3setI7NodePtrEERKNSt3setI7NodePtrEE", "Aidge::GraphView::replace::oldNodes"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView8rootNodeEv", "Aidge::GraphView::rootNode"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save::path"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save::showProducers"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView4saveERKNSt6stringEbb", "Aidge::GraphView::save::verbose"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", "Aidge::GraphView::setBackend"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", "Aidge::GraphView::setBackend::backend"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t", "Aidge::GraphView::setBackend::device"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat", "Aidge::GraphView::setDataFormat"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat", "Aidge::GraphView::setDataFormat::dataformat"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType", "Aidge::GraphView::setDataType"], [6, 1, 1, "_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType", "Aidge::GraphView::setDataType::datatype"], [6, 0, 1, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", "Aidge::GraphView::setInputId"], [6, 1, 1, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", "Aidge::GraphView::setInputId::inID"], [6, 1, 1, "_CPPv4N5Aidge9GraphView10setInputIdE9IOIndex_t9IOIndex_t", "Aidge::GraphView::setInputId::newNodeOutID"], [6, 0, 1, "_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE", "Aidge::GraphView::setName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE", "Aidge::GraphView::setName::name"], [6, 0, 1, "_CPPv4NK5Aidge9GraphView12setNodesNameEv", "Aidge::GraphView::setNodesName"], [6, 0, 1, "_CPPv4N5Aidge9GraphView16setOrderedInputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedInputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView16setOrderedInputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedInputs::inputs"], [6, 0, 1, "_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedOutputs"], [6, 1, 1, "_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE", "Aidge::GraphView::setOrderedOutputs::outputs"], [6, 0, 1, "_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr", "Aidge::GraphView::setRootNode"], [6, 1, 1, "_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr", "Aidge::GraphView::setRootNode::node"], [6, 0, 1, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", "Aidge::GraphView::swap"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", "Aidge::GraphView::swap::node"], [6, 1, 1, "_CPPv4N5Aidge9GraphView4swapER4NodeR4Node", "Aidge::GraphView::swap::otherNode"], [6, 0, 1, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::GraphView::updateNodeName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::GraphView::updateNodeName::newName"], [6, 1, 1, "_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::GraphView::updateNodeName::node"], [9, 0, 1, "_CPPv4N5Aidge8IdentityERKNSt6stringE", "Aidge::Identity"], [9, 1, 1, "_CPPv4N5Aidge8IdentityERKNSt6stringE", "Aidge::Identity::name"], [3, 3, 1, "_CPPv4N5Aidge8ImplSpecE", "Aidge::ImplSpec"], [3, 3, 1, "_CPPv4N5Aidge8ImplSpec6IOSpecE", "Aidge::ImplSpec::IOSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec::dims_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec::format_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6IOSpecE8DataType10DataFormatRKNSt6vectorINSt4pairIiiEEEE", "Aidge::ImplSpec::IOSpec::IOSpec::type_"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec4dimsE", "Aidge::ImplSpec::IOSpec::dims"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec6formatE", "Aidge::ImplSpec::IOSpec::format"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6IOSpec4typeE", "Aidge::ImplSpec::IOSpec::type"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKN5Aidge8ImplSpecE", "Aidge::ImplSpec::ImplSpec"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::attrs_"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::i"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::i"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::io"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERK6IOSpecRK6IOSpecRK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::o"], [3, 1, 1, "_CPPv4N5Aidge8ImplSpec8ImplSpecERKNSt6vectorI6IOSpecEERKNSt6vectorI6IOSpecEERK17DynamicAttributes", "Aidge::ImplSpec::ImplSpec::o"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec5attrsE", "Aidge::ImplSpec::attrs"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec6inputsE", "Aidge::ImplSpec::inputs"], [3, 4, 1, "_CPPv4N5Aidge8ImplSpec7outputsE", "Aidge::ImplSpec::outputs"], [3, 0, 1, "_CPPv4N5Aidge8ImplSpecD0Ev", "Aidge::ImplSpec::~ImplSpec"], [9, 0, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::hidden_channels"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::in_channels"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::name"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::noBias"], [9, 1, 1, "_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE", "Aidge::LSTM::seq_length"], [9, 0, 1, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", "Aidge::LeakyReLU"], [9, 1, 1, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", "Aidge::LeakyReLU::name"], [9, 1, 1, "_CPPv4N5Aidge9LeakyReLUEfRKNSt6stringE", "Aidge::LeakyReLU::negativeSlope"], [2, 3, 1, "_CPPv4N5Aidge5MNISTE", "Aidge::MNIST"], [2, 5, 1, "_CPPv4N5Aidge5MNIST8DataTypeE", "Aidge::MNIST::DataType"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6DoubleE", "Aidge::MNIST::DataType::Double"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5FloatE", "Aidge::MNIST::DataType::Float"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType3IntE", "Aidge::MNIST::DataType::Int"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5ShortE", "Aidge::MNIST::DataType::Short"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6SignedE", "Aidge::MNIST::DataType::Signed"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType8UnsignedE", "Aidge::MNIST::DataType::Unsigned"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6DoubleE", "Aidge::MNIST::Double"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5FloatE", "Aidge::MNIST::Float"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType3IntE", "Aidge::MNIST::Int"], [2, 0, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST"], [2, 1, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST::dataPath"], [2, 1, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST::loadDataInMemory"], [2, 1, 1, "_CPPv4N5Aidge5MNIST5MNISTERKNSt6stringEbb", "Aidge::MNIST::MNIST::train"], [2, 7, 1, "_CPPv4N5Aidge5MNIST11MagicNumberE", "Aidge::MNIST::MagicNumber"], [2, 4, 1, "_CPPv4N5Aidge5MNIST11MagicNumber4byteE", "Aidge::MNIST::MagicNumber::byte"], [2, 4, 1, "_CPPv4N5Aidge5MNIST11MagicNumber5valueE", "Aidge::MNIST::MagicNumber::value"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType5ShortE", "Aidge::MNIST::Short"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType6SignedE", "Aidge::MNIST::Signed"], [2, 6, 1, "_CPPv4N5Aidge5MNIST8DataType8UnsignedE", "Aidge::MNIST::Unsigned"], [2, 0, 1, "_CPPv4NK5Aidge5MNIST7getItemEKNSt6size_tE", "Aidge::MNIST::getItem"], [2, 1, 1, "_CPPv4NK5Aidge5MNIST7getItemEKNSt6size_tE", "Aidge::MNIST::getItem::index"], [2, 0, 1, "_CPPv4NK5Aidge5MNIST6getLenEv", "Aidge::MNIST::getLen"], [2, 0, 1, "_CPPv4NK5Aidge5MNIST15getNbModalitiesEv", "Aidge::MNIST::getNbModalities"], [2, 0, 1, "_CPPv4N5Aidge5MNISTD0Ev", "Aidge::MNIST::~MNIST"], [9, 0, 1, "_CPPv4N5Aidge6MatMulERKNSt6stringE", "Aidge::MatMul"], [9, 1, 1, "_CPPv4N5Aidge6MatMulERKNSt6stringE", "Aidge::MatMul::name"], [9, 0, 1, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", "Aidge::Memorize"], [9, 1, 1, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", "Aidge::Memorize::endStep"], [9, 1, 1, "_CPPv4N5Aidge8MemorizeEKNSt8uint32_tERKNSt6stringE", "Aidge::Memorize::name"], [9, 0, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::forcedInputsCategory"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::graph"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::name"], [9, 1, 1, "_CPPv4N5Aidge12MetaOperatorEPKcRKNSt10shared_ptrI9GraphViewEERKNSt6vectorI13InputCategoryEERKNSt6stringE", "Aidge::MetaOperator::type"], [9, 0, 1, "_CPPv4N5Aidge4MoveERKNSt6stringE", "Aidge::Move"], [9, 1, 1, "_CPPv4N5Aidge4MoveERKNSt6stringE", "Aidge::Move::name"], [9, 0, 1, "_CPPv4N5Aidge3MulERKNSt6stringE", "Aidge::Mul"], [9, 1, 1, "_CPPv4N5Aidge3MulERKNSt6stringE", "Aidge::Mul::name"], [6, 3, 1, "_CPPv4N5Aidge4NodeE", "Aidge::Node"], [6, 0, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", "Aidge::Node::Node"], [6, 0, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", "Aidge::Node::Node"], [6, 0, 1, "_CPPv4N5Aidge4Node4NodeEv", "Aidge::Node::Node"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", "Aidge::Node::Node::attrs"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", "Aidge::Node::Node::name"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEENSt10shared_ptrI17DynamicAttributesEE", "Aidge::Node::Node::op"], [6, 1, 1, "_CPPv4N5Aidge4Node4NodeENSt10shared_ptrI8OperatorEERKNSt6stringE", "Aidge::Node::Node::op"], [6, 0, 1, "_CPPv4N5Aidge4Node16addAfterBackwardENSt8functionIFbvEEE", "Aidge::Node::addAfterBackward"], [6, 1, 1, "_CPPv4N5Aidge4Node16addAfterBackwardENSt8functionIFbvEEE", "Aidge::Node::addAfterBackward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node15addAfterForwardENSt8functionIFbvEEE", "Aidge::Node::addAfterForward"], [6, 1, 1, "_CPPv4N5Aidge4Node15addAfterForwardENSt8functionIFbvEEE", "Aidge::Node::addAfterForward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node17addBeforeBackwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeBackward"], [6, 1, 1, "_CPPv4N5Aidge4Node17addBeforeBackwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeBackward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node16addBeforeForwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeForward"], [6, 1, 1, "_CPPv4N5Aidge4Node16addBeforeForwardENSt8functionIFbvEEE", "Aidge::Node::addBeforeForward::func"], [6, 0, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild"], [6, 0, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild::otherInId"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild::otherInId"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild::otherNode"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild::otherView"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildENSt10shared_ptrI9GraphViewEEK9IOIndex_tNSt4pairI7NodePtr9IOIndex_tEE", "Aidge::Node::addChild::outId"], [6, 1, 1, "_CPPv4N5Aidge4Node8addChildERK7NodePtrK9IOIndex_t9IOIndex_t", "Aidge::Node::addChild::outId"], [6, 0, 1, "_CPPv4N5Aidge4Node7addViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::addView"], [6, 1, 1, "_CPPv4N5Aidge4Node7addViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::addView::graphPtr"], [6, 0, 1, "_CPPv4NK5Aidge4Node10attributesEv", "Aidge::Node::attributes"], [6, 0, 1, "_CPPv4N5Aidge4Node8backwardEv", "Aidge::Node::backward"], [6, 0, 1, "_CPPv4N5Aidge4Node5cloneE7NodePtr", "Aidge::Node::clone"], [6, 0, 1, "_CPPv4NK5Aidge4Node5cloneEv", "Aidge::Node::clone"], [6, 1, 1, "_CPPv4N5Aidge4Node5cloneE7NodePtr", "Aidge::Node::clone::node"], [6, 0, 1, "_CPPv4N5Aidge4Node20cloneSharedOperatorsE7NodePtr", "Aidge::Node::cloneSharedOperators"], [6, 0, 1, "_CPPv4NK5Aidge4Node20cloneSharedOperatorsEv", "Aidge::Node::cloneSharedOperators"], [6, 1, 1, "_CPPv4N5Aidge4Node20cloneSharedOperatorsE7NodePtr", "Aidge::Node::cloneSharedOperators::node"], [6, 0, 1, "_CPPv4N5Aidge4Node20cloneSharedProducersE7NodePtr", "Aidge::Node::cloneSharedProducers"], [6, 0, 1, "_CPPv4NK5Aidge4Node20cloneSharedProducersEv", "Aidge::Node::cloneSharedProducers"], [6, 1, 1, "_CPPv4N5Aidge4Node20cloneSharedProducersE7NodePtr", "Aidge::Node::cloneSharedProducers::node"], [6, 0, 1, "_CPPv4N5Aidge4Node16createUniqueNameENSt6stringE", "Aidge::Node::createUniqueName"], [6, 1, 1, "_CPPv4N5Aidge4Node16createUniqueNameENSt6stringE", "Aidge::Node::createUniqueName::name"], [6, 0, 1, "_CPPv4NK5Aidge4Node10dataInputsEv", "Aidge::Node::dataInputs"], [6, 0, 1, "_CPPv4N5Aidge4Node7forwardEv", "Aidge::Node::forward"], [6, 0, 1, "_CPPv4NK5Aidge4Node11getChildrenEK9IOIndex_t", "Aidge::Node::getChildren"], [6, 0, 1, "_CPPv4NK5Aidge4Node11getChildrenEv", "Aidge::Node::getChildren"], [6, 1, 1, "_CPPv4NK5Aidge4Node11getChildrenEK9IOIndex_t", "Aidge::Node::getChildren::outId"], [6, 0, 1, "_CPPv4NK5Aidge4Node21getFirstFreeDataInputEv", "Aidge::Node::getFirstFreeDataInput"], [6, 0, 1, "_CPPv4NK5Aidge4Node19getNbFreeDataInputsEv", "Aidge::Node::getNbFreeDataInputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node11getOperatorEv", "Aidge::Node::getOperator"], [6, 0, 1, "_CPPv4NK5Aidge4Node18getOrderedChildrenEv", "Aidge::Node::getOrderedChildren"], [6, 0, 1, "_CPPv4N5Aidge4Node9getParentEK9IOIndex_t", "Aidge::Node::getParent"], [6, 1, 1, "_CPPv4N5Aidge4Node9getParentEK9IOIndex_t", "Aidge::Node::getParent::inId"], [6, 0, 1, "_CPPv4NK5Aidge4Node10getParentsEv", "Aidge::Node::getParents"], [6, 0, 1, "_CPPv4NK5Aidge4Node5inputEK9IOIndex_t", "Aidge::Node::input"], [6, 1, 1, "_CPPv4NK5Aidge4Node5inputEK9IOIndex_t", "Aidge::Node::input::inID"], [6, 0, 1, "_CPPv4NK5Aidge4Node13inputCategoryE9IOIndex_t", "Aidge::Node::inputCategory"], [6, 1, 1, "_CPPv4NK5Aidge4Node13inputCategoryE9IOIndex_t", "Aidge::Node::inputCategory::idx"], [6, 0, 1, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", "Aidge::Node::inputName"], [6, 0, 1, "_CPPv4NK5Aidge4Node9inputNameEK9IOIndex_t", "Aidge::Node::inputName"], [6, 1, 1, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", "Aidge::Node::inputName::inID"], [6, 1, 1, "_CPPv4NK5Aidge4Node9inputNameEK9IOIndex_t", "Aidge::Node::inputName::inID"], [6, 1, 1, "_CPPv4N5Aidge4Node9inputNameEK9IOIndex_tRKNSt6stringE", "Aidge::Node::inputName::newName"], [6, 0, 1, "_CPPv4NK5Aidge4Node6inputsEv", "Aidge::Node::inputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node11inputsNamesEv", "Aidge::Node::inputsNames"], [6, 0, 1, "_CPPv4NK5Aidge4Node4nameEv", "Aidge::Node::name"], [6, 0, 1, "_CPPv4NK5Aidge4Node8nbInputsEv", "Aidge::Node::nbInputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node9nbOutputsEv", "Aidge::Node::nbOutputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node13nbValidInputsEv", "Aidge::Node::nbValidInputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node14nbValidOutputsEv", "Aidge::Node::nbValidOutputs"], [6, 0, 1, "_CPPv4N5Aidge4NodeclERKNSt6vectorI9ConnectorEE", "Aidge::Node::operator()"], [6, 1, 1, "_CPPv4N5Aidge4NodeclERKNSt6vectorI9ConnectorEE", "Aidge::Node::operator()::ctors"], [6, 0, 1, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", "Aidge::Node::operator=="], [6, 1, 1, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", "Aidge::Node::operator==::lhs"], [6, 1, 1, "_CPPv4N5Aidge4NodeeqERK4NodeRK4Node", "Aidge::Node::operator==::rhs"], [6, 0, 1, "_CPPv4NK5Aidge4Node6outputE9IOIndex_t", "Aidge::Node::output"], [6, 1, 1, "_CPPv4NK5Aidge4Node6outputE9IOIndex_t", "Aidge::Node::output::outId"], [6, 0, 1, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", "Aidge::Node::outputName"], [6, 0, 1, "_CPPv4NK5Aidge4Node10outputNameE9IOIndex_t", "Aidge::Node::outputName"], [6, 1, 1, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", "Aidge::Node::outputName::newName"], [6, 1, 1, "_CPPv4N5Aidge4Node10outputNameE9IOIndex_tRKNSt6stringE", "Aidge::Node::outputName::outId"], [6, 1, 1, "_CPPv4NK5Aidge4Node10outputNameE9IOIndex_t", "Aidge::Node::outputName::outId"], [6, 0, 1, "_CPPv4NK5Aidge4Node7outputsEv", "Aidge::Node::outputs"], [6, 0, 1, "_CPPv4NK5Aidge4Node12outputsNamesEv", "Aidge::Node::outputsNames"], [6, 0, 1, "_CPPv4NK5Aidge4Node16parentIsBackEdgeE9IOIndex_t", "Aidge::Node::parentIsBackEdge"], [6, 1, 1, "_CPPv4NK5Aidge4Node16parentIsBackEdgeE9IOIndex_t", "Aidge::Node::parentIsBackEdge::idx"], [6, 0, 1, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", "Aidge::Node::removeChild"], [6, 1, 1, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", "Aidge::Node::removeChild::nodePtr"], [6, 1, 1, "_CPPv4N5Aidge4Node11removeChildEK7NodePtrK9IOIndex_t", "Aidge::Node::removeChild::outId"], [6, 0, 1, "_CPPv4N5Aidge4Node10removeViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::removeView"], [6, 1, 1, "_CPPv4N5Aidge4Node10removeViewERKNSt10shared_ptrI9GraphViewEE", "Aidge::Node::removeView::graphPtr"], [6, 0, 1, "_CPPv4N5Aidge4Node16resetConnectionsEb", "Aidge::Node::resetConnections"], [6, 1, 1, "_CPPv4N5Aidge4Node16resetConnectionsEb", "Aidge::Node::resetConnections::includeLearnableParam"], [6, 0, 1, "_CPPv4N5Aidge4Node7setNameERKNSt6stringE", "Aidge::Node::setName"], [6, 1, 1, "_CPPv4N5Aidge4Node7setNameERKNSt6stringE", "Aidge::Node::setName::name"], [6, 0, 1, "_CPPv4NK5Aidge4Node4typeEv", "Aidge::Node::type"], [6, 0, 1, "_CPPv4NK5Aidge4Node5validEv", "Aidge::Node::valid"], [6, 0, 1, "_CPPv4NK5Aidge4Node5viewsEv", "Aidge::Node::views"], [6, 0, 1, "_CPPv4N5Aidge4NodeD0Ev", "Aidge::Node::~Node"], [9, 3, 1, "_CPPv4N5Aidge8OperatorE", "Aidge::Operator"], [9, 0, 1, "_CPPv4N5Aidge8Operator8OperatorERK8Operator", "Aidge::Operator::Operator"], [9, 0, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator"], [9, 0, 1, "_CPPv4N5Aidge8Operator8OperatorEv", "Aidge::Operator::Operator"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::inputsCategory"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::nbOut"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERK8Operator", "Aidge::Operator::Operator::op"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::operatorType"], [9, 1, 1, "_CPPv4N5Aidge8Operator8OperatorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_tK12OperatorType", "Aidge::Operator::Operator::type"], [9, 0, 1, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::associateInput"], [9, 1, 1, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::associateInput::data"], [9, 1, 1, "_CPPv4N5Aidge8Operator14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::associateInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator10attributesEv", "Aidge::Operator::attributes"], [9, 0, 1, "_CPPv4NK5Aidge8Operator7backendEv", "Aidge::Operator::backend"], [9, 0, 1, "_CPPv4N5Aidge8Operator8backwardEv", "Aidge::Operator::backward"], [9, 0, 1, "_CPPv4NK5Aidge8Operator5cloneEv", "Aidge::Operator::clone"], [9, 0, 1, "_CPPv4N5Aidge8Operator7forwardEv", "Aidge::Operator::forward"], [9, 0, 1, "_CPPv4NK5Aidge8Operator20getAvailableBackendsEv", "Aidge::Operator::getAvailableBackends"], [9, 0, 1, "_CPPv4NK5Aidge8Operator7getImplEv", "Aidge::Operator::getImpl"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t", "Aidge::Operator::getNbConsumedData"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getNbConsumedDataEK9IOIndex_t", "Aidge::Operator::getNbConsumedData::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getNbProducedDataEK9IOIndex_t", "Aidge::Operator::getNbProducedData"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getNbProducedDataEK9IOIndex_t", "Aidge::Operator::getNbProducedData::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t", "Aidge::Operator::getNbRequiredData"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getNbRequiredDataEK9IOIndex_t", "Aidge::Operator::getNbRequiredData::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t", "Aidge::Operator::getNbRequiredProtected"], [9, 1, 1, "_CPPv4NK5Aidge8Operator22getNbRequiredProtectedEK9IOIndex_t", "Aidge::Operator::getNbRequiredProtected::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t", "Aidge::Operator::getRawInput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator11getRawInputEK9IOIndex_t", "Aidge::Operator::getRawInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator12getRawOutputEK9IOIndex_t", "Aidge::Operator::getRawOutput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator12getRawOutputEK9IOIndex_t", "Aidge::Operator::getRawOutput::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", "Aidge::Operator::getRequiredMemory"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", "Aidge::Operator::getRequiredMemory::inputsSize"], [9, 1, 1, "_CPPv4NK5Aidge8Operator17getRequiredMemoryEK9IOIndex_tRKNSt6vectorI9DimSize_tEE", "Aidge::Operator::getRequiredMemory::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator19inheritedAttributesEv", "Aidge::Operator::inheritedAttributes"], [9, 0, 1, "_CPPv4NK5Aidge8Operator13inputCategoryE9IOIndex_t", "Aidge::Operator::inputCategory"], [9, 0, 1, "_CPPv4NK5Aidge8Operator13inputCategoryEv", "Aidge::Operator::inputCategory"], [9, 1, 1, "_CPPv4NK5Aidge8Operator13inputCategoryE9IOIndex_t", "Aidge::Operator::inputCategory::idx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator8isAtomicEv", "Aidge::Operator::isAtomic"], [9, 0, 1, "_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t", "Aidge::Operator::isBackEdge"], [9, 1, 1, "_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t", "Aidge::Operator::isBackEdge::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator15isOptionalInputENSt6size_tE", "Aidge::Operator::isOptionalInput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator15isOptionalInputENSt6size_tE", "Aidge::Operator::isOptionalInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator8nbInputsEv", "Aidge::Operator::nbInputs"], [9, 0, 1, "_CPPv4NK5Aidge8Operator9nbOutputsEv", "Aidge::Operator::nbOutputs"], [9, 0, 1, "_CPPv4NK5Aidge8Operator12operatorTypeEv", "Aidge::Operator::operatorType"], [9, 0, 1, "_CPPv4N5Aidge8Operator22resetConsummerProducerEv", "Aidge::Operator::resetConsummerProducer"], [9, 0, 1, "_CPPv4N5Aidge8Operator10resetInputEK9IOIndex_t", "Aidge::Operator::resetInput"], [9, 1, 1, "_CPPv4N5Aidge8Operator10resetInputEK9IOIndex_t", "Aidge::Operator::resetInput::inputIdx"], [9, 0, 1, "_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE", "Aidge::Operator::setBackEdges"], [9, 1, 1, "_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE", "Aidge::Operator::setBackEdges::backEdges"], [9, 0, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", "Aidge::Operator::setBackend"], [9, 0, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6vectorINSt4pairINSt6stringE11DeviceIdx_tEEEE", "Aidge::Operator::setBackend"], [9, 1, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6vectorINSt4pairINSt6stringE11DeviceIdx_tEEEE", "Aidge::Operator::setBackend::backends"], [9, 1, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", "Aidge::Operator::setBackend::device"], [9, 1, 1, "_CPPv4N5Aidge8Operator10setBackendERKNSt6stringE11DeviceIdx_t", "Aidge::Operator::setBackend::name"], [9, 0, 1, "_CPPv4NK5Aidge8Operator13setDataFormatERK10DataFormat", "Aidge::Operator::setDataFormat"], [9, 1, 1, "_CPPv4NK5Aidge8Operator13setDataFormatERK10DataFormat", "Aidge::Operator::setDataFormat::dataFormat"], [9, 0, 1, "_CPPv4NK5Aidge8Operator11setDataTypeERK8DataType", "Aidge::Operator::setDataType"], [9, 1, 1, "_CPPv4NK5Aidge8Operator11setDataTypeERK8DataType", "Aidge::Operator::setDataType::dataType"], [9, 0, 1, "_CPPv4N5Aidge8Operator7setImplENSt10shared_ptrI12OperatorImplEE", "Aidge::Operator::setImpl"], [9, 1, 1, "_CPPv4N5Aidge8Operator7setImplENSt10shared_ptrI12OperatorImplEE", "Aidge::Operator::setImpl::impl"], [9, 0, 1, "_CPPv4N5Aidge8Operator17setInheritedAttrsERNSt10shared_ptrI17DynamicAttributesEE", "Aidge::Operator::setInheritedAttrs"], [9, 1, 1, "_CPPv4N5Aidge8Operator17setInheritedAttrsERNSt10shared_ptrI17DynamicAttributesEE", "Aidge::Operator::setInheritedAttrs::attr"], [9, 0, 1, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setInput"], [9, 1, 1, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setInput::data"], [9, 1, 1, "_CPPv4N5Aidge8Operator8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setOutput"], [9, 1, 1, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setOutput::data"], [9, 1, 1, "_CPPv4NK5Aidge8Operator9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::Operator::setOutput::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge8Operator4typeEv", "Aidge::Operator::type"], [9, 0, 1, "_CPPv4N5Aidge8Operator23updateConsummerProducerEv", "Aidge::Operator::updateConsummerProducer"], [9, 0, 1, "_CPPv4N5Aidge8OperatorD0Ev", "Aidge::Operator::~Operator"], [9, 3, 1, "_CPPv4N5Aidge14OperatorTensorE", "Aidge::OperatorTensor"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERK14OperatorTensor", "Aidge::OperatorTensor::OperatorTensor"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorEv", "Aidge::OperatorTensor::OperatorTensor"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor::inputsCategory"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor::nbOut"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERK14OperatorTensor", "Aidge::OperatorTensor::OperatorTensor::other"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14OperatorTensorERKNSt6stringERKNSt6vectorI13InputCategoryEEK9IOIndex_t", "Aidge::OperatorTensor::OperatorTensor::type"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::associateInput"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::associateInput::data"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor14associateInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::associateInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField::firstEltDims"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField::outputDims"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor21computeReceptiveFieldERKNSt6vectorI9DimSize_tEERKNSt6vectorI9DimSize_tEEK9IOIndex_t", "Aidge::OperatorTensor::computeReceptiveField::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor13dimsForwardedEv", "Aidge::OperatorTensor::dimsForwarded"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor7forwardEv", "Aidge::OperatorTensor::forward"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor12forwardDTypeEv", "Aidge::OperatorTensor::forwardDType"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor11forwardDimsEb", "Aidge::OperatorTensor::forwardDims"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor11forwardDimsEb", "Aidge::OperatorTensor::forwardDims::allowDataDependency"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor8getInputEK9IOIndex_t", "Aidge::OperatorTensor::getInput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor8getInputEK9IOIndex_t", "Aidge::OperatorTensor::getInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor9getInputsEv", "Aidge::OperatorTensor::getInputs"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor9getOutputEK9IOIndex_t", "Aidge::OperatorTensor::getOutput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor9getOutputEK9IOIndex_t", "Aidge::OperatorTensor::getOutput::outputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor10getOutputsEv", "Aidge::OperatorTensor::getOutputs"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor11getRawInputEK9IOIndex_t", "Aidge::OperatorTensor::getRawInput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor11getRawInputEK9IOIndex_t", "Aidge::OperatorTensor::getRawInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor12getRawOutputEKN5Aidge9IOIndex_tE", "Aidge::OperatorTensor::getRawOutput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor12getRawOutputEKN5Aidge9IOIndex_tE", "Aidge::OperatorTensor::getRawOutput::outputIdx"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor10resetInputEK9IOIndex_t", "Aidge::OperatorTensor::resetInput"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor10resetInputEK9IOIndex_t", "Aidge::OperatorTensor::resetInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor13setDataFormatERK10DataFormat", "Aidge::OperatorTensor::setDataFormat"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor13setDataFormatERK10DataFormat", "Aidge::OperatorTensor::setDataFormat::dataFormat"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor11setDataTypeERK8DataType", "Aidge::OperatorTensor::setDataType"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor11setDataTypeERK8DataType", "Aidge::OperatorTensor::setDataType::dataType"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setInput"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setInput::data"], [9, 1, 1, "_CPPv4N5Aidge14OperatorTensor8setInputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setInput::inputIdx"], [9, 0, 1, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setOutput"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setOutput::data"], [9, 1, 1, "_CPPv4NK5Aidge14OperatorTensor9setOutputEK9IOIndex_tRKNSt10shared_ptrI4DataEE", "Aidge::OperatorTensor::setOutput::outputIdx"], [9, 0, 1, "_CPPv4N5Aidge14OperatorTensorD0Ev", "Aidge::OperatorTensor::~OperatorTensor"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::beginEndTuples"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::borderType"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::borderValue"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge3PadENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt6stringE13PadBorderTyped", "Aidge::Pad::name"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::ceil_mode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::dilations"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::padding_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedAvgPooling::stride_dims"], [9, 0, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv"], [9, 2, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::DIM"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::dilation_dims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::in_channels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::kernel_dims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::name"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::no_bias"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::out_channels"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::padding_dims"], [9, 1, 1, "_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConv::stride_dims"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::dilation_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::nb_channels"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::no_bias"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::padding_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb", "Aidge::PaddedConvDepthWise::stride_dims"], [9, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling"], [9, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::DIM"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::ceil_mode"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::dilations"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::kernel_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::name"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::padding_dims"], [9, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb", "Aidge::PaddedMaxPooling::stride_dims"], [6, 0, 1, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Parallel"], [6, 1, 1, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Parallel::inputs"], [6, 1, 1, "_CPPv4N5Aidge8ParallelENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Parallel::name"], [11, 3, 1, "_CPPv4N5Aidge17ParallelSchedulerE", "Aidge::ParallelScheduler"], [11, 0, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler::graphView"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler::resetCPModel"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler17ParallelSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::ParallelScheduler::ParallelScheduler::upperNode"], [11, 0, 1, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::ParallelScheduler::forward"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::ParallelScheduler::forward::data"], [11, 1, 1, "_CPPv4N5Aidge17ParallelScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::ParallelScheduler::forward::forwardDims"], [11, 0, 1, "_CPPv4N5Aidge17ParallelSchedulerD0Ev", "Aidge::ParallelScheduler::~ParallelScheduler"], [9, 0, 1, "_CPPv4N5Aidge3PopERKNSt6stringE", "Aidge::Pop"], [9, 1, 1, "_CPPv4N5Aidge3PopERKNSt6stringE", "Aidge::Pop::name"], [9, 0, 1, "_CPPv4N5Aidge3PowERKNSt6stringE", "Aidge::Pow"], [9, 1, 1, "_CPPv4N5Aidge3PowERKNSt6stringE", "Aidge::Pow::name"], [9, 0, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer"], [9, 0, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer"], [9, 2, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::DIM"], [9, 1, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::constant"], [9, 1, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer::constant"], [9, 1, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::dims"], [9, 1, 1, "_CPPv4I_NSt6size_tEEN5Aidge8ProducerENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringEb", "Aidge::Producer::name"], [9, 1, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer::name"], [9, 1, 1, "_CPPv4N5Aidge8ProducerEKNSt10shared_ptrI6TensorEERKNSt6stringEb", "Aidge::Producer::tensor"], [9, 0, 1, "_CPPv4N5Aidge4ReLUERKNSt6stringE", "Aidge::ReLU"], [9, 1, 1, "_CPPv4N5Aidge4ReLUERKNSt6stringE", "Aidge::ReLU::name"], [9, 0, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", "Aidge::ReduceMean"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", "Aidge::ReduceMean::axes"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", "Aidge::ReduceMean::keep_dims"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", "Aidge::ReduceMean::name"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", "Aidge::ReduceMean::noop_with_empty_axes"], [9, 1, 1, "_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE", "Aidge::ReduceMean::roundingMode"], [9, 0, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape"], [9, 1, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape::allowzero"], [9, 1, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape::name"], [9, 1, 1, "_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE", "Aidge::Reshape::shape"], [6, 0, 1, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Residual"], [6, 1, 1, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Residual::inputs"], [6, 1, 1, "_CPPv4N5Aidge8ResidualENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Residual::name"], [11, 3, 1, "_CPPv4N5Aidge9SchedulerE", "Aidge::Scheduler"], [11, 5, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatusE", "Aidge::Scheduler::AvailableDataStatus"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus9ConnectedE", "Aidge::Scheduler::AvailableDataStatus::Connected"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus12NotConnectedE", "Aidge::Scheduler::AvailableDataStatus::NotConnected"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus23UpperNodeInputConnectedE", "Aidge::Scheduler::AvailableDataStatus::UpperNodeInputConnected"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus19UpperNodeInputFoundE", "Aidge::Scheduler::AvailableDataStatus::UpperNodeInputFound"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler19AvailableDataStatus11ValidTensorE", "Aidge::Scheduler::AvailableDataStatus::ValidTensor"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler8ExecTimeE", "Aidge::Scheduler::ExecTime"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler8ExecTime3getEv", "Aidge::Scheduler::ExecTime::get"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler8ExecTime6updateERKNSt6vectorI17SchedulingElementEE", "Aidge::Scheduler::ExecTime::update"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler8ExecTime6updateERKNSt6vectorI17SchedulingElementEE", "Aidge::Scheduler::ExecTime::update::scheduling"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTimeE", "Aidge::Scheduler::NodeExecTime"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime12NodeExecTimeEv", "Aidge::Scheduler::NodeExecTime::NodeExecTime"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6mCountE", "Aidge::Scheduler::NodeExecTime::mCount"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime3mM2E", "Aidge::Scheduler::NodeExecTime::mM2"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime5mMeanE", "Aidge::Scheduler::NodeExecTime::mMean"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler12NodeExecTime4meanEv", "Aidge::Scheduler::NodeExecTime::mean"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler12NodeExecTime6stdDevEv", "Aidge::Scheduler::NodeExecTime::stdDev"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::NodeExecTime::update"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::NodeExecTime::update::end"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler12NodeExecTime6updateENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::NodeExecTime::update::start"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersE", "Aidge::Scheduler::PriorProducersConsumers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersERK23PriorProducersConsumers", "Aidge::Scheduler::PriorProducersConsumers::PriorProducersConsumers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers23PriorProducersConsumersEv", "Aidge::Scheduler::PriorProducersConsumers::PriorProducersConsumers"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers7isPriorE", "Aidge::Scheduler::PriorProducersConsumers::isPrior"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers14priorConsumersE", "Aidge::Scheduler::PriorProducersConsumers::priorConsumers"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumers17requiredProducersE", "Aidge::Scheduler::PriorProducersConsumers::requiredProducers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23PriorProducersConsumersD0Ev", "Aidge::Scheduler::PriorProducersConsumers::~PriorProducersConsumers"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler9SchedulerEv", "Aidge::Scheduler::Scheduler"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler::graphView"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler::resetCPModel"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler9SchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::Scheduler::Scheduler::upperNode"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElementE", "Aidge::Scheduler::SchedulingElement"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement::end_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement::node_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement17SchedulingElementENSt10shared_ptrI4NodeEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEENSt6chrono10time_pointINSt6chrono21high_resolution_clockEEE", "Aidge::Scheduler::SchedulingElement::SchedulingElement::start_"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement3endE", "Aidge::Scheduler::SchedulingElement::end"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement4nodeE", "Aidge::Scheduler::SchedulingElement::node"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElement5startE", "Aidge::Scheduler::SchedulingElement::start"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler17SchedulingElementD0Ev", "Aidge::Scheduler::SchedulingElement::~SchedulingElement"], [11, 5, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicyE", "Aidge::Scheduler::SchedulingPolicy"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsLateAsPossibleE", "Aidge::Scheduler::SchedulingPolicy::AsLateAsPossible"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy16AsSoonAsPossibleE", "Aidge::Scheduler::SchedulingPolicy::AsSoonAsPossible"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy7DefaultE", "Aidge::Scheduler::SchedulingPolicy::Default"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19LonguestBranchFirstE", "Aidge::Scheduler::SchedulingPolicy::LonguestBranchFirst"], [11, 6, 1, "_CPPv4N5Aidge9Scheduler16SchedulingPolicy19ShortestBranchFirstE", "Aidge::Scheduler::SchedulingPolicy::ShortestBranchFirst"], [11, 3, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElementE", "Aidge::Scheduler::StaticSchedulingElement"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement::early_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement::late_"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement23StaticSchedulingElementENSt10shared_ptrI4NodeEENSt6size_tENSt6size_tE", "Aidge::Scheduler::StaticSchedulingElement::StaticSchedulingElement::node_"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement11earlierThanE", "Aidge::Scheduler::StaticSchedulingElement::earlierThan"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement5earlyE", "Aidge::Scheduler::StaticSchedulingElement::early"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4lateE", "Aidge::Scheduler::StaticSchedulingElement::late"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement9laterThanE", "Aidge::Scheduler::StaticSchedulingElement::laterThan"], [11, 4, 1, "_CPPv4N5Aidge9Scheduler23StaticSchedulingElement4nodeE", "Aidge::Scheduler::StaticSchedulingElement::node"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler15clearSchedulingEv", "Aidge::Scheduler::clearScheduling"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler13connectInputsERKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::Scheduler::connectInputs"], [11, 1, 1, "_CPPv4N5Aidge9Scheduler13connectInputsERKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::Scheduler::connectInputs::data"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler18generateSchedulingEv", "Aidge::Scheduler::generateScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler21getBackwardSchedulingEv", "Aidge::Scheduler::getBackwardScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler20getForwardSchedulingEv", "Aidge::Scheduler::getForwardScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", "Aidge::Scheduler::getSequentialStaticScheduling"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", "Aidge::Scheduler::getSequentialStaticScheduling::policy"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler29getSequentialStaticSchedulingENSt6size_tE16SchedulingPolicy", "Aidge::Scheduler::getSequentialStaticScheduling::step"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler19getStaticSchedulingENSt6size_tE", "Aidge::Scheduler::getStaticScheduling"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler19getStaticSchedulingENSt6size_tE", "Aidge::Scheduler::getStaticScheduling::step"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler9graphViewEv", "Aidge::Scheduler::graphView"], [11, 0, 1, "_CPPv4N5Aidge9Scheduler15resetSchedulingEv", "Aidge::Scheduler::resetScheduling"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram::fileName"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram::ignoreProducers"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler37saveFactorizedStaticSchedulingDiagramERKNSt6stringEb6size_t", "Aidge::Scheduler::saveFactorizedStaticSchedulingDiagram::minRepeat"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveSchedulingDiagram"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveSchedulingDiagram::fileName"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler21saveSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveSchedulingDiagram::ignoreProducers"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveStaticSchedulingDiagram"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveStaticSchedulingDiagram::fileName"], [11, 1, 1, "_CPPv4NK5Aidge9Scheduler27saveStaticSchedulingDiagramERKNSt6stringEb", "Aidge::Scheduler::saveStaticSchedulingDiagram::ignoreProducers"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler19tagConditionalNodesEv", "Aidge::Scheduler::tagConditionalNodes"], [11, 0, 1, "_CPPv4NK5Aidge9Scheduler15tagForkBranchesEv", "Aidge::Scheduler::tagForkBranches"], [11, 0, 1, "_CPPv4N5Aidge9SchedulerD0Ev", "Aidge::Scheduler::~Scheduler"], [6, 0, 1, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Sequential"], [6, 1, 1, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Sequential::inputs"], [6, 1, 1, "_CPPv4N5Aidge10SequentialENSt6vectorI6OpArgsEENSt6stringE", "Aidge::Sequential::name"], [11, 3, 1, "_CPPv4N5Aidge19SequentialSchedulerE", "Aidge::SequentialScheduler"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler::graphView"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler::resetCPModel"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19SequentialSchedulerENSt10shared_ptrI9GraphViewEEbNSt10shared_ptrI4NodeEE", "Aidge::SequentialScheduler::SequentialScheduler::upperNode"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler8backwardEv", "Aidge::SequentialScheduler::backward"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::SequentialScheduler::forward"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::SequentialScheduler::forward::data"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler7forwardEbRKNSt6vectorINSt10shared_ptrIN5Aidge6TensorEEEEE", "Aidge::SequentialScheduler::forward::forwardDims"], [11, 0, 1, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", "Aidge::SequentialScheduler::generateMemory"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", "Aidge::SequentialScheduler::generateMemory::incProducers"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler14generateMemoryEbb", "Aidge::SequentialScheduler::generateMemory::wrapAroundBuffer"], [11, 0, 1, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", "Aidge::SequentialScheduler::generateMemoryAutoConcat"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", "Aidge::SequentialScheduler::generateMemoryAutoConcat::incProducers"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler24generateMemoryAutoConcatEbb", "Aidge::SequentialScheduler::generateMemoryAutoConcat::wrapAroundBuffer"], [11, 0, 1, "_CPPv4NK5Aidge19SequentialScheduler29getSequentialStaticSchedulingENSt6size_tE", "Aidge::SequentialScheduler::getSequentialStaticScheduling"], [11, 1, 1, "_CPPv4NK5Aidge19SequentialScheduler29getSequentialStaticSchedulingENSt6size_tE", "Aidge::SequentialScheduler::getSequentialStaticScheduling::step"], [11, 0, 1, "_CPPv4N5Aidge19SequentialScheduler19setSchedulingPolicyE16SchedulingPolicy", "Aidge::SequentialScheduler::setSchedulingPolicy"], [11, 1, 1, "_CPPv4N5Aidge19SequentialScheduler19setSchedulingPolicyE16SchedulingPolicy", "Aidge::SequentialScheduler::setSchedulingPolicy::policy"], [11, 0, 1, "_CPPv4N5Aidge19SequentialSchedulerD0Ev", "Aidge::SequentialScheduler::~SequentialScheduler"], [9, 0, 1, "_CPPv4N5Aidge7SigmoidERKNSt6stringE", "Aidge::Sigmoid"], [9, 1, 1, "_CPPv4N5Aidge7SigmoidERKNSt6stringE", "Aidge::Sigmoid::name"], [7, 3, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingE", "Aidge::SinglePassGraphMatching"], [7, 3, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextE", "Aidge::SinglePassGraphMatching::Context"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextERK7Context", "Aidge::SinglePassGraphMatching::Context::Context"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7ContextEv", "Aidge::SinglePassGraphMatching::Context::Context"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context7anchorsE", "Aidge::SinglePassGraphMatching::Context::anchors"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5depthE", "Aidge::SinglePassGraphMatching::Context::depth"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context11edgeLeftIdxE", "Aidge::SinglePassGraphMatching::Context::edgeLeftIdx"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12edgeRightIdxE", "Aidge::SinglePassGraphMatching::Context::edgeRightIdx"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9firstNodeE", "Aidge::SinglePassGraphMatching::Context::firstNode"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context13firstSequenceE", "Aidge::SinglePassGraphMatching::Context::firstSequence"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context10inSequenceE", "Aidge::SinglePassGraphMatching::Context::inSequence"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12lookForChildE", "Aidge::SinglePassGraphMatching::Context::lookForChild"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextaSERK7Context", "Aidge::SinglePassGraphMatching::Context::operator="], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context5queryE", "Aidge::SinglePassGraphMatching::Context::query"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context12singleOutputE", "Aidge::SinglePassGraphMatching::Context::singleOutput"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7Context9startNodeE", "Aidge::SinglePassGraphMatching::Context::startNode"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching7ContextD0Ev", "Aidge::SinglePassGraphMatching::Context::~Context"], [7, 3, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultE", "Aidge::SinglePassGraphMatching::MatchingResult"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::MatchingResult"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultEv", "Aidge::SinglePassGraphMatching::MatchingResult::MatchingResult"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult14MatchingResultERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::MatchingResult::other"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult7anchorsE", "Aidge::SinglePassGraphMatching::MatchingResult::anchors"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult5graphE", "Aidge::SinglePassGraphMatching::MatchingResult::graph"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultaSERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::operator="], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultaSERK14MatchingResult", "Aidge::SinglePassGraphMatching::MatchingResult::operator=::other"], [7, 4, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResult9startNodeE", "Aidge::SinglePassGraphMatching::MatchingResult::startNode"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching14MatchingResultD0Ev", "Aidge::SinglePassGraphMatching::MatchingResult::~MatchingResult"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingENSt10shared_ptrI9GraphViewEE", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingEv", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingENSt10shared_ptrI9GraphViewEE", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching::graph"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching23SinglePassGraphMatchingERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::SinglePassGraphMatching::other"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", "Aidge::SinglePassGraphMatching::addNodeLambda"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", "Aidge::SinglePassGraphMatching::addNodeLambda::func"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching13addNodeLambdaERKNSt6stringENSt8functionIFbRKNSt10shared_ptrI4NodeEEEEE", "Aidge::SinglePassGraphMatching::addNodeLambda::name"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching22filterLonguestDisjointERKNSt3setI14MatchingResultEE", "Aidge::SinglePassGraphMatching::filterLonguestDisjoint"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching22filterLonguestDisjointERKNSt3setI14MatchingResultEE", "Aidge::SinglePassGraphMatching::filterLonguestDisjoint::matches"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", "Aidge::SinglePassGraphMatching::match"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", "Aidge::SinglePassGraphMatching::match::disjoint"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching5matchERKNSt6stringEb", "Aidge::SinglePassGraphMatching::match::query"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::SinglePassGraphMatching::matchFrom"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::SinglePassGraphMatching::matchFrom::query"], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatching9matchFromENSt10shared_ptrI4NodeEERKNSt6stringE", "Aidge::SinglePassGraphMatching::matchFrom::startNode"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingaSERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::operator="], [7, 1, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingaSERK23SinglePassGraphMatching", "Aidge::SinglePassGraphMatching::operator=::other"], [7, 0, 1, "_CPPv4N5Aidge23SinglePassGraphMatchingD0Ev", "Aidge::SinglePassGraphMatching::~SinglePassGraphMatching"], [9, 0, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::axes"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::ends"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::name"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::starts"], [9, 1, 1, "_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE", "Aidge::Slice::steps"], [9, 0, 1, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", "Aidge::Softmax"], [9, 1, 1, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", "Aidge::Softmax::axis"], [9, 1, 1, "_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE", "Aidge::Softmax::name"], [9, 0, 1, "_CPPv4N5Aidge4SqrtERKNSt6stringE", "Aidge::Sqrt"], [9, 1, 1, "_CPPv4N5Aidge4SqrtERKNSt6stringE", "Aidge::Sqrt::name"], [9, 0, 1, "_CPPv4N5Aidge3SubERKNSt6stringE", "Aidge::Sub"], [9, 1, 1, "_CPPv4N5Aidge3SubERKNSt6stringE", "Aidge::Sub::name"], [9, 0, 1, "_CPPv4N5Aidge4TanhERKNSt6stringE", "Aidge::Tanh"], [9, 1, 1, "_CPPv4N5Aidge4TanhERKNSt6stringE", "Aidge::Tanh::name"], [4, 3, 1, "_CPPv4N5Aidge6TensorE", "Aidge::Tensor"], [4, 0, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorERK6Tensor", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::Tensor"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6TensorERR6Tensor", "Aidge::Tensor::Tensor"], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::SIZE_3"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::SIZE_3"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::SIZE_4"], [4, 2, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor::VT"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor6TensorERR6VectorI1TE", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array1DI1T6SIZE_0E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E", "Aidge::Tensor::Tensor::arr"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", "Aidge::Tensor::Tensor::dformat"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorERKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::Tensor::dims"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorE8DataType10DataFormat", "Aidge::Tensor::Tensor::dtype"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorERK6Tensor", "Aidge::Tensor::Tensor::other"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6TensorERR6Tensor", "Aidge::Tensor::Tensor::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6Tensor6TensorE1T", "Aidge::Tensor::Tensor::val"], [4, 4, 1, "_CPPv4N5Aidge6Tensor4TypeE", "Aidge::Tensor::Type"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3absEv", "Aidge::Tensor::abs"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7backendEv", "Aidge::Tensor::backend"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8capacityEv", "Aidge::Tensor::capacity"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4clipEff", "Aidge::Tensor::clip"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor4clipEff", "Aidge::Tensor::clip::max"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor4clipEff", "Aidge::Tensor::clip::min"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5cloneEv", "Aidge::Tensor::clone"], [4, 0, 1, "_CPPv4N5Aidge6Tensor8copyCastERK6Tensor", "Aidge::Tensor::copyCast"], [4, 1, 1, "_CPPv4N5Aidge6Tensor8copyCastERK6Tensor", "Aidge::Tensor::copyCast::src"], [4, 0, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6Tensor", "Aidge::Tensor::copyCastFrom"], [4, 0, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", "Aidge::Tensor::copyCastFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", "Aidge::Tensor::copyCastFrom::movedSrc"], [4, 1, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6Tensor", "Aidge::Tensor::copyCastFrom::src"], [4, 1, 1, "_CPPv4N5Aidge6Tensor12copyCastFromERK6TensorRNSt10shared_ptrI6TensorEE", "Aidge::Tensor::copyCastFrom::src"], [4, 0, 1, "_CPPv4N5Aidge6Tensor8copyFromERK6Tensor", "Aidge::Tensor::copyFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor8copyFromERK6Tensor", "Aidge::Tensor::copyFrom::src"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", "Aidge::Tensor::copyTranspose"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::copyTranspose"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", "Aidge::Tensor::copyTranspose::src"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::copyTranspose::src"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRK19DataFormatTranspose", "Aidge::Tensor::copyTranspose::transpose"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13copyTransposeERK6TensorRKNSt6vectorI9DimSize_tEE", "Aidge::Tensor::copyTranspose::transpose"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor10dataFormatEv", "Aidge::Tensor::dataFormat"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8dataTypeEv", "Aidge::Tensor::dataType"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6deviceEv", "Aidge::Tensor::device"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3dimE8DimIdx_t", "Aidge::Tensor::dim"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3dimE8DimIdx_t", "Aidge::Tensor::dim::idx"], [4, 0, 1, "_CPPv4I_8DimIdx_tENK5Aidge6Tensor4dimsENSt5arrayI9DimSize_t3DIMEEv", "Aidge::Tensor::dims"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4dimsEv", "Aidge::Tensor::dims"], [4, 2, 1, "_CPPv4I_8DimIdx_tENK5Aidge6Tensor4dimsENSt5arrayI9DimSize_t3DIMEEv", "Aidge::Tensor::dims::DIM"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5emptyEv", "Aidge::Tensor::empty"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract::coordIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract::coordIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7extractERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::extract::dims"], [4, 0, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", "Aidge::Tensor::get"], [4, 0, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", "Aidge::Tensor::get"], [4, 1, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", "Aidge::Tensor::get::coordIdx"], [4, 2, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", "Aidge::Tensor::get::expectedType"], [4, 2, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6vectorINSt6size_tEEE", "Aidge::Tensor::get::expectedType"], [4, 1, 1, "_CPPv4I0ENK5Aidge6Tensor3getERK12expectedTypeNSt6size_tE", "Aidge::Tensor::get::idx"], [4, 0, 1, "_CPPv4N5Aidge6Tensor20getAvailableBackendsEv", "Aidge::Tensor::getAvailableBackends"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8getCoordENSt6size_tE", "Aidge::Tensor::getCoord"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor8getCoordENSt6size_tE", "Aidge::Tensor::getCoord::index"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6getIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor6getIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getIdx::coords"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7getImplEv", "Aidge::Tensor::getImpl"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor13getImplOffsetEv", "Aidge::Tensor::getImplOffset"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor13getStorageIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getStorageIdx"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor13getStorageIdxERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::getStorageIdx::coordIdx"], [4, 0, 1, "_CPPv4N5Aidge6Tensor4gradEv", "Aidge::Tensor::grad"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7hasImplEv", "Aidge::Tensor::hasImpl"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor12isContiguousEv", "Aidge::Tensor::isContiguous"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds"], [4, 0, 1, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", "Aidge::Tensor::isInBounds"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds::T"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds::coords"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor10isInBoundsEbRKNSt6vectorI9DimSize_tEERKNSt6vectorI1TEE", "Aidge::Tensor::isInBounds::dimensions"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", "Aidge::Tensor::isInBounds::dimensions"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10isInBoundsERKNSt6vectorI9DimSize_tEEKNSt6size_tE", "Aidge::Tensor::isInBounds::index"], [4, 0, 1, "_CPPv4N5Aidge6Tensor14makeContiguousEv", "Aidge::Tensor::makeContiguous"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4meanEv", "Aidge::Tensor::mean"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6nbDimsEv", "Aidge::Tensor::nbDims"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*"], [4, 0, 1, "_CPPv4NK5Aidge6TensormlERK6Tensor", "Aidge::Tensor::operator*"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::VT"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*::VT"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::other"], [4, 1, 1, "_CPPv4NK5Aidge6TensormlERK6Tensor", "Aidge::Tensor::operator*::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormlE6Tensor1TRK6Tensor", "Aidge::Tensor::operator*::val"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensormlE6Tensor1T", "Aidge::Tensor::operator*::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*="], [4, 0, 1, "_CPPv4N5Aidge6TensormLERK6Tensor", "Aidge::Tensor::operator*="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensormLERK6Tensor", "Aidge::Tensor::operator*=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormLER6Tensor1T", "Aidge::Tensor::operator*=::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+"], [4, 0, 1, "_CPPv4NK5Aidge6TensorplERK6Tensor", "Aidge::Tensor::operator+"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::VT"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+::VT"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::other"], [4, 1, 1, "_CPPv4NK5Aidge6TensorplERK6Tensor", "Aidge::Tensor::operator+::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensorplE6Tensor1TRK6Tensor", "Aidge::Tensor::operator+::val"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensorplE6Tensor1T", "Aidge::Tensor::operator+::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+="], [4, 0, 1, "_CPPv4N5Aidge6TensorpLERK6Tensor", "Aidge::Tensor::operator+="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensorpLERK6Tensor", "Aidge::Tensor::operator+=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensorpLER6Tensor1T", "Aidge::Tensor::operator+=::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-"], [4, 0, 1, "_CPPv4NK5Aidge6TensormiERK6Tensor", "Aidge::Tensor::operator-"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::VT"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-::VT"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::other"], [4, 1, 1, "_CPPv4NK5Aidge6TensormiERK6Tensor", "Aidge::Tensor::operator-::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormiE6Tensor1TRK6Tensor", "Aidge::Tensor::operator-::val"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensormiE6Tensor1T", "Aidge::Tensor::operator-::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-="], [4, 0, 1, "_CPPv4N5Aidge6TensormIERK6Tensor", "Aidge::Tensor::operator-="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensormIERK6Tensor", "Aidge::Tensor::operator-=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensormIER6Tensor1T", "Aidge::Tensor::operator-=::val"], [4, 0, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/"], [4, 0, 1, "_CPPv4NK5Aidge6TensordvERK6Tensor", "Aidge::Tensor::operator/"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/::T"], [4, 2, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/::VT"], [4, 1, 1, "_CPPv4NK5Aidge6TensordvERK6Tensor", "Aidge::Tensor::operator/::other"], [4, 1, 1, "_CPPv4I00ENK5Aidge6TensordvE6Tensor1T", "Aidge::Tensor::operator/::val"], [4, 0, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/="], [4, 0, 1, "_CPPv4N5Aidge6TensordVERK6Tensor", "Aidge::Tensor::operator/="], [4, 2, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/=::T"], [4, 2, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/=::VT"], [4, 1, 1, "_CPPv4N5Aidge6TensordVERK6Tensor", "Aidge::Tensor::operator/=::other"], [4, 1, 1, "_CPPv4I00EN5Aidge6TensordVER6Tensor1T", "Aidge::Tensor::operator/=::val"], [4, 0, 1, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4N5Aidge6TensoraSERK6Tensor", "Aidge::Tensor::operator="], [4, 0, 1, "_CPPv4N5Aidge6TensoraSERR6Tensor", "Aidge::Tensor::operator="], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_0"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_1"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_2"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::SIZE_3"], [4, 2, 1, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::T"], [4, 2, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::T"], [4, 1, 1, "_CPPv4I0EN5Aidge6TensoraSER6TensorRR6VectorI1TE", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array1DI1T6SIZE_0E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array2DI1T6SIZE_06SIZE_1E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array3DI1T6SIZE_06SIZE_16SIZE_2E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6TensoraSER6TensorRR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E", "Aidge::Tensor::operator=::arr"], [4, 1, 1, "_CPPv4N5Aidge6TensoraSERK6Tensor", "Aidge::Tensor::operator=::other"], [4, 1, 1, "_CPPv4N5Aidge6TensoraSERR6Tensor", "Aidge::Tensor::operator=::other"], [4, 0, 1, "_CPPv4NK5Aidge6TensoreqERK6Tensor", "Aidge::Tensor::operator=="], [4, 1, 1, "_CPPv4NK5Aidge6TensoreqERK6Tensor", "Aidge::Tensor::operator==::otherTensor"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5printEv", "Aidge::Tensor::print"], [4, 0, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref"], [4, 0, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::backend"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::backend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::device"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::dt"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::dt"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::ref::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::targetReqs"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor3refERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::ref::targetReqs"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::dt"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::dt"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refCastERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeE", "Aidge::Tensor::refCast::fallback"], [4, 0, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom"], [4, 0, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::backend"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::backend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::device"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::dt"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::dt"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERKN5Aidge8DataTypeERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refCastFrom::fallback"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::targetReqs"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor11refCastFromERNSt10shared_ptrI6TensorEERK6Tensor", "Aidge::Tensor::refCastFrom::targetReqs"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor13refContiguousERNSt10shared_ptrI6TensorEE", "Aidge::Tensor::refContiguous::fallback"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::backend"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::backend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::device"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::fallback"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor7refFromERNSt10shared_ptrI6TensorEERKNSt6stringE11DeviceIdx_t", "Aidge::Tensor::refFrom::fallback"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6repeatEi", "Aidge::Tensor::repeat"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor6repeatEi", "Aidge::Tensor::repeat::times"], [4, 0, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", "Aidge::Tensor::resize"], [4, 0, 1, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", "Aidge::Tensor::resize"], [4, 2, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", "Aidge::Tensor::resize::DIM"], [4, 1, 1, "_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge6Tensor6resizeEvRKNSt5arrayI9DimSize_t3DIMEE", "Aidge::Tensor::resize::dims"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", "Aidge::Tensor::resize::dims"], [4, 1, 1, "_CPPv4N5Aidge6Tensor6resizeERKNSt6vectorI9DimSize_tEENSt6vectorI9DimSize_tEE", "Aidge::Tensor::resize::strides"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set"], [4, 0, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set::coordIdx"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set::expectedType"], [4, 2, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set::expectedType"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set::idx"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6size_tE12expectedType", "Aidge::Tensor::set::value"], [4, 1, 1, "_CPPv4I0EN5Aidge6Tensor3setEvNSt6vectorINSt6size_tEEE12expectedType", "Aidge::Tensor::set::value"], [4, 0, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend::copyFrom"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend::device"], [4, 1, 1, "_CPPv4N5Aidge6Tensor10setBackendERKNSt6stringE11DeviceIdx_tb", "Aidge::Tensor::setBackend::name"], [4, 0, 1, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", "Aidge::Tensor::setDataFormat"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", "Aidge::Tensor::setDataFormat::copyTrans"], [4, 1, 1, "_CPPv4N5Aidge6Tensor13setDataFormatEK10DataFormatb", "Aidge::Tensor::setDataFormat::df"], [4, 0, 1, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", "Aidge::Tensor::setDataType"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", "Aidge::Tensor::setDataType::copyCast"], [4, 1, 1, "_CPPv4N5Aidge6Tensor11setDataTypeEK8DataTypeb", "Aidge::Tensor::setDataType::dt"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7setGradENSt10shared_ptrI6TensorEE", "Aidge::Tensor::setGrad"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7setGradENSt10shared_ptrI6TensorEE", "Aidge::Tensor::setGrad::newGrad"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", "Aidge::Tensor::setImpl"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", "Aidge::Tensor::setImpl::impl"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7setImplENSt10shared_ptrI10TensorImplEENSt6size_tE", "Aidge::Tensor::setImpl::implOffset"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4sizeEv", "Aidge::Tensor::size"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor4sqrtEv", "Aidge::Tensor::sqrt"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor6strideE8DimIdx_t", "Aidge::Tensor::stride"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor6strideE8DimIdx_t", "Aidge::Tensor::stride::idx"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor7stridesEv", "Aidge::Tensor::strides"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", "Aidge::Tensor::toCoord"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", "Aidge::Tensor::toCoord::dimensions"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toCoordERKNSt6vectorIN5Aidge9DimSize_tEEENSt6size_tE", "Aidge::Tensor::toCoord::index"], [4, 0, 1, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::toIndex"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::toIndex::coords"], [4, 1, 1, "_CPPv4N5Aidge6Tensor7toIndexERKNSt6vectorI9DimSize_tEERKNSt6vectorINSt6size_tEEE", "Aidge::Tensor::toIndex::dimensions"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", "Aidge::Tensor::toString"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", "Aidge::Tensor::toString::offset"], [4, 1, 1, "_CPPv4NK5Aidge6Tensor8toStringEiNSt6size_tE", "Aidge::Tensor::toString::precision"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor9undefinedEv", "Aidge::Tensor::undefined"], [4, 0, 1, "_CPPv4NK5Aidge6Tensor5zerosEv", "Aidge::Tensor::zeros"], [4, 0, 1, "_CPPv4N5Aidge6TensorD0Ev", "Aidge::Tensor::~Tensor"], [9, 0, 1, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Transpose"], [9, 1, 1, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Transpose::name"], [9, 1, 1, "_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE", "Aidge::Transpose::outputDimsOrder"], [10, 0, 1, "_CPPv4N5Aidge14adaptToBackendENSt10shared_ptrI9GraphViewEE", "Aidge::adaptToBackend"], [10, 1, 1, "_CPPv4N5Aidge14adaptToBackendENSt10shared_ptrI9GraphViewEE", "Aidge::adaptToBackend::graph"], [10, 0, 1, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", "Aidge::constantFolding"], [10, 1, 1, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", "Aidge::constantFolding::constantShape"], [10, 1, 1, "_CPPv4N5Aidge15constantFoldingENSt10shared_ptrI9GraphViewEEb", "Aidge::constantFolding::graph"], [10, 0, 1, "_CPPv4N5Aidge12convToMatMulENSt10shared_ptrI9GraphViewEE", "Aidge::convToMatMul"], [10, 1, 1, "_CPPv4N5Aidge12convToMatMulENSt10shared_ptrI9GraphViewEE", "Aidge::convToMatMul::graph"], [10, 0, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb", "Aidge::expandMetaOps"], [10, 1, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb", "Aidge::expandMetaOps::graph"], [10, 1, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb", "Aidge::expandMetaOps::nameFormat"], [10, 1, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb", "Aidge::expandMetaOps::recursive"], [10, 1, 1, "_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb", "Aidge::expandMetaOps::uniqueName"], [10, 0, 1, "_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE", "Aidge::explicitCastMove"], [10, 1, 1, "_CPPv4N5Aidge16explicitCastMoveENSt10shared_ptrI9GraphViewEE", "Aidge::explicitCastMove::graphView"], [10, 0, 1, "_CPPv4N5Aidge17explicitTransposeENSt10shared_ptrI9GraphViewEE", "Aidge::explicitTranspose"], [10, 1, 1, "_CPPv4N5Aidge17explicitTransposeENSt10shared_ptrI9GraphViewEE", "Aidge::explicitTranspose::graphView"], [10, 0, 1, "_CPPv4N5Aidge13fuseBatchNormENSt10shared_ptrI9GraphViewEE", "Aidge::fuseBatchNorm"], [10, 1, 1, "_CPPv4N5Aidge13fuseBatchNormENSt10shared_ptrI9GraphViewEE", "Aidge::fuseBatchNorm::graphView"], [10, 0, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps"], [10, 1, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps::gm"], [10, 1, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps::query"], [10, 1, 1, "_CPPv4N5Aidge13fuseToMetaOpsER23SinglePassGraphMatchingRKNSt6stringERKNSt6stringE", "Aidge::fuseToMetaOps::type"], [6, 0, 1, "_CPPv4N5Aidge13generateGraphERKNSt6vectorI9ConnectorEE", "Aidge::generateGraph"], [6, 1, 1, "_CPPv4N5Aidge13generateGraphERKNSt6vectorI9ConnectorEE", "Aidge::generateGraph::ctors"], [6, 0, 1, "_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE", "Aidge::getConnectedGraphView"], [6, 1, 1, "_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE", "Aidge::getConnectedGraphView::node"], [10, 0, 1, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", "Aidge::matMulTiling"], [10, 1, 1, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", "Aidge::matMulTiling::matMul"], [10, 1, 1, "_CPPv4N5Aidge12matMulTilingE7NodePtrRKNSt6vectorI9DimSize_tEE", "Aidge::matMulTiling::maxDims"], [10, 0, 1, "_CPPv4N5Aidge10matMulToFCENSt10shared_ptrI9GraphViewEE", "Aidge::matMulToFC"], [10, 1, 1, "_CPPv4N5Aidge10matMulToFCENSt10shared_ptrI9GraphViewEE", "Aidge::matMulToFC::graphView"], [10, 0, 1, "_CPPv4N5Aidge13removeDropoutENSt10shared_ptrI9GraphViewEE", "Aidge::removeDropout"], [10, 1, 1, "_CPPv4N5Aidge13removeDropoutENSt10shared_ptrI9GraphViewEE", "Aidge::removeDropout::graphView"], [10, 0, 1, "_CPPv4N5Aidge13removeFlattenENSt10shared_ptrI9GraphViewEE", "Aidge::removeFlatten"], [10, 1, 1, "_CPPv4N5Aidge13removeFlattenENSt10shared_ptrI9GraphViewEE", "Aidge::removeFlatten::graphView"], [2, 0, 1, "_CPPv4N5Aidge12tensorOpencvEN2cv3MatE", "Aidge::tensorOpencv"], [2, 1, 1, "_CPPv4N5Aidge12tensorOpencvEN2cv3MatE", "Aidge::tensorOpencv::mat"], [12, 0, 1, "_CPPv49calibrate23calibration_folder_path15cache_file_path10batch_size", "calibrate"], [12, 0, 1, "_CPPv46device2id", "device"], [12, 0, 1, "_CPPv410initializev", "initialize"], [12, 0, 1, "_CPPv44load8filepath", "load"], [12, 0, 1, "_CPPv47profile13nb_iterations4mode", "profile"], [12, 0, 1, "_CPPv48run_sync6inputs", "run_sync"], [12, 0, 1, "_CPPv44save8filepath", "save"]], "aidge_backend_opencv": [[2, 8, 1, "", "MNIST"]], "aidge_backend_opencv.MNIST": [[2, 9, 1, "", "__init__"], [2, 9, 1, "", "get_item"], [2, 9, 1, "", "get_len"], [2, 9, 1, "", "get_nb_modalities"], [2, 9, 1, "", "len"]], "aidge_core": [[9, 10, 1, "", "Add"], [9, 10, 1, "", "AvgPooling1D"], [9, 10, 1, "", "AvgPooling2D"], [9, 10, 1, "", "AvgPooling3D"], [9, 10, 1, "", "BatchNorm2D"], [9, 10, 1, "", "Concat"], [6, 8, 1, "", "Connector"], [9, 10, 1, "", "Conv1D"], [9, 10, 1, "", "Conv2D"], [9, 10, 1, "", "ConvDepthWise1D"], [9, 10, 1, "", "ConvDepthWise2D"], [4, 8, 1, "", "DataProvider"], [9, 10, 1, "", "Div"], [9, 10, 1, "", "Erf"], [9, 10, 1, "", "FC"], [9, 10, 1, "", "Gather"], [9, 10, 1, "", "GenericOperator"], [6, 8, 1, "", "GraphView"], [3, 8, 1, "", "IOSpec"], [9, 10, 1, "", "Identity"], [3, 8, 1, "", "ImplSpec"], [9, 10, 1, "", "LSTM"], [9, 10, 1, "", "LeakyReLU"], [9, 10, 1, "", "MatMul"], [9, 10, 1, "", "Mul"], [6, 8, 1, "", "Node"], [9, 8, 1, "", "Operator"], [9, 8, 1, "", "OperatorTensor"], [9, 10, 1, "", "PaddedAvgPooling2D"], [9, 10, 1, "", "PaddedConv1D"], [9, 10, 1, "", "PaddedConv2D"], [9, 10, 1, "", "PaddedConvDepthWise1D"], [9, 10, 1, "", "PaddedConvDepthWise2D"], [9, 10, 1, "", "PaddedMaxPooling2D"], [11, 8, 1, "", "ParallelScheduler"], [9, 10, 1, "", "Pop"], [9, 10, 1, "", "Pow"], [9, 10, 1, "", "Producer"], [9, 10, 1, "", "ReLU"], [9, 10, 1, "", "ReduceMean"], [9, 10, 1, "", "Reshape"], [11, 8, 1, "", "Scheduler"], [11, 8, 1, "", "SequentialScheduler"], [9, 10, 1, "", "Sigmoid"], [7, 8, 1, "", "SinglePassGraphMatching"], [9, 10, 1, "", "Slice"], [9, 10, 1, "", "Softmax"], [9, 10, 1, "", "Sqrt"], [9, 10, 1, "", "Sub"], [9, 10, 1, "", "Tanh"], [4, 8, 1, "", "Tensor"], [9, 10, 1, "", "Transpose"], [10, 10, 1, "", "adapt_to_backend"], [10, 10, 1, "", "expand_metaops"], [10, 10, 1, "", "fuse_batchnorm"], [10, 10, 1, "", "fuse_to_metaops"], [6, 10, 1, "", "generate_graph"], [6, 10, 1, "", "get_connected_graph_view"], [10, 10, 1, "", "matmul_to_fc"], [9, 10, 1, "", "meta_operator"], [6, 10, 1, "", "parallel"], [10, 10, 1, "", "remove_flatten"], [6, 10, 1, "", "residual"], [6, 10, 1, "", "sequential"]], "aidge_core.Connector": [[6, 9, 1, "", "__init__"]], "aidge_core.DataProvider": [[4, 9, 1, "", "__init__"]], "aidge_core.GraphView": [[6, 9, 1, "", "__init__"], [6, 9, 1, "", "add"], [6, 9, 1, "", "add_child"], [6, 9, 1, "", "add_ordered_outputs"], [6, 9, 1, "", "clone"], [6, 9, 1, "", "compile"], [6, 9, 1, "", "forward_dims"], [6, 9, 1, "", "forward_dtype"], [6, 9, 1, "", "get_input_nodes"], [6, 9, 1, "", "get_node"], [6, 9, 1, "", "get_nodes"], [6, 9, 1, "", "get_ordered_inputs"], [6, 9, 1, "", "get_ordered_nodes"], [6, 9, 1, "", "get_ordered_outputs"], [6, 9, 1, "", "get_output_nodes"], [6, 9, 1, "", "get_ranked_nodes"], [6, 9, 1, "", "get_ranked_nodes_name"], [6, 9, 1, "", "in_view"], [6, 9, 1, "", "inputs"], [6, 9, 1, "", "insert_parent"], [6, 9, 1, "", "log_outputs"], [6, 9, 1, "", "outputs"], [6, 9, 1, "", "replace"], [6, 9, 1, "", "root_node"], [6, 9, 1, "", "save"], [6, 9, 1, "", "set_backend"], [6, 9, 1, "", "set_dataformat"], [6, 9, 1, "", "set_datatype"], [6, 9, 1, "", "set_name"], [6, 9, 1, "", "set_ordered_inputs"], [6, 9, 1, "", "set_ordered_outputs"], [6, 9, 1, "", "set_root_node"]], "aidge_core.IOSpec": [[3, 9, 1, "", "__init__"]], "aidge_core.ImplSpec": [[3, 9, 1, "", "__init__"]], "aidge_core.Node": [[6, 9, 1, "", "__init__"], [6, 9, 1, "", "add_child"], [6, 9, 1, "", "attributes"], [6, 9, 1, "", "clone"], [6, 9, 1, "", "create_unique_name"], [6, 9, 1, "", "get_children"], [6, 9, 1, "", "get_nb_inputs"], [6, 9, 1, "", "get_nb_outputs"], [6, 9, 1, "", "get_operator"], [6, 9, 1, "", "get_ordered_children"], [6, 9, 1, "", "get_parent"], [6, 9, 1, "", "get_parents"], [6, 9, 1, "", "input"], [6, 9, 1, "", "input_category"], [6, 9, 1, "", "input_name"], [6, 9, 1, "", "inputs"], [6, 9, 1, "", "inputs_names"], [6, 9, 1, "", "name"], [6, 9, 1, "", "output"], [6, 9, 1, "", "output_name"], [6, 9, 1, "", "outputs"], [6, 9, 1, "", "outputs_names"], [6, 9, 1, "", "set_name"], [6, 9, 1, "", "type"]], "aidge_core.Operator": [[9, 9, 1, "", "__init__"], [9, 9, 1, "", "associate_input"], [9, 9, 1, "", "backend"], [9, 9, 1, "", "clone"], [9, 9, 1, "", "forward"], [9, 9, 1, "", "get_impl"], [9, 9, 1, "", "get_raw_input"], [9, 9, 1, "", "get_raw_output"], [9, 9, 1, "", "input_category"], [9, 9, 1, "", "is_atomic"], [9, 9, 1, "", "is_back_edge"], [9, 9, 1, "", "is_optional_input"], [9, 9, 1, "", "nb_inputs"], [9, 9, 1, "", "nb_outputs"], [9, 9, 1, "", "set_back_edges"], [9, 9, 1, "", "set_backend"], [9, 9, 1, "", "set_dataformat"], [9, 9, 1, "", "set_datatype"], [9, 9, 1, "", "set_impl"], [9, 9, 1, "", "set_input"], [9, 9, 1, "", "set_output"], [9, 9, 1, "", "type"]], "aidge_core.OperatorTensor": [[9, 9, 1, "", "__init__"], [9, 9, 1, "", "associate_input"], [9, 9, 1, "", "backend"], [9, 9, 1, "", "clone"], [9, 9, 1, "", "dims_forwarded"], [9, 9, 1, "", "forward"], [9, 9, 1, "", "forward_dims"], [9, 9, 1, "", "forward_dtype"], [9, 9, 1, "", "get_impl"], [9, 9, 1, "", "get_input"], [9, 9, 1, "", "get_inputs"], [9, 9, 1, "", "get_output"], [9, 9, 1, "", "get_outputs"], [9, 9, 1, "", "get_raw_input"], [9, 9, 1, "", "get_raw_output"], [9, 9, 1, "", "input_category"], [9, 9, 1, "", "is_atomic"], [9, 9, 1, "", "is_back_edge"], [9, 9, 1, "", "is_optional_input"], [9, 9, 1, "", "nb_inputs"], [9, 9, 1, "", "nb_outputs"], [9, 9, 1, "", "set_back_edges"], [9, 9, 1, "", "set_backend"], [9, 9, 1, "", "set_dataformat"], [9, 9, 1, "", "set_datatype"], [9, 9, 1, "", "set_impl"], [9, 9, 1, "", "set_input"], [9, 9, 1, "", "set_output"], [9, 9, 1, "", "type"]], "aidge_core.ParallelScheduler": [[11, 9, 1, "", "__init__"], [11, 9, 1, "", "clear_scheduling"], [11, 9, 1, "", "forward"], [11, 9, 1, "", "generate_scheduling"], [11, 9, 1, "", "get_backward_scheduling"], [11, 9, 1, "", "get_forward_scheduling"], [11, 9, 1, "", "get_sequential_static_scheduling"], [11, 9, 1, "", "get_static_scheduling"], [11, 9, 1, "", "graph_view"], [11, 9, 1, "", "reset_scheduling"], [11, 9, 1, "", "save_factorized_static_scheduling_diagram"], [11, 9, 1, "", "save_scheduling_diagram"], [11, 9, 1, "", "save_static_scheduling_diagram"], [11, 9, 1, "", "tag_conditional_nodes"]], "aidge_core.Scheduler": [[11, 9, 1, "", "__init__"], [11, 9, 1, "", "clear_scheduling"], [11, 9, 1, "", "generate_scheduling"], [11, 9, 1, "", "get_backward_scheduling"], [11, 9, 1, "", "get_forward_scheduling"], [11, 9, 1, "", "get_sequential_static_scheduling"], [11, 9, 1, "", "get_static_scheduling"], [11, 9, 1, "", "graph_view"], [11, 9, 1, "", "reset_scheduling"], [11, 9, 1, "", "save_factorized_static_scheduling_diagram"], [11, 9, 1, "", "save_scheduling_diagram"], [11, 9, 1, "", "save_static_scheduling_diagram"], [11, 9, 1, "", "tag_conditional_nodes"]], "aidge_core.SequentialScheduler": [[11, 9, 1, "", "__init__"], [11, 9, 1, "", "backward"], [11, 9, 1, "", "clear_scheduling"], [11, 9, 1, "", "forward"], [11, 9, 1, "", "generate_memory"], [11, 9, 1, "", "generate_memory_auto_concat"], [11, 9, 1, "", "generate_scheduling"], [11, 9, 1, "", "get_backward_scheduling"], [11, 9, 1, "", "get_forward_scheduling"], [11, 9, 1, "", "get_sequential_static_scheduling"], [11, 9, 1, "", "get_static_scheduling"], [11, 9, 1, "", "graph_view"], [11, 9, 1, "", "reset_scheduling"], [11, 9, 1, "", "save_factorized_static_scheduling_diagram"], [11, 9, 1, "", "save_scheduling_diagram"], [11, 9, 1, "", "save_static_scheduling_diagram"], [11, 9, 1, "", "set_scheduling_policy"], [11, 9, 1, "", "tag_conditional_nodes"]], "aidge_core.SinglePassGraphMatching": [[7, 9, 1, "", "__init__"], [7, 9, 1, "", "add_node_lambda"], [7, 9, 1, "", "match"]], "aidge_core.Tensor": [[4, 9, 1, "", "__init__"], [4, 9, 1, "", "abs"], [4, 9, 1, "", "backend"], [4, 9, 1, "", "capacity"], [4, 9, 1, "", "clone"], [4, 9, 1, "", "cpy_transpose"], [4, 9, 1, "", "dformat"], [4, 9, 1, "", "dims"], [4, 9, 1, "", "dtype"], [4, 9, 1, "", "get_available_backends"], [4, 9, 1, "", "get_coord"], [4, 9, 1, "", "get_idx"], [4, 9, 1, "", "grad"], [4, 9, 1, "", "has_impl"], [4, 9, 1, "", "mean"], [4, 9, 1, "", "resize"], [4, 9, 1, "", "set_backend"], [4, 9, 1, "", "set_data_format"], [4, 9, 1, "", "set_datatype"], [4, 9, 1, "", "set_grad"], [4, 9, 1, "", "size"], [4, 9, 1, "", "sqrt"], [4, 9, 1, "", "stride"], [4, 9, 1, "", "strides"], [4, 9, 1, "", "undefined"], [4, 9, 1, "", "zeros"]], "aidge_core.export_utils": [[5, 8, 1, "", "ExportLib"], [5, 8, 1, "", "ExportNode"], [5, 8, 1, "", "ExportNodeCpp"], [5, 10, 1, "", "scheduler_export"]], "aidge_core.export_utils.ExportLib": [[5, 9, 1, "", "__init__"], [5, 9, 1, "", "backend"], [5, 9, 1, "", "backward"], [5, 9, 1, "", "forward"], [5, 9, 1, "", "get_adaptation"], [5, 9, 1, "", "get_available_impl_specs"], [5, 9, 1, "", "get_best_adaptation"], [5, 9, 1, "", "get_best_match"], [5, 9, 1, "", "get_export_node"], [5, 9, 1, "", "get_operator"], [5, 9, 1, "", "get_prod_conso"], [5, 9, 1, "", "get_required_spec"], [5, 9, 1, "", "prod_conso"], [5, 9, 1, "", "register"], [5, 9, 1, "", "register_generic"], [5, 9, 1, "", "register_metaop"]], "aidge_core.export_utils.ExportNode": [[5, 9, 1, "", "__init__"]], "aidge_core.export_utils.ExportNodeCpp": [[5, 9, 1, "", "__init__"], [5, 9, 1, "", "add_kernel_to_copy"], [5, 9, 1, "", "export"], [5, 9, 1, "", "forward"], [5, 9, 1, "", "reformat_kernels_to_copy"]], "aidge_export_tensorrt": [[12, 10, 1, "", "export"]], "aidge_onnx": [[13, 10, 1, "", "export_onnx"], [13, 10, 1, "", "load_onnx"]], "aidge_onnx.node_export": [[13, 10, 1, "", "auto_register_export"], [13, 10, 1, "", "register_export"], [13, 10, 1, "", "supported_operators"]], "aidge_onnx.node_export.generic_export": [[13, 10, 1, "", "generic_export"]], "aidge_onnx.node_import": [[13, 11, 1, "", "ONNX_NODE_CONVERTER_"], [13, 10, 1, "", "auto_register_import"], [13, 10, 1, "", "register_import"], [13, 10, 1, "", "supported_operators"]], "aidge_onnx.node_import.generic": [[13, 10, 1, "", "import_generic"]]}, "objnames": {"0": ["cpp", "function", "C++ function"], "1": ["cpp", "functionParam", "C++ function parameter"], "2": ["cpp", "templateParam", "C++ template parameter"], "3": ["cpp", "class", "C++ class"], "4": ["cpp", "member", "C++ member"], "5": ["cpp", "enum", "C++ enum"], "6": ["cpp", "enumerator", "C++ enumerator"], "7": ["cpp", "union", "C++ union"], "8": ["py", "class", "Python class"], "9": ["py", "method", "Python method"], "10": ["py", "function", "Python function"], "11": ["py", "data", "Python data"]}, "objtypes": {"0": "cpp:function", "1": "cpp:functionParam", "2": "cpp:templateParam", "3": "cpp:class", "4": "cpp:member", "5": "cpp:enum", "6": "cpp:enumerator", "7": "cpp:union", "8": "py:class", "9": "py:method", "10": "py:function", "11": "py:data"}, "terms": {"": [0, 4, 5, 6, 9, 10, 11, 12, 17, 18, 19, 20, 23, 24, 27, 28, 30, 31, 33, 34, 35, 41, 45, 47], "0": [0, 4, 5, 6, 7, 9, 10, 11, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 46, 49], "00": [23, 30, 33], "000": 31, "000000": [23, 26], "01": [30, 31, 33], "02": 31, "03": 31, "04": [19, 31], "0443442": 20, "05": 31, "06": [9, 31], "0625": 30, "07": 31, "07mb": 23, "08": 31, "09": 31, "0996679": 20, "099668": 20, "0e": 9, "0f": 9, "0mb": 33, "0x1b": [23, 24], "1": [0, 3, 4, 5, 6, 7, 9, 10, 11, 12, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 37, 49], "10": [4, 6, 19, 20, 21, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34], "100": [19, 23, 25, 30, 31, 33], "10000000149011612": 9, "101": 27, "101_first_step": [19, 22], "102": 26, "104": 31, "11": [19, 23, 24, 26, 27, 30, 31, 33, 34], "112": 6, "1122966": 20, "12": [19, 23, 24, 26, 27, 30, 31, 33, 34], "120": 21, "125": 23, "127": 26, "128": 30, "13": [19, 23, 24, 26, 30, 31, 33, 34], "13579765": 20, "139": 23, "13954135": 20, "14": [19, 20, 23, 24, 26, 30, 31, 33, 35], "15": [19, 20, 23, 24, 26, 30, 31, 33], "150": 33, "1513": 27, "1514": 27, "1515": 27, "1516": 27, "1517": 27, "1518": 27, "1519": 27, "1520": 27, "1521": 27, "1522": 27, "1523": 27, "1536": 33, "159": 33, "16": [19, 20, 21, 23, 24, 26, 28, 30, 31, 32, 33, 37], "161": 19, "162": 19, "163": 19, "164": 19, "165": 19, "16bit": [39, 46], "16x16": 10, "17": [19, 20, 23, 24, 26, 30, 31, 33], "172": 19, "173": 19, "174": 19, "175": 19, "176": 19, "18": [6, 19, 20, 33], "18512852": 20, "19": [0, 19, 20, 23, 24, 26, 31], "192": 30, "199": 30, "1d": [4, 46], "1e": 19, "1f": 9, "2": [0, 4, 5, 6, 7, 9, 10, 11, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 37, 49], "20": [19, 23, 24, 25, 30, 31], "200": [20, 22, 31], "2017": [23, 26, 30], "2025": [0, 23, 26, 30], "20392664": 20, "205": 19, "206": 19, "207": 19, "208": 19, "209": [19, 33], "21": [19, 23, 26, 30], "210": 19, "211": 19, "212": 19, "216": 23, "22": [5, 19], "224": [6, 19, 33], "224x224": 27, "225": 19, "226": 19, "226176": 33, "228": 19, "229": 19, "23": [5, 19], "24": [5, 19, 30, 33], "2406125": 20, "24236728": 20, "24839124": 20, "25": [5, 10, 19, 33], "252": 27, "253": 27, "254": 27, "255": [23, 25, 26, 27], "256": [27, 30, 33], "257": [27, 33], "26": [19, 23, 26, 30], "2689649": 20, "27": [19, 30], "277": 33, "28": [19, 21, 23, 24, 25, 26, 31], "29": [5, 19], "2bcpu": 30, "2d": [18, 37, 46], "3": [4, 6, 9, 10, 16, 19, 20, 22, 23, 24, 26, 28, 30, 31, 32, 33, 34, 35, 37, 49], "30": [5, 19, 24], "300px": [23, 26], "30561584": 20, "30594590306282043": 30, "31": [5, 24, 25], "310586": 20, "3125": 30, "32": [5, 23, 24, 26, 30, 32, 34, 37], "320": 30, "322916666666666": 30, "32bit": [39, 46], "33": 24, "33549389243125916": 30, "34": [19, 23, 24, 27, 32], "3463484048843384": 30, "3479292": 20, "349k": 23, "35": 24, "3502": 27, "3504": 27, "3505": 27, "3506": 27, "3507": 27, "36": [19, 23, 24, 26, 30], "37": 24, "374999999999998": 30, "38": [19, 24, 33], "384": [30, 33], "39": [19, 20, 23, 24, 26, 27, 28, 31, 33], "3947506": 20, "3985453": 20, "3d": [32, 46], "3f": 31, "3rd": 6, "3x3": [28, 32, 49], "4": [2, 4, 6, 9, 19, 20, 21, 22, 23, 24, 26, 28, 30, 31, 32, 33, 34, 37], "40": [19, 30], "41": [23, 26], "415": 27, "416": 27, "417": 27, "418": 27, "419": 27, "4294967295": 6, "449": [19, 24], "450": [19, 24], "451": [19, 24], "452": [19, 24], "454": [19, 24], "460281": 20, "486709862947464": 30, "49": 33, "4923961": 20, "4d": 46, "5": [4, 6, 9, 10, 19, 20, 21, 22, 23, 24, 26, 27, 28, 30, 31, 32, 33, 34, 37], "50": [6, 33], "500": 27, "51": [23, 26], "512": [28, 30, 32], "519796": 20, "52": 24, "5249792": 20, "53": 24, "54": [24, 27], "55": [24, 27], "56": [24, 27], "5616523027420044": 30, "57": [24, 27], "58": 27, "59": [24, 31], "590208": 33, "591360": 33, "591370": 33, "5d": 46, "5f": 9, "6": [0, 9, 12, 19, 20, 21, 22, 23, 24, 26, 27, 30, 31, 33, 34, 37], "60": 24, "62": 31, "625": 30, "63": 32, "6382758": 20, "64": [6, 30, 37], "64x64": 37, "65535": 6, "66": 34, "67": 31, "6773143": 20, "6773148": 20, "69": 31, "7": [9, 16, 19, 20, 22, 23, 24, 26, 27, 30, 31, 32, 33, 34, 37], "71": 28, "71598424": 20, "72": 33, "7233275": 20, "73": [28, 33], "74": 28, "75": [28, 31], "76": 28, "77": 28, "770": 33, "78": 28, "79": 28, "7916586995124817": 30, "7m": 33, "8": [12, 16, 19, 20, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37], "80": 28, "8080": 27, "80x80": 10, "81": 28, "81001099": 20, "82": [28, 33], "824": 33, "83": 28, "84": [21, 28, 33], "85": [28, 31], "86": 28, "87": 28, "8739378": 20, "88": 28, "89": [28, 31], "8982372": 20, "8bit": [39, 46], "9": [9, 19, 20, 22, 23, 24, 26, 27, 30, 31, 33, 34, 49], "90": 31, "91": 31, "93": 31, "9375": 30, "94": 31, "95": 31, "96230666": 20, "9633999999999999": 22, "97": 31, "979166666666668": 30, "98370683": 20, "98688": 33, "99": 31, "99051021": 20, "999999747378752e": 9, "A": [4, 5, 6, 7, 9, 11, 12, 13, 18, 28, 32, 35, 37, 46, 49], "AND": [4, 49], "And": [19, 20, 25, 28], "As": [6, 9, 18, 19, 20, 28, 31, 32, 39, 46], "At": [19, 32], "But": 31, "By": [7, 16, 28, 32], "For": [0, 4, 9, 10, 11, 16, 18, 19, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 37, 39, 40, 41, 46, 49], "IN": 6, "If": [4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 20, 27, 29, 31, 32, 40, 45, 49], "In": [4, 6, 7, 11, 18, 19, 20, 23, 24, 27, 28, 30, 31, 32, 33, 35, 39, 40, 49], "It": [4, 5, 6, 7, 9, 11, 13, 18, 19, 28, 32, 40, 46, 49], "Its": 18, "NOT": 49, "No": [4, 6, 18, 19, 20, 24, 27, 30, 31], "Not": [6, 9, 46], "ON": 16, "OR": 49, "Of": 32, "One": [6, 7, 19, 28, 32, 49], "Such": 46, "TO": 27, "That": [6, 31, 35, 39], "The": [0, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 19, 20, 21, 24, 27, 28, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 45, 46, 49], "Then": [6, 16, 20, 27, 31], "There": [6, 32, 41], "These": [19, 40, 41, 46, 47], "To": [6, 7, 16, 19, 27, 28, 29, 30, 31, 32, 33, 37, 46, 49], "With": [6, 19, 32, 40], "_": [20, 27, 33], "__": 32, "__file__": 24, "__getitem__": 30, "__init__": [2, 3, 4, 5, 6, 7, 9, 11, 19, 20, 21, 24, 27, 30, 32], "__main__": 27, "__name__": 27, "_add": 20, "_div": 20, "_export_int8": 25, "_get_file_path": 19, "_get_seri": 19, "_in": 6, "_input": 20, "_input_": 5, "_load_byt": 19, "_load_onnx2graphview": 19, "_maxpool": 9, "_mnist": 25, "_mul": 20, "_name": 5, "_npyio_impl": [19, 24], "_output_": 5, "_pad": 9, "_pil_png_to_float_arrai": 27, "_pow": 20, "_start": [23, 24], "_supportedformat": 19, "a002": 19, "aa": 49, "aaa": 49, "ab": 4, "abil": 35, "abl": [6, 19, 27, 30, 36, 40, 46, 49], "about": [27, 31, 33, 40], "abov": [7, 20, 32, 49], "abs_op": 9, "absenc": 28, "abspath": [19, 24, 28, 32], "abstract": [0, 4, 5, 9, 19, 37, 49], "acc": [30, 31], "acceler": [10, 18], "accept": [4, 9, 25, 27], "access": [4, 5, 19, 34, 35, 36, 42], "accessor": 6, "accesss": 19, "accord": [4, 6, 31, 35, 37, 39, 40, 41, 46], "account": [6, 40, 47], "accross": 28, "accumul": 48, "accur": 27, "accuraci": [22, 25, 30, 36, 41], "achiev": [32, 37, 40, 42], "across": 9, "act": [19, 32], "action": [5, 40], "activ": [9, 16, 24, 31, 46], "actual": [4, 6, 10, 11, 18, 32, 39], "acycl": [6, 11, 18], "ad": [0, 5, 6, 9, 19, 25, 27, 32, 37, 41, 45, 49], "adapt": [5, 19, 35, 40], "adapt_to_backend": [10, 19], "adapttobackend": 10, "add": [5, 6, 7, 11, 13, 18, 19, 20, 27, 28, 33, 35, 46, 47], "add1": 6, "add2": 28, "add_child": [6, 20, 24, 28], "add_kernel_to_copi": 5, "add_node_lambda": [7, 18, 28], "add_op": [9, 20], "add_ordered_output": 6, "addafterbackward": 6, "addafterforward": 6, "addbeforebackward": 6, "addbeforeforward": 6, "addchild": 6, "addit": [4, 5, 7, 9, 28, 33, 35, 49], "addition": [6, 12], "additionn": [6, 28], "addnodelambda": 7, "addop": 9, "addorderedoutput": 6, "address": [9, 31], "addview": 6, "adequ": 27, "advanc": 18, "advantag": 32, "affect": [6, 31], "after": [0, 4, 6, 9, 10, 11, 25, 27, 31, 33, 40, 41, 46, 47], "again": [7, 20, 28, 31, 32], "against": 35, "aggress": 31, "agnost": [15, 39, 40, 46], "agreg": 48, "ai": 32, "aidg": [3, 4, 5, 6, 7, 9, 10, 11, 14, 15, 16, 17, 21, 27, 28, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49], "aidge2c": 24, "aidge_backend_cpu": [16, 19, 20, 22, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34], "aidge_backend_cuda": [21, 25, 30], "aidge_backend_opencv": [2, 22], "aidge_cifar10": 30, "aidge_cmp": 25, "aidge_cor": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34], "aidge_databas": 30, "aidge_dataprovid": 30, "aidge_export_arm_cortexm": 26, "aidge_export_cpp": [19, 23, 24, 25, 26], "aidge_export_tensorrt": [12, 27], "aidge_instal": 16, "aidge_learn": 30, "aidge_model": [31, 32], "aidge_nod": [5, 13], "aidge_node_converter_": 13, "aidge_onnx": [13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 32, 33, 34], "aidge_quant": [19, 25, 31], "aidge_tensor": 23, "aidge_trt": 27, "aim": [34, 35, 40, 49], "algorithm": [6, 11, 19, 31, 32, 35, 39, 46], "all": [4, 5, 6, 7, 9, 10, 11, 16, 19, 27, 28, 30, 31, 32, 34, 37, 40, 41, 45, 46, 49], "allclos": 19, "allexpr": 49, "alloc": [4, 5, 11, 40], "allow": [5, 6, 7, 9, 11, 12, 18, 19, 20, 27, 28, 31, 32, 35, 37, 41, 42, 45, 46, 48], "allow_data_depend": [6, 9, 19, 32, 33], "allow_pickl": [19, 24], "allowdatadepend": [6, 9], "allowzero": 9, "alon": 32, "along": [4, 5, 6, 9, 12, 18, 32], "alreadi": [4, 6, 7, 19, 21, 22, 23, 26, 28, 30, 31, 40, 41, 46, 49], "also": [4, 5, 6, 7, 9, 13, 17, 19, 20, 25, 27, 28, 31, 32, 35, 37, 39, 40], "altern": 9, "although": 28, "alwai": [4, 7, 18, 28, 32], "amazonaw": 22, "ambigu": 6, "ambit": 0, "among": [6, 40], "amount": [9, 11, 18, 27, 32], "amp": 19, "an": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 21, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 41, 42, 45, 47, 48, 49], "analysi": 41, "analyz": 9, "ancestor": 6, "anchor": [7, 28], "and_op": 9, "ani": [3, 4, 6, 7, 9, 10, 18, 19, 23, 27, 29, 32, 46, 49], "annot": 9, "anoth": [4, 6, 9, 11, 16, 18, 24, 32, 35, 39, 40, 46], "anymor": 32, "anyth": 32, "anytim": [19, 32], "anywher": [7, 28, 32], "api": [0, 5, 6, 19, 27, 30, 35, 40, 41, 42], "app": 12, "appear": [6, 28, 49], "appen": 6, "append": [5, 19, 23, 24, 25, 26, 28, 31, 32], "appli": [5, 6, 9, 10, 19, 28, 37, 46], "applic": [0, 5, 19, 27, 32, 36, 40], "approach": [0, 5, 20, 31], "appropri": 37, "approxim": [0, 27], "ar": [4, 5, 6, 7, 9, 10, 11, 12, 16, 18, 19, 21, 27, 28, 32, 34, 35, 37, 39, 40, 41, 42, 46, 49], "arang": 20, "arbitrari": [6, 11, 18, 32], "architectur": [18, 19, 31, 49], "area": 9, "aren": 6, "arg": [3, 6, 9, 10, 11, 13, 19], "arg0": [4, 5, 6], "arg1": 5, "argmax": [19, 20, 22, 25, 31], "argmax_op": 9, "argsep": 49, "argument": [4, 5, 6, 7, 10, 13, 27, 28, 32], "arithmet": [0, 4], "around": 42, "arr": 4, "arrai": [4, 6, 9, 19, 20, 21, 22, 23, 25, 26, 27, 30, 31, 34, 37, 42], "array1d": [4, 6], "array2d": 4, "array3d": 4, "array4d": 4, "array5d": 4, "array_nam": [19, 24, 26], "art": 15, "ascii": [20, 22], "ask": 6, "aslateasposs": 11, "assert": [4, 6, 19], "assess": [4, 6, 25], "associ": [4, 5, 6, 9, 11, 13, 18, 32, 35, 37, 39, 40, 46], "associate_input": 9, "associateinput": 9, "assoonasposs": 11, "assum": [4, 7, 21, 28, 32, 40], "assumpt": [9, 18], "ast": 49, "asttoken": [23, 26], "astyp": [6, 19, 20, 21, 23, 25, 26, 34], "async": 12, "atan": 20, "atan_op": 9, "atom": 20, "attach": [20, 31, 47], "attack": 35, "attempt": 30, "attr": [3, 6, 9, 20, 24, 28], "attrdict": 3, "attribut": [4, 5, 6, 7, 9, 11, 18, 19, 20, 32, 39, 46, 49], "attrs_": 3, "audit": 40, "auto": [6, 9, 11, 23, 26], "auto_regist": 13, "auto_register_export": 13, "auto_register_import": [13, 20], "automat": [1, 5, 6, 9, 12, 19, 32, 49], "avaialbl": 1, "avail": [0, 4, 5, 6, 9, 10, 11, 12, 18, 19, 31, 32, 35, 39, 40, 42, 45, 46], "availabledatastatu": 11, "averag": [12, 46], "averagepool": [9, 20], "avgpool": 9, "avgpool1d": 46, "avgpool2d": 46, "avgpool3d": 46, "avgpooling1d": 9, "avgpooling2d": 9, "avgpooling3d": 9, "avgpooling_op": 9, "avoid": [6, 7, 20, 28, 49], "awar": [32, 41], "ax": [9, 46], "axes3d": 32, "axi": [9, 19, 22, 31, 34], "b": [6, 9, 19, 20, 23, 26, 46], "b64encod": [20, 22, 34], "back": [6, 9, 18, 21, 32, 34], "backbon": [28, 40], "backedg": 9, "backen": 6, "backend": [4, 5, 6, 8, 9, 14, 18, 19, 20, 24, 25, 30, 31, 33, 40, 41, 42, 45, 46], "backend_opencv": 37, "backpropag": [11, 30], "backward": [4, 5, 6, 9, 11, 30, 39, 46, 47], "bandwidth": [31, 40], "base": [5, 6, 19, 32, 35, 37, 40, 45], "base64": [20, 22, 34], "base64_byt": [20, 22, 34], "base64_str": [20, 22, 34], "base_nam": 6, "base_url": 22, "base_valu": 25, "basenam": 27, "basic": [19, 29, 30], "batch": [4, 5, 9, 10, 11, 12, 27, 37], "batch_siz": [4, 9, 12, 21, 22, 27, 30], "batchnorm": [19, 20, 35, 46, 49], "batchnorm1d": 46, "batchnorm2d": [9, 34, 46], "batchnorm3d": 46, "batchnorm_op": 9, "batchsiz": 4, "becaus": [4, 7, 28, 32, 42], "becom": [6, 32, 49], "been": [4, 6, 7, 9, 10, 19, 20, 25, 27, 28, 31, 32, 33, 34, 46], "befor": [4, 5, 6, 9, 10, 19, 21, 23, 26, 31, 32, 47], "beforehand": 10, "begin": [9, 20, 31, 49], "beginendtupl": 9, "behavior": [6, 7, 9, 28, 32], "behaviour": 6, "being": [0, 4, 6, 32, 49], "belong": [6, 9, 40], "below": [18, 28], "benchmark": 41, "benefici": 40, "best": 6, "beta": [20, 24], "beta_prod": 20, "between": [4, 6, 7, 9, 18, 28, 32, 33, 40, 45, 46, 49], "bewar": [4, 7, 28, 32], "beyond": 18, "bia": [6, 7, 9, 28, 30, 32], "bias": [6, 30], "bigger": 9, "billion": 31, "bin": [12, 16, 19, 23, 24, 25, 26, 27], "binari": [19, 24], "bind": [12, 16, 19, 20, 35, 42], "bit": [27, 31], "bitshift": 20, "bitshift_op": 9, "block": 47, "bn0": 34, "bnmean": 34, "bnscale": 34, "bnshift": 34, "bnvar": 34, "board": 40, "bool": [2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 49], "boolean": [5, 13, 49], "border": 9, "bordertyp": 9, "bordervalu": 9, "both": [4, 5, 6, 7, 19, 28, 34, 35, 37, 39, 46], "bound": 4, "branch": [7, 11, 20, 28, 32], "break": [7, 25, 28, 30], "broadcast": 9, "broken": 6, "brows": [4, 40], "buffer": [4, 48], "buffer_protocol": 42, "build": [0, 6, 9, 10, 12, 15, 18, 19, 23, 24, 25, 26, 27, 30], "build_cpp": 12, "build_cpp_dock": 12, "build_export_dock": 26, "build_image_dock": [12, 26], "build_lib_python": 12, "build_lib_python_dock": [12, 27], "builder": 6, "built": [9, 10, 11, 16, 18, 19, 27, 49], "builtin": [19, 27], "busi": 11, "button": [23, 26], "button_clear": [23, 26], "button_gen": [23, 26], "byte": [2, 19, 31], "c": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 18, 20, 23, 27, 30, 33, 35, 46], "c_data": 24, "cach": [12, 27], "cache_file_path": [12, 27], "calcul": [0, 9, 35, 36, 39, 40], "calibr": 12, "calibration_cach": [12, 27], "calibration_fold": [12, 27], "calibration_folder_path": [12, 27], "calibration_set": 25, "call": [4, 6, 7, 9, 18, 19, 20, 24, 27, 31, 32, 37, 39, 40, 46, 47], "callabl": [5, 7, 13], "callback": 6, "calledprocesserror": 25, "can": [0, 4, 6, 7, 9, 10, 11, 12, 13, 16, 18, 19, 20, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 46, 47, 48, 49], "cannot": [6, 7, 9, 19, 20, 27, 28, 32, 49], "canva": [23, 26], "capabl": [18, 40], "capac": 4, "captur": 28, "care": [6, 35], "carri": [6, 40, 46], "case": [4, 6, 7, 11, 19, 20, 28, 30, 32, 39, 40, 41, 46, 49], "cast": [4, 19, 25, 31], "cast_op": 9, "cast_opimpl": 9, "cat": 19, "categor": [35, 41, 46], "categori": [6, 9, 46], "cd": [16, 19, 23, 24, 26, 27], "ceil": 9, "ceil_mod": 9, "cell": [19, 23, 24, 26, 27], "certain": 33, "certifi": [23, 26, 30], "chain": [13, 19, 27], "chang": [4, 5, 6, 10, 25, 28, 32, 35, 39, 41, 46], "channel": [4, 5, 9, 20, 21], "char": [4, 9], "charact": [13, 49], "character": [15, 49], "characterist": [0, 4], "charset": [23, 26, 30], "check": [4, 5, 6, 9, 18, 20, 25, 32, 40, 49], "child": [6, 7, 28, 31, 32, 46], "child_input_tensor_idx": 6, "child_nod": 6, "childinputtensoridx": 6, "childnod": 6, "childnodetyp": 28, "children": [6, 28, 46], "choos": [18, 30, 32, 34, 35, 37, 39, 40, 46], "chosen": [39, 46], "chrono": 11, "chronolog": 40, "chw": [4, 37], "cifar": 30, "cifar10": 30, "circular": [6, 32], "ckei": 49, "cl": [6, 30], "clariti": 49, "class": [0, 2, 3, 4, 5, 6, 7, 19, 20, 21, 24, 30, 32, 37], "classic": 40, "classif": [27, 36], "classmethod": 5, "clean": 12, "clear": [6, 11, 23, 26], "clear_schedul": 11, "clearschedul": 11, "clip": [4, 19, 20, 25, 31], "clip_op": 9, "clipping_mod": [19, 25], "clone": [4, 6, 9, 12, 19, 25, 33], "clone_dinov2": 33, "clonecallback": 6, "clonenod": 6, "clonesharedoper": 6, "clonesharedproduc": 6, "closest": 5, "cmake": 16, "cmap": [19, 31], "cmpr": 49, "co": [23, 24, 25, 26, 33], "code": [0, 5, 9, 10, 15, 19, 20, 22, 24, 28, 31, 35, 40, 46], "coeffici": 31, "coher": 6, "colabor": 19, "collabor": 19, "collect": [5, 23, 30, 37, 49], "collect2": [23, 24], "com": [10, 22, 27], "combin": [10, 37, 49], "come": [6, 46], "comm": [23, 26], "command": [12, 19, 27, 28], "commerci": 0, "common": 46, "commonli": 9, "compact": 32, "compar": [6, 33, 34], "comparison": [19, 33], "compat": [0, 4, 6, 9, 40, 42], "compil": [6, 12, 15, 20, 21, 24, 25, 27, 33, 34, 35, 40, 41, 46], "complementari": 49, "complet": [22, 27, 35, 46], "complex": [0, 7, 11, 18, 19, 28, 33, 35, 46, 49], "compliant": 6, "complic": 6, "compon": [19, 40, 49], "compos": [4, 20, 30, 33, 37, 40], "composit": [9, 20], "comprehens": [6, 40], "compress": 31, "compresslevel": 19, "comput": [0, 5, 6, 9, 10, 11, 18, 19, 22, 27, 30, 32, 34, 35, 37, 39, 41, 42, 45, 47], "computationn": 19, "compute_accuraci": 31, "computereceptivefield": 9, "concat": [10, 11, 20, 33, 46], "concat_op": 9, "concat_opimpl": 9, "concaten": [9, 11, 34, 37, 46], "concept": [33, 35, 39, 40, 46], "concretli": 37, "cond": [11, 32], "condit": [4, 11, 27, 41, 49], "condition": 11, "conditionn": 32, "conduct": 27, "confer": 35, "config": 5, "config_extens": 5, "config_path": 5, "config_templ": [5, 24], "configur": [0, 5, 18, 21, 22, 23, 26, 31, 40], "confus": 36, "conjunct": 18, "connect": [5, 6, 7, 9, 11, 13, 18, 28, 30, 31, 32, 45, 46], "connectinput": 11, "connector": [20, 46], "consecut": 6, "conserv": 4, "consid": [4, 10, 32, 40], "consist": [9, 28, 31, 40, 42, 46], "const": [2, 3, 4, 6, 7, 9, 10, 11], "constant": [9, 19, 20], "constant_fil": 30, "constant_fold": [19, 32], "constant_lr": 30, "constant_shap": 10, "constantfold": 10, "constantofshap": 20, "constantofshape_op": 9, "constantshap": 10, "constexpr": 4, "constitut": [13, 18, 46], "constrain": [0, 7, 40], "construct": [4, 6, 7, 9, 31, 32], "constructor": [4, 9, 11, 27], "consum": [9, 11, 15, 20, 31, 32, 39], "consumm": [19, 33], "consumpt": [0, 31], "contain": [4, 5, 6, 9, 10, 12, 13, 18, 19, 28, 31, 32, 40, 46, 49], "content": [6, 19, 20, 22, 31], "context": [7, 20, 31, 33, 49], "contigu": 4, "continu": [5, 32, 41], "contraint": 40, "contrari": 32, "control": [0, 9, 18, 40], "conv": [6, 7, 18, 19, 20, 28, 30, 49], "conv0": 34, "conv1": [6, 21, 28, 32], "conv1_w": 28, "conv1d": [9, 46], "conv2": [6, 21, 28, 32], "conv2_b": 28, "conv2_conv": 28, "conv2_pad": 28, "conv2_w": 28, "conv2d": [9, 19, 21, 28, 31, 32, 33, 34, 46], "conv2d_dataflow_cp": 32, "conv2d_df": 32, "conv2ddepthwis": 9, "conv3": [28, 32], "conv3_conv": 28, "conv3_pad": 28, "conv3_w": 28, "conv3d": 46, "conv3ddepthwis": 9, "conv4": 28, "conv4_b": 28, "conv4_conv": 28, "conv4_pad": 28, "conv4_w": 28, "conv5": 28, "conv5_b": 28, "conv5_conv": 28, "conv5_pad": 28, "conv5_w": 28, "conv_horizontal_til": 19, "conv_op": 9, "convb": 34, "convdepthwise1d": 9, "convdepthwise2d": 9, "convdepthwise_op": 9, "convdepthwiseop": 9, "convdwnd": 46, "conveni": [9, 28], "convers": [4, 6, 10, 13, 32, 42], "conversion_map": 5, "convert": [4, 5, 26, 31, 40, 42, 45], "converter_funct": 13, "convnd": 46, "convndtranspos": 46, "convnet": 31, "convolut": [6, 9, 10, 18, 27, 31, 34, 35, 39, 46, 47, 49], "convolv": 9, "convop": 9, "convtomatmul": 10, "convtranspose_op": 9, "convw": 34, "cooper": 40, "coord": 4, "coordidx": 4, "coordin": 4, "copi": [4, 5, 6, 9, 27, 40, 42], "copycast": 4, "copycastfrom": 4, "copyfil": 27, "copyfrom": 4, "copymod": 27, "copytran": 4, "copytranspos": 4, "core": [1, 14, 19, 31], "correct": 27, "correct_pr": 22, "correctli": 40, "correspond": [2, 4, 6, 7, 13, 18, 35, 37, 45, 47, 49], "cost": [0, 35], "costli": 31, "could": [7, 28, 30, 32, 40, 49], "count": [6, 9], "counterpart": 31, "cours": 32, "cover": [6, 20, 49], "coverag": [20, 33, 40], "cp310": 30, "cpp": [4, 5, 10, 18, 19, 23, 26, 29, 35], "cpp_fuse_to_metaop": 25, "cpu": [4, 6, 14, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 32, 33, 34, 35, 39, 46], "cpy_transpos": 4, "cpython": 16, "creat": [4, 5, 6, 9, 12, 16, 18, 21, 22, 24, 27, 28, 29, 31, 33, 34, 35, 37, 40, 42, 45, 47, 49], "create_arrai": 9, "create_unique_nam": 6, "createuniquenam": 6, "creation": [20, 28], "criteria": [0, 40], "critic": [11, 32], "cross": 31, "cryptohash_op": 9, "ctor": 6, "cu": 12, "cuda": [25, 30, 35, 39, 42], "current": [4, 6, 9, 11, 12, 13, 19, 30, 32, 33, 41], "custom": [5, 9, 11, 13, 18, 19, 27, 30, 32], "customlay": 6, "cv": 2, "cwd": 25, "cycl": 6, "cyclic": [6, 11, 18, 32], "d": 4, "dangl": 6, "data": [0, 2, 5, 6, 8, 9, 10, 11, 12, 14, 18, 19, 20, 21, 24, 25, 27, 30, 31, 33, 34, 35, 39, 40, 41, 42, 46, 49], "data_0_bias_producerscaling_clipqu": 31, "data_0_bias_producerscaling_roundqu": 31, "data_0_conv": 31, "data_0_conv_input_0": 24, "data_0_weight_producerscaling_clipqu": 31, "data_0_weight_producerscaling_roundqu": 31, "data_10_relu": 31, "data_11_bias_producerscaling_clipqu": 31, "data_11_bias_producerscaling_roundqu": 31, "data_11_gemm": [24, 31], "data_11_weight_producerscaling_clipqu": 31, "data_11_weight_producerscaling_roundqu": 31, "data_1_relu": [24, 31], "data_3_bias_producerscaling_clipqu": 31, "data_3_bias_producerscaling_roundqu": 31, "data_3_conv": 31, "data_3_weight_producerscaling_clipqu": 31, "data_3_weight_producerscaling_roundqu": 31, "data_4_relu": 31, "data_7_bias_producerscaling_clipqu": 31, "data_7_bias_producerscaling_roundqu": 31, "data_7_gemm": 31, "data_7_weight_producerscaling_clipqu": 31, "data_7_weight_producerscaling_roundqu": 31, "data_8_relu": 31, "data_9_bias_producerscaling_clipqu": 31, "data_9_bias_producerscaling_roundqu": 31, "data_9_gemm": 31, "data_9_weight_producerscaling_clipqu": 31, "data_9_weight_producerscaling_roundqu": 31, "data_batch": 22, "data_elt": 32, "data_format": 4, "data_input": 20, "data_t": 24, "databas": [14, 22], "dataelt": 18, "dataflow": [11, 15], "dataformat": [3, 4, 6, 9, 39, 46], "dataformattranspos": 4, "datainput": 6, "datapath": [2, 22], "dataprovid": [22, 28, 30, 32], "dataset": [19, 21, 22, 25, 30, 35], "datastructur": [19, 46], "datatyp": [2, 3, 4, 6, 9, 30, 37, 39, 46], "datatype1": 6, "datatype2": 6, "datayp": 19, "date": 0, "dcmake_build_typ": 16, "dcmake_install_prefix": 16, "dealloc": 4, "debug": [5, 6, 16], "decad": 31, "decai": 4, "decay_t": 4, "declar": [6, 20, 31, 49], "decod": [20, 22, 34], "decompos": 20, "decompress": 22, "decompressed_file_path": 22, "deconv": [7, 18], "decor": [5, 13, 20, 23, 26], "decoupl": [11, 18, 32], "dedic": 19, "deduc": 32, "deduct": 9, "deep": [0, 4, 9, 19, 39, 40, 41], "def": [13, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 32, 34], "def_impl": 9, "default": [4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 18, 28, 32], "default_index": 6, "defaultdict": [13, 20, 33], "defens": 35, "defin": [4, 5, 6, 7, 9, 11, 12, 13, 15, 19, 20, 21, 22, 23, 24, 28, 31, 32, 35, 37, 39, 40, 42, 46, 49], "definit": 5, "degrad": 31, "degre": 0, "delet": [6, 7, 9, 11, 35], "delimit": 28, "demand": 28, "demo_img_path": 27, "demonstr": [21, 22, 24, 27, 29], "denomin": 9, "dens": 47, "depend": [0, 4, 6, 9, 11, 18, 19, 27, 32, 36, 37, 39, 42, 45, 46], "depict": 33, "deploi": [0, 31, 41], "deploy": [0, 18, 41], "deprec": 5, "depth": [7, 9, 18, 32, 46], "depthtospac": 20, "depthtospace_op": 9, "depthtospace_opimpl": 9, "depthwis": 9, "deriv": 9, "describ": [9, 13, 19, 35, 39, 40, 46, 48], "descript": [4, 12, 16, 23, 26, 35, 39, 40, 46], "deserialize_proto": 19, "design": [0, 6, 9, 11, 18, 32, 35, 41], "desir": [4, 9, 16, 31, 34, 40, 49], "destin": [4, 5], "destructor": 9, "detail": [0, 4, 5, 19, 27, 39, 46], "detect": [6, 24, 36, 46, 49], "determin": [6, 9, 11, 32, 37], "determinist": [6, 18], "dev": [20, 22, 31], "dev_mod": [5, 25], "develop": [0, 5, 31, 35, 40, 46, 49], "developp": [37, 49], "devic": [4, 6, 9, 12, 19, 31, 34, 40, 41, 42], "deviceidx_t": [4, 6, 9], "df": [4, 6], "dfg": 32, "dformat": [3, 4, 6, 9], "diagram": [11, 41], "dict": [5, 6, 13], "dictionari": [5, 20], "dictionnari": [5, 13], "didn": [6, 28], "differ": [4, 5, 6, 9, 12, 28, 32, 33, 35, 37, 39, 40, 49], "difficult": 31, "difficulti": 29, "digit": [19, 24, 37], "dilat": 9, "dilation_dim": 9, "dilationdim": 9, "dim": [3, 4, 6, 9, 19, 20, 21, 23, 24, 26, 32, 33, 34], "dimens": [0, 4, 5, 6, 9, 10, 12, 13, 19, 23, 24, 26, 32, 33, 34, 37, 46, 47], "dimension": 37, "dimensiosn": 20, "dimidx_t": 4, "dims_": 3, "dims_forward": 9, "dimsforward": 9, "dimsize_t": [4, 6, 9, 10], "dinov2": 33, "dinov2_model": 33, "dinov2_stat": 33, "dinstiguish": 48, "direct": [7, 11, 18, 28, 40, 46], "directli": [6, 9, 19, 27, 32, 49], "directori": [6, 16, 19, 23, 24, 26, 27, 40], "dirnam": 6, "disabl": 9, "disconnect": 6, "disjoint": [7, 28], "displai": [11, 12, 13, 19, 20, 22, 28, 32, 33, 34], "display_nam": 33, "dissip": 0, "distil": 31, "distinct": 46, "distinguish": [4, 19, 24], "div": [20, 33, 46], "div_op": [9, 20], "divid": 34, "divis": [4, 9], "divop": 9, "dl": [6, 32], "dma": 40, "dnn": [5, 19, 23, 24, 26, 35, 37, 40, 41, 45, 46], "do": [4, 6, 7, 9, 10, 18, 19, 23, 24, 27, 28, 32, 33, 35, 40, 47], "doc": [23, 24, 26, 27, 32], "docker": [12, 26, 27], "document": [35, 40], "doe": [4, 6, 9, 18, 20, 31, 32, 35, 39, 46, 49], "doesn": [6, 27, 31], "domain": [13, 49], "don": [7, 19, 20, 28, 31], "done": [4, 6, 9, 10, 18, 19, 20, 25, 33, 35, 36, 39, 42, 46], "doubl": [2, 5, 9], "download": [20, 22, 24, 30], "download_fil": [23, 24, 25, 26, 33], "download_materi": [19, 20, 22, 31], "downsiz": 4, "dpybind": 16, "drop": 4, "drop_last": [4, 22, 30], "droplast": 4, "dropout": [20, 46], "dropout_op": 9, "dsl": [7, 18, 28], "dsp": 0, "dst": [5, 27], "dst_path": 5, "dt": [4, 9], "dtype": [3, 4, 5, 6, 9, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 33, 34], "due": [7, 32, 47, 49], "dummi": 6, "dummy_input": 21, "duplic": [6, 41, 46, 47], "durat": 9, "dure": [0, 6, 9, 11, 16, 18, 32, 35, 46, 49], "duti": 40, "dwerror": 16, "dynam": [11, 18, 40], "dynamicattribut": [3, 6, 9], "e": [4, 5, 6, 9, 19, 20, 25, 27, 32, 35, 39, 40, 46, 47], "e_prod": 20, "each": [2, 4, 5, 6, 7, 9, 10, 11, 16, 18, 19, 20, 25, 32, 34, 36, 37, 39, 40, 46, 49], "eact": 5, "eager": 6, "earli": [11, 18, 32], "earlier": 11, "earlierthan": 11, "earliest": 11, "early_": 11, "eas": [0, 34], "easili": [6, 18, 20, 35, 39], "eclips": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 27, 29, 30, 31, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49], "eclipseaidg": [23, 24, 25, 26, 33], "edg": [6, 7, 9, 41, 46, 47], "edgeleftidx": 7, "edgerightidx": 7, "edu": 30, "effect": [6, 15, 40], "effici": [7, 18, 28], "effort": [7, 18, 28], "either": [4, 12, 28, 32, 35, 39, 41], "elabor": 40, "electron": [11, 18, 32], "element": [4, 5, 6, 9, 11, 28, 30, 32, 40, 46], "elemwis": 6, "elif": [27, 30], "elimin": 32, "elman": 46, "els": [6, 9, 18, 19, 20, 22, 23, 24, 25, 27, 30, 31, 32, 49], "elts_t": [9, 18, 32], "elu": 46, "embed": [18, 19, 20, 31, 40, 41], "embeddings_add": 33, "embeddings_concat": 33, "embeddings_patch_embeddings_projection_conv": 33, "embeddings_patch_embeddings_reshap": 33, "embeddings_patch_embeddings_transpos": 33, "emerg": 49, "emploi": 33, "empti": [4, 5, 6, 7, 9, 28, 32, 39, 40, 46, 49], "emul": 46, "enabl": [5, 6, 12, 27, 32, 35, 46, 49], "enable_custom_op": 13, "enable_if_t": 4, "enable_shared_from_thi": [6, 9], "encaplsul": 31, "encapsul": 49, "encod": [19, 20, 22, 24, 30, 34], "encoder_layer_0_add": 33, "encoder_layer_0_add_1": 33, "encoder_layer_0_layer_scale1_mul": 33, "encoder_layer_0_layer_scale2_mul": 33, "encoder_layer_1_add": 33, "encoder_layer_1_add_1": 33, "encoder_layer_1_layer_scale1_mul": 33, "encoder_layer_1_layer_scale2_mul": 33, "encoder_layer_2_add": 33, "encoder_layer_2_add_1": 33, "encoder_layer_2_layer_scale1_mul": 33, "encoder_layer_2_layer_scale2_mul": 33, "encoder_layer_3_add": 33, "encoder_layer_3_add_1": 33, "encoder_layer_3_layer_scale1_mul": 33, "encoder_layer_3_layer_scale2_mul": 33, "encoder_layer_4_add": 33, "encoder_layer_4_add_1": 33, "encoder_layer_4_layer_scale1_mul": 33, "encoder_layer_4_layer_scale2_mul": 33, "encoder_layer_5_add": 33, "encoder_layer_5_add_1": 33, "encoder_layer_5_layer_scale1_mul": 33, "encoder_layer_5_layer_scale2_mul": 33, "encoder_layer_6_add": 33, "encoder_layer_6_add_1": 33, "encoder_layer_6_layer_scale1_mul": 33, "encoder_layer_6_layer_scale2_mul": 33, "encoder_layer_7_add": 33, "encoder_layer_7_add_1": 33, "encoder_layer_7_layer_scale1_mul": 33, "encoder_layer_7_layer_scale2_mul": 33, "encoder_layer_8_add": 33, "encoder_layer_8_add_1": 33, "encoder_layer_8_layer_scale1_mul": 33, "encoder_layer_8_layer_scale2_mul": 33, "encoder_layer_9_layer_scale1_mul": 33, "encompass": [0, 6], "encount": [19, 29], "encourag": [18, 31], "end": [4, 6, 9, 11, 25, 49], "end_": 11, "endstep": 9, "endswith": 27, "energi": 31, "engin": [10, 12, 15, 27, 49], "enough": [18, 39], "enoughdatatocomputeoutputlin": 18, "ensur": [6, 9, 10, 27, 32, 41], "enter": [9, 23, 24, 26, 27], "enter_context": [19, 24], "entir": [0, 6, 18, 32, 35, 40, 46], "entireti": 19, "entri": [5, 46], "enum": [2, 4, 9, 11], "enumer": [2, 11, 22, 24, 30, 31], "env": 16, "environ": [18, 40, 42], "environn": [16, 19], "epsilon": 9, "eq": 49, "equal": [4, 6, 11, 31], "equal_op": 9, "equival": [4, 6, 7, 19, 28, 49], "eras": 9, "erf": [20, 33], "erf_op": 9, "erfop": 9, "errno": [19, 24, 27], "erron": 28, "error": [5, 6, 7, 9, 16, 20, 23, 24, 25, 26, 28, 32, 33, 46], "especi": [10, 18], "essenti": 27, "eta": [23, 30], "etc": [0, 32, 40, 41], "eval": [21, 23, 26], "evalu": [21, 31, 32, 33, 36, 48], "even": [4, 6, 7, 9, 18, 19, 28, 31, 32], "eventu": [0, 18], "everi": [0, 6, 9, 32, 49], "everyth": [6, 31], "ex": 6, "exactli": [9, 18], "exampl": [4, 5, 7, 9, 12, 13, 16, 18, 19, 20, 22, 25, 27, 28, 30, 32, 35, 37, 39, 40, 47, 48, 49], "except": [4, 6, 7, 9, 23, 25, 26, 28, 32], "exceptiongroup": [23, 26], "exchang": 0, "exclud": [6, 9], "exclude_unwanted_produc": 25, "exclus": 9, "exclusive_fp": 27, "exconv": 28, "exectim": 11, "execut": [6, 9, 11, 12, 18, 19, 23, 26, 27, 32, 33, 35, 36, 40, 41], "executionmode_t": 12, "exempl": 32, "exhaust": 32, "exhibit": 32, "exig": 40, "exist": [4, 6, 7, 9, 22, 24, 27, 28, 30, 31, 32, 33, 37, 46, 49], "exist_ok": 22, "exit": [23, 24], "exp": [9, 20, 49], "expand": [9, 18], "expand_metaop": [10, 25, 28, 32], "expand_op": 9, "expandmetaop": 10, "exparam": 28, "expect": [6, 9, 19, 28, 31, 32, 40], "expectedtyp": 4, "experi": 27, "experiment": 7, "expert": 40, "explain": 49, "explainalib": 40, "explan": 0, "explicit": [6, 9], "explicitcastmov": 10, "explicitli": 18, "explicittranspos": 10, "explor": 0, "exponenti": 46, "export": [8, 14, 16, 18, 20, 21, 35, 47], "export_fold": [5, 12, 19, 23, 24, 25, 26, 27], "export_folder_path": 5, "export_lib": 5, "export_onnx": 13, "export_root": 5, "export_schedul": 19, "export_seri": 19, "export_trt": 27, "export_util": [5, 19, 23, 24, 25, 26], "exportlib": 5, "exportlibaidgearm": 26, "exportlibcpp": [19, 23, 24], "exportnod": 5, "exportnodecpp": [5, 24], "expos": 5, "expr": 49, "express": [28, 35, 49], "extens": [5, 11, 30], "extensivli": 20, "extern": [6, 35], "extra": 30, "extract": [4, 9, 30, 32, 34, 46], "f": [6, 12, 19, 20, 22, 23, 24, 25, 26, 28, 30, 31, 34], "facil": [18, 28], "facilit": [5, 27], "fact": 28, "factor": [0, 9, 32], "factori": 9, "fail": [6, 13, 19, 20, 22, 25, 31, 32], "fait": 13, "fallback": [4, 19], "fals": [2, 4, 5, 6, 7, 9, 10, 11, 13, 19, 22, 23, 24, 25, 26, 31, 32, 33, 49], "fashion": 46, "faster": 30, "fc": [6, 19, 28, 30, 31, 35, 47, 49], "fc0": 6, "fc1": [6, 21], "fc1_gemm_input_0": 19, "fc2": [6, 21], "fc3": [6, 21], "fc_op": 9, "fdst": 27, "featur": [0, 6, 9, 11, 18, 19, 29, 32, 42, 45], "feature_feature_0_conv_input_0": 26, "fed": 18, "feder": 41, "feel": [21, 27], "fetch": [2, 4, 5], "fid": [19, 24], "field": [9, 47], "fifth": 4, "figur": 49, "file": [5, 6, 11, 12, 13, 16, 20, 22, 23, 24, 26, 27, 31, 33, 35, 42, 49], "file_mmd": [20, 22, 34], "file_nam": 11, "file_path": [22, 23, 24, 25, 26, 33], "file_url": [23, 24, 25, 26, 33], "filenam": [11, 13, 19, 27, 33], "filenotfounderror": [19, 24, 27], "fileobj": 19, "filepath": 12, "fill": [6, 12, 13, 28], "filler": 30, "filter": [6, 7, 9, 49], "filterlonguestdisjoint": 7, "final": [2, 6, 9, 27, 31, 33, 40, 47], "find": [0, 6, 7, 16, 18, 20, 28, 32, 35, 49], "finish": 11, "first": [0, 4, 6, 7, 9, 10, 11, 16, 19, 20, 24, 27, 30, 31, 32, 40, 49], "firsteltdim": 9, "firstidx": 9, "firstnod": 7, "firstsequ": 7, "fit": [5, 40], "fix": 10, "fix_import": [19, 24], "fixeds": 9, "flag": [5, 9, 32], "flatidx": 4, "flatten": [4, 9, 18, 19, 22, 23, 24, 26, 31, 32], "flatten_op": 9, "flatten_opimpl": 9, "flatten_output_0": 19, "float": [2, 4, 5, 6, 9, 11, 30, 31, 37, 39, 46, 49], "float16": 5, "float32": [4, 5, 6, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 33, 34], "float64": 5, "floor": 9, "flow": [0, 9, 46], "fmt": [6, 10], "fname": 27, "foat": 49, "fold": 31, "fold_graph": 25, "fold_op": 9, "folder": [5, 6, 12, 16, 19, 26, 27, 40], "folk": 31, "follow": [5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 20, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 46, 49], "follow_symlink": 27, "fopenmp": [23, 24], "forc": 32, "forced_inputs_categori": 9, "forcedinputscategori": 9, "forget": 31, "form": [0, 6, 32, 37, 40], "formal": 49, "format": [0, 3, 4, 5, 6, 9, 10, 11, 19, 21, 27, 34, 37, 40, 41, 45], "format_": 3, "former": 6, "formul": 7, "forum": 0, "forward": [4, 5, 6, 9, 11, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 32, 33, 34, 39, 40, 46], "forward_dim": [6, 9, 11, 19, 24, 32, 33], "forward_dtyp": [6, 9], "forward_templ": [5, 24], "forwarddatatyp": 6, "forwarddim": [4, 6, 9, 11, 32], "forwarddtyp": [6, 9], "found": [6, 7, 12, 19, 23, 24, 26, 27, 28, 30, 49], "foundat": 9, "four": [6, 34], "fourth": 4, "fp": 27, "fpga": 0, "framework": [6, 9, 19, 20, 29, 30, 32, 41, 42, 46, 49], "free": [6, 19, 21, 27], "friend": [4, 6], "friendli": 6, "from": [0, 2, 4, 5, 6, 9, 10, 11, 12, 13, 16, 18, 19, 20, 22, 24, 25, 27, 28, 30, 32, 33, 34, 35, 37, 39, 40, 41, 42, 46, 49], "from_out_nod": 6, "from_tensor": 6, "fromoutnod": 6, "fromoutnodenam": 6, "fromtensor": 6, "fspath": [19, 24, 27], "fsrc": 27, "full": [9, 11, 18, 28, 32], "fullfil": 49, "fulli": [9, 18, 20, 32, 46], "fullyconnect": [23, 35], "func": [6, 7], "function": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 14, 18, 19, 20, 22, 23, 24, 27, 30, 31, 32, 35, 36, 37, 39, 40, 48], "functionn": [10, 19, 20, 37, 46], "functionnali": 46, "functool": 20, "fundament": 32, "further": [7, 27, 32], "furthermor": [6, 18, 27], "fuse": [19, 25, 33, 35, 49], "fuse_batchnorm": [10, 19, 25], "fuse_to_metaop": [10, 28, 33], "fusebatchnorm": 10, "fuseconvbatchnorm": 35, "fusemuladd": 35, "fusetometaop": 10, "fusion": [28, 35], "futur": [9, 28], "fwd_includ": 5, "g": [5, 6, 9, 23, 24, 27, 32, 35, 39, 46], "gaph": 46, "garante": 32, "gate": [9, 46], "gather": [20, 25, 31, 33], "gather_op": 9, "gather_opimpl": 9, "gathered_shap": 9, "gatheredshap": 9, "gatherop": 9, "gcc": [23, 24], "gelu": [33, 46], "gemm": [19, 20], "gen": 24, "gen_board_fil": 26, "gen_swish_metaop": 20, "gener": [0, 5, 6, 10, 11, 12, 13, 15, 21, 24, 25, 28, 32, 33, 34, 35, 37, 39, 40, 41, 45], "generate_fil": 24, "generate_graph": [6, 20], "generate_input_fil": [19, 24, 26], "generate_main": 24, "generate_main_cpp": [19, 23, 24], "generate_memori": 11, "generate_memory_auto_concat": 11, "generate_optimized_memory_info": [19, 23, 24, 26, 33], "generate_plugin": 12, "generate_schedul": [11, 23, 24, 25, 26, 32, 33], "generategraph": 6, "generatememori": 11, "generatememoryautoconcat": 11, "generateschedul": 11, "generic_export": 13, "genericconv2d_dataflow_impl": 32, "genericimpl": 24, "genericoper": [5, 6, 9, 13, 19, 20, 24, 32], "genericoperator_op": 9, "genericoperatorop": 9, "get": [2, 4, 5, 6, 9, 11, 18, 20, 21, 22, 24, 28, 29, 31, 32, 41], "get_adapt": 5, "get_attr": 20, "get_available_backend": [4, 19, 31], "get_available_impl_spec": 5, "get_backward_schedul": 11, "get_best_adapt": 5, "get_best_match": 5, "get_children": 6, "get_connected_graph_view": [6, 32], "get_conv_horizontal_til": 34, "get_coord": 4, "get_export_nod": 5, "get_forward_schedul": 11, "get_idx": 4, "get_image_data": [23, 26], "get_impl": 9, "get_input": [9, 20, 24, 32], "get_input_nod": 6, "get_item": [2, 30, 37], "get_keys_conv2dop": 19, "get_len": 2, "get_nb_input": 6, "get_nb_mod": [2, 30], "get_nb_output": 6, "get_nb_required_data": 32, "get_nod": [6, 20, 24, 28, 30, 32, 34], "get_oper": [5, 6, 19, 20, 21, 22, 24, 25, 28, 30, 31, 32, 34], "get_ordered_children": 6, "get_ordered_input": [6, 25], "get_ordered_nod": 6, "get_ordered_output": [6, 33], "get_output": [9, 19, 20, 21, 22, 25, 30, 31, 32, 34], "get_output_nod": [6, 19, 20, 21, 22, 25, 30, 31], "get_par": [6, 34], "get_prod_conso": [5, 32], "get_ranked_nod": 6, "get_ranked_nodes_nam": 6, "get_raw_input": 9, "get_raw_output": 9, "get_required_memori": 32, "get_required_spec": 5, "get_sequential_static_schedul": [5, 11, 24], "get_static_schedul": 11, "getattr": 19, "getavailablebackend": [4, 9], "getbackwardschedul": 11, "getchildren": 6, "getconnectedgraphview": 6, "getcoord": 4, "getfirstfreedatainput": 6, "getforwardschedul": 11, "getgraph": 46, "getidx": 4, "getimpl": [4, 9], "getimploffset": 4, "getindexbatch": 4, "getinput": 9, "getinputlines": 18, "getitem": [2, 4], "getlen": [2, 4], "getnbbatch": 4, "getnbconsumeddata": 9, "getnbfreedatainput": 6, "getnbmod": [2, 4], "getnbproduceddata": 9, "getnbrequireddata": [9, 18], "getnbrequiredprotect": 9, "getnod": 6, "getoper": 6, "getorderedchildren": 6, "getorderedinput": 6, "getorderednod": 6, "getorderedoutput": 6, "getorderedpar": 6, "getoutput": 9, "getoutputlines": 18, "getpar": 6, "getrankednod": 6, "getrankednodesnam": 6, "getrawinput": 9, "getrawoutput": 9, "getrequiredmemori": [9, 18], "getsequentialstaticschedul": 11, "getstaticschedul": 11, "getstorageidx": 4, "getter": 6, "gettyp": 49, "git": [19, 20, 22, 31], "github": 27, "gitlab": [0, 20, 22, 31], "give": [6, 19, 36, 48], "given": [2, 4, 5, 6, 7, 9, 11, 25, 28, 32, 33, 37, 40, 46], "gk_iodefaultindex": 6, "global": [6, 18, 23, 25, 26, 40], "globalaveragepool": 20, "globalaveragepooling_op": 9, "gm": [7, 10, 18, 28], "gnu": [23, 24], "go": [6, 28], "goal": [40, 47], "goe": 32, "good": [7, 28], "got": [23, 26], "gpu": [0, 35, 39, 42, 46], "grad": 4, "gradient": [4, 9, 30, 46], "grai": [19, 31], "grammat": 49, "granular": 18, "graph": [5, 8, 9, 10, 11, 13, 14, 15, 20, 25, 27, 29, 30, 31, 32, 34, 35, 37, 41, 42, 45], "graph_fus": 28, "graph_mmd": [20, 22, 34], "graph_view": [5, 6, 10, 11, 13, 24], "graphbyt": [20, 22, 34], "graphmatch": 24, "graphptr": 6, "graphview": [7, 9, 10, 11, 12, 13, 18, 20, 24, 27, 28, 30, 34], "graphviewab": 46, "greedi": 32, "gridsampl": 20, "gridsample_op": 9, "ground": 35, "group": [0, 5, 49], "groupement": 6, "grow": [10, 18], "gru": 46, "gt": [19, 23, 24, 26, 27, 30, 31], "guarante": [4, 6, 19], "guid": [0, 17, 21, 40], "gv": 6, "gz": [19, 22, 30, 31], "gzip": [19, 22, 31], "gzipfil": [19, 31], "h": [5, 24], "ha": [4, 6, 7, 9, 10, 18, 19, 20, 25, 27, 28, 32, 33, 34, 39, 40, 46, 49], "half": 5, "half_float": 5, "halfawayfromzero": 9, "halid": 18, "hand": 32, "handl": [5, 6, 9, 13, 18, 20, 27, 37, 47], "happen": [6, 32, 49], "hardmax_op": 9, "hardswitch": 46, "hardwar": [0, 10, 15, 19, 35, 36, 39, 41, 46], "has_impl": 4, "has_native_coverag": 20, "hasimpl": 4, "hasn": 28, "have": [0, 4, 6, 9, 10, 11, 12, 13, 16, 19, 20, 24, 25, 26, 27, 28, 30, 31, 32, 33, 37, 39, 40, 41, 46, 49], "haven": 27, "hbox": [23, 26], "he": [18, 30], "he_fil": 30, "head": [20, 22, 31], "header": [5, 40], "heaviside_op": 9, "height": [5, 21, 23, 26], "held": 6, "help": [6, 12, 26, 27, 40], "helper": [4, 9, 14, 27, 30], "henc": [4, 32, 37], "here": [6, 7, 18, 19, 25, 28, 29, 32, 34, 41, 42, 46], "hereaft": 19, "hesit": 10, "heurist": [7, 15, 19, 28, 33, 39, 49], "hi": 40, "hidden": 9, "hidden_channel": [9, 32], "hide": 46, "hierarch": [18, 28, 32], "hierarchi": 32, "high": [0, 18, 40], "high_resolution_clock": 11, "highest": [4, 16], "highli": 18, "hightli": 27, "hl": [18, 35], "hold": [5, 32], "hold_canva": [23, 26], "home": 32, "horizont": 19, "horizontl": 34, "host": [12, 24, 27], "hot": 30, "how": [5, 6, 7, 10, 20, 21, 24, 31, 32, 34, 39, 40, 42, 46], "howev": [4, 6, 19, 20, 27, 32, 47], "hpp": [5, 12, 19, 23, 24], "html": [23, 24, 32], "http": [0, 10, 20, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34], "hub": 0, "huggingfac": [23, 24, 25, 26, 33], "hw": 4, "hybrid": 32, "hyperbol": 46, "i": [3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 19, 20, 22, 23, 24, 25, 27, 28, 30, 32, 33, 34, 35, 37, 39, 40, 41, 42, 45, 46, 47, 49], "id": [6, 12], "ident": [6, 10, 20, 32, 49], "identif": 18, "identifi": [9, 28], "identity_op": 9, "identity_opimpl": 9, "idna": [23, 26, 30], "idx": [4, 6, 9, 30], "idx1": 22, "idx3": 22, "ie": 5, "ignor": [11, 32], "ignore_produc": 11, "ignoreproduc": 11, "ilayernorm_op": 9, "im2col": 10, "imag": [12, 19, 20, 22, 23, 26, 27, 33, 34, 37], "imagenet": 27, "imagin": 49, "img": [20, 22, 27, 34], "img_nam": [23, 26], "img_open": 27, "imgplot": 27, "impl": [4, 9], "implement": [0, 1, 4, 5, 6, 7, 9, 11, 18, 19, 24, 28, 32, 33, 34, 37, 41, 49], "implemt": [35, 39], "impli": [4, 18], "implicit": [10, 32], "imploffset": 4, "implspec": [3, 5, 24], "import": [1, 6, 14, 18, 21, 22, 23, 25, 26, 27, 28, 29, 30, 32, 34, 46, 49], "import_gener": 13, "import_swish": 20, "imported_model": 25, "impos": 40, "imposs": 6, "imread": 27, "imshow": [19, 27, 31], "in_batch": 5, "in_cdtyp": 5, "in_chan": 5, "in_channel": [9, 30, 32], "in_dim": 5, "in_dtyp": 5, "in_height": 5, "in_id": [5, 6], "in_nam": [5, 24], "in_nod": 5, "in_siz": 5, "in_tensor": [20, 25], "in_view": 6, "in_width": 5, "inc_produc": 11, "inchannel": 9, "includ": [0, 5, 6, 7, 9, 11, 12, 19, 23, 24, 27, 28, 31, 35, 40, 41], "include_learnable_paramet": 6, "include_list": [5, 24], "includelearnableparam": 6, "incom": 46, "incomplet": 41, "incproduc": 11, "increas": 9, "increment": 4, "incrementindexbatch": 4, "inde": [6, 20, 35, 39, 40], "independ": 0, "independantli": 16, "indermedi": 4, "index": [2, 4, 6, 9, 11, 13, 23, 24, 25, 30, 37], "indexerror": 24, "indic": [5, 6, 9, 11, 13, 27, 40, 46], "induc": 6, "infer": [6, 9, 18, 20, 21, 22, 23, 25, 27, 29, 34, 37, 48], "inferior": 4, "info": [12, 19, 27, 32], "inform": [5, 6, 9, 13, 18, 27, 33, 40, 46, 49], "inherit": [4, 20, 24, 37], "inheritedattribut": 9, "inid": 6, "init_grad": 30, "initi": [4, 5, 6, 9, 10, 12, 27, 30, 31, 32, 35, 45, 47], "initial_graph": 34, "ink": [20, 22, 34], "inlin": [2, 3, 4, 6, 7, 9, 11, 23, 26, 27], "inner": [6, 10], "innov": 49, "input": [4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 20, 21, 24, 25, 27, 28, 30, 31, 32, 33, 34, 35, 37, 39, 40, 46, 48, 49], "input1": 9, "input2": 9, "input_arrai": 31, "input_categori": [6, 9], "input_data": 6, "input_digit": 19, "input_dim": 6, "input_idx": 32, "input_index": 9, "input_nam": 6, "input_nod": [13, 20, 24, 25], "input_op": 20, "input_tensor": [6, 9, 19, 21, 31, 34], "inputcategori": [6, 9, 32], "inputconv": 6, "inputdata": 6, "inputdim": 6, "inputid": 6, "inputidx": [9, 18], "inputnam": 6, "inputnod": 6, "inputs_dim": 13, "inputs_nam": [6, 24], "inputs_s": 32, "inputs_tensor": [23, 24], "inputscategori": 9, "inputsnam": 6, "inputss": 9, "inputtyp": 6, "inquir": 6, "insequ": 7, "insert": [6, 10, 31], "insert_par": 6, "insertpar": 6, "insid": [6, 12, 16, 19, 31, 49], "insight": 0, "inspir": 49, "instal": [0, 15, 19, 21, 23, 25, 26, 27, 30, 32], "instanc": [4, 5, 6, 7, 9, 10, 27, 32, 37, 49], "instanci": [2, 24, 35, 37], "instanti": [18, 21], "instead": [6, 9, 20, 31], "instrinct": 6, "instruct": [6, 18], "int": [2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 20, 25, 33, 37, 39, 46], "int16": 5, "int16_t": 5, "int32": [5, 25], "int32_t": [5, 9, 23, 24], "int64": 5, "int64_t": [5, 9, 23, 24], "int8": 5, "int8_t": [5, 9], "integ": [4, 6, 9, 25, 31, 49], "integr": [0, 9, 35, 49], "intend": [0, 5, 7, 18, 24, 28, 32, 40, 41], "intent": 6, "interact": 20, "interest": [0, 18, 32, 34], "interfac": [5, 6, 18, 19, 20, 24, 27, 33, 35, 40], "interleav": 32, "intermedi": [4, 7, 28], "intern": [4, 9, 19, 33, 39], "interoper": [0, 15, 19], "interpol": 4, "interpret": [9, 40], "intersect": 49, "intput": 49, "intrins": 6, "introduc": [7, 11, 18, 28, 30, 32, 35, 39, 46, 49], "invalid": [4, 32], "invers": 18, "inview": 6, "invok": 5, "involv": [41, 42, 49], "io": [3, 19], "ioindex_t": [6, 7, 9, 18], "iospec": [3, 24], "iou": 36, "ipycanva": [23, 25, 26], "ipython": [20, 22, 23, 26, 33, 34], "ipywidget": [23, 25, 26], "ir": 15, "irreversibli": 4, "is_arithmet": 4, "is_atom": 9, "is_back_edg": 9, "is_optional_input": 9, "isatom": 9, "isbackedg": 9, "isconditionalnoderequir": 11, "iscontigu": 4, "isdir": 27, "isfil": [20, 22, 31], "isinbound": 4, "isinputnod": 6, "isinst": 27, "isn": 6, "isol": 32, "isomorph": [18, 49], "isoptionalinput": 9, "isoutputnod": 6, "isprior": 11, "issu": [0, 29], "item": [2, 4, 6, 37], "iter": [4, 5, 12, 27, 32], "its": [4, 6, 7, 9, 11, 16, 18, 19, 21, 28, 30, 32, 35, 37, 39, 40, 46, 47], "itself": [4, 6, 18, 19, 35, 39], "jedi": [23, 26], "jinja": [5, 18, 24], "join": [19, 22, 24, 27, 28, 32], "jpg": 27, "jupyterlab_widget": [23, 26], "just": [6, 9, 18, 19, 20, 25, 28, 30, 31, 32, 35, 39], "k": [9, 49], "kb": [23, 30], "keep": [6, 7, 28, 34, 46, 47], "keep_dim": 9, "keepdim": 9, "kei": [4, 5, 11, 13, 20, 37, 49], "kept": [6, 7, 28], "kera": [0, 35], "kernel": [5, 6, 9, 10, 18, 19, 23, 26, 32, 35, 39, 41, 46, 49], "kernel_dim": [9, 28], "kernel_dst_path": 5, "kernel_s": 21, "kernel_src_path": 5, "kerneldim": 9, "kernels_path": 5, "kernels_to_copi": [5, 24], "keyword": 46, "kind": [9, 18, 35, 41, 46], "know": [6, 18, 32, 39, 40, 46], "known": [32, 46], "kpi": 41, "kriz": 30, "kwarg": [3, 6, 9, 10, 11], "l": 19, "label": [22, 24, 25, 30, 31, 35, 37], "lack": 12, "lambda": [6, 7, 18, 20, 24, 32, 49], "languag": [40, 49], "larg": 31, "larger": 4, "last": [4, 6, 19, 24, 27, 32], "late": [11, 18, 32], "late_": 11, "latenc": 0, "later": [11, 19, 20, 32, 33], "laterthan": 11, "latest": 11, "latter": [35, 40], "lattic": 6, "launch": [27, 40], "layer": [0, 5, 9, 10, 11, 19, 23, 24, 31, 33, 34, 36], "layernorm": 33, "layout": [5, 11, 23, 26], "lazi": 4, "lbl": 22, "lbl_batch": 22, "ld": [23, 24], "lead": [6, 31, 32], "leaki": 46, "leakyrelu": [20, 34, 46], "leakyrelu0": 34, "leakyrelu_op": 9, "leanr": 30, "learn": [0, 19, 32, 35, 41, 46], "learnabl": 6, "learning_r": 30, "least": [6, 28, 34, 45, 46], "leav": [9, 23, 24, 26, 27], "led": 28, "left": [6, 32], "len": [2, 22, 24, 27, 28, 30, 31], "lenet": [21, 23, 24, 25, 26], "lenet_export_fp32": [23, 26], "lenet_mnist": [23, 24, 25, 26], "length": [5, 6, 9], "less": 4, "let": [19, 20, 24, 27, 28, 31, 32, 34, 35], "level": [0, 6, 10, 11, 13, 18, 28, 32, 33, 40], "lexem": 49, "lf": [19, 20, 22, 31], "lh": [6, 23, 24], "lib": [12, 16, 19, 23, 24, 26, 27, 30, 32], "librari": [5, 12, 16, 19, 20, 21, 22, 27, 35, 37, 39, 41, 46], "lightweight": 27, "like": [4, 6, 7, 10, 24, 28, 32, 35, 40, 41], "likewis": 4, "limit": 35, "line": [6, 18, 19, 24, 27, 30, 32], "linear": [21, 33, 46], "liner": 28, "link": [6, 34, 39, 40, 46], "linux": [15, 23, 24], "linux_x86_64": 30, "list": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 22, 24, 28, 30, 32, 40, 46], "list_act": 5, "list_config": 5, "live": 34, "ll": 27, "llvm": 18, "ln_op": 9, "load": [4, 9, 12, 13, 18, 19, 20, 21, 27, 30, 31, 32, 35, 37, 40, 41, 42], "load_data_in_memori": [2, 22], "load_external_data": 19, "load_model": 19, "load_onnx": [13, 19, 20, 21, 22, 23, 24, 25, 26, 31, 32, 33], "loaddatainmemori": 2, "loadig": 12, "local": [32, 46], "locat": [5, 6], "log": [6, 19, 33], "log_nb_ops_by_typ": [19, 33], "log_output": 6, "log_scal": [19, 33], "logic": [6, 11, 18, 32], "logoutput": 6, "long": [9, 28, 30, 32, 35, 39, 46], "longest": [7, 28], "longuestbranchfirst": 11, "look": [0, 6, 10, 19, 30], "lookforchild": 7, "loss": 30, "lost": [4, 28], "lot": 32, "low": [0, 33], "lower": [4, 6, 18], "lowercas": [13, 20], "lowest": [4, 6], "lparen": 49, "lrn_op": 9, "lstm": [18, 20, 32, 46], "lstm_graph": 32, "lstm_model": 32, "lstm_schedul": 32, "lt": [23, 24, 26, 30, 33], "m": [4, 9, 12], "mac": 48, "machin": [12, 27], "maco": 27, "macro": 20, "madd": 31, "made": [6, 18, 40], "magicnumb": 2, "mai": [0, 4, 6, 7, 9, 11, 17, 18, 23, 26, 28, 32, 37, 40, 47, 49], "main": [0, 5, 6, 23, 24, 25, 26, 27, 33, 46], "maintain": 35, "major": 18, "make": [4, 6, 9, 14, 16, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 32], "make_shar": 6, "makecontigu": 4, "makedir": 22, "makefil": [12, 19, 23, 24, 26, 27], "manag": [5, 9, 11, 40, 46], "mandatori": [6, 7, 32], "mani": [19, 32, 40], "manipul": [9, 10, 18, 19, 31, 41, 49], "manipulatedbi": 49, "manner": [30, 37], "manual": [6, 19, 40], "manufactur": 40, "manylinux2014_x86_64": 30, "manylinux_2_17_x86_64": 30, "map": [2, 4, 5, 6, 7, 9, 10, 11, 13, 15, 37, 41], "mark_non_un": 6, "marknonun": 6, "mat": 2, "match": [4, 5, 6, 8, 9, 10, 14, 18, 19, 24, 30, 32, 35], "matchfrom": 7, "matchingresult": 7, "math": 20, "mathemat": [9, 18, 47, 49], "matmul": [19, 20, 33, 35, 46], "matmul_op": 9, "matmul_to_fc": [10, 19], "matmulop": 9, "matmultil": 10, "matmultofc": 10, "matplotlib": [19, 20, 22, 23, 26, 27, 31, 32, 34], "matrix": [2, 9, 10, 36, 37], "mattr": 6, "max": [4, 6, 9, 25, 32, 46], "max_header_s": [19, 24], "max_pool2d": 21, "maxdim": 10, "maximis": 49, "maximum": [9, 10], "maxpool": [7, 9, 18, 20], "maxpool1d": 46, "maxpool2d": 46, "maxpool3d": 46, "maxpooling_op": 9, "mb": [23, 30], "mbackward": 6, "mchildren": 6, "mcount": 11, "mcu": 0, "md": 6, "mdatatransform": 37, "mean": [4, 6, 7, 9, 11, 13, 20, 24, 28, 32, 49], "meant": [6, 9], "measur": [19, 33, 41], "mecan": 37, "mechan": [9, 19, 20, 28, 47], "meet": [35, 49], "mem": 40, "mem_info": [5, 19, 23, 24, 26], "mem_info_cont_offset": 5, "mem_info_cont_s": 5, "mem_info_length": 5, "mem_info_offset": 5, "mem_info_s": 5, "mem_info_strid": 5, "mem_info_wrap_offset": 5, "mem_info_wrap_s": 5, "mem_strategy_dino": 33, "mem_strategy_og_dino": 33, "member": [2, 3, 7, 11], "memori": [0, 4, 5, 9, 11, 18, 19, 31, 33, 34, 35, 40, 42, 46, 49], "memorize_op": [6, 9], "memorize_opimpl": 9, "memory_info": 33, "memory_manag": [5, 19, 23, 24, 26], "memory_manager_arg": [5, 19, 23, 24, 26], "memorymanag": 11, "mention": [39, 46], "mere": 6, "merg": [10, 46], "mermaid": [6, 11, 19, 20, 22], "messag": 6, "meta": [5, 18, 28, 33], "meta_oper": [9, 20], "metadata": [23, 30, 32], "metaop": 20, "metaoper": [5, 9, 20, 24], "metaoperator_op": 9, "method": [4, 5, 6, 9, 13, 15, 19, 20, 24, 27, 28, 32, 35, 47], "metric": [22, 30, 48], "mforward": 6, "micro": [9, 10, 20], "micrograph": 20, "middl": [7, 28], "midinchildren": 6, "midoutpar": 6, "might": [18, 49], "min": 4, "min_repeat": 11, "mind": 28, "minim": [18, 28], "minimum": 9, "minputnam": 6, "minputnod": 6, "minrepeat": 11, "miss": [6, 9, 13, 32], "mix": [6, 9], "mkdir": 27, "mlp": 22, "mlp_mnist": [19, 22], "mm2": 11, "mma": 10, "mmap_mod": [19, 24], "mmd": [19, 20, 22, 23, 24, 28, 32, 34], "mmean": 11, "mnist": [4, 19, 21, 22, 25, 31, 37], "mnist_dir": 22, "mnist_label": 31, "mnist_model": 19, "mnist_sampl": [19, 31], "mnist_test": 22, "mobilenet": 27, "mobilenetv2": [27, 32], "mobilenetv20_features_conv0_fwd": 32, "mobilenetv20_output_flatten0_reshape0": 32, "mod_op": 9, "modal": [2, 4, 37], "mode": [5, 9, 11, 12, 16, 19, 21, 27, 32, 33, 40], "model": [0, 5, 7, 9, 11, 13, 15, 21, 22, 28, 34, 35, 37, 41, 46, 48], "model_after_til": 34, "model_filepath": 19, "model_forward": 5, "model_nam": 25, "model_stat": 19, "modelproto": 19, "modesl": 46, "modif": [19, 46], "modifi": [0, 5, 7, 10, 20, 28, 33, 35, 40, 46], "modul": [0, 5, 16, 19, 20, 21, 24, 25, 27, 30, 31, 33, 35, 37, 42], "modular": [0, 18, 35, 39], "modulenotfounderror": [19, 24], "moment": [19, 46], "momentum": 9, "moper": 6, "more": [0, 6, 10, 18, 27, 28, 31, 32, 35, 39, 40, 46], "moreov": 37, "most": [0, 6, 19, 24, 27, 32, 34], "moutputnod": 6, "move": [4, 28, 46], "move_op": 9, "movedsrc": 4, "movement": [9, 10], "mparent": 6, "mpimg": 27, "mschedul": 37, "mse": [19, 25, 30], "mstimuli": 37, "mtime": 19, "much": [32, 39], "mul": [6, 20, 33, 46], "mul_op": [9, 20], "mulop": 9, "multi": [11, 18, 37], "multiheadattent": 33, "multimod": 37, "multiparadigm": 0, "multipl": [4, 6, 7, 9, 10, 11, 19, 20, 28, 32, 47, 49], "multipli": 48, "must": [4, 5, 6, 7, 9, 10, 11, 13, 19, 28, 32, 33, 36, 40, 41, 47, 49], "mutabl": 7, "mview": 6, "my": 6, "my_numb": [23, 26], "my_op_convert": 13, "my_op_onvert": 13, "mycustomipoper": [7, 18], "mycustompipelinedconvimpl": 18, "myexport": [12, 19, 24], "myfileobj": 19, "mymodel": [19, 24], "myop": 13, "mysupportedmodel": [19, 22], "n": [4, 6, 9, 11, 12, 19, 20, 25, 27, 28, 31, 49], "n2d2": 47, "naiv": 31, "name": [4, 5, 6, 7, 9, 10, 11, 12, 13, 19, 20, 24, 27, 28, 32, 34, 45], "name1_inid": 6, "name2_outid": 6, "name_format": 10, "name_of_your_model": 27, "name_typ": 6, "name_x": 6, "nameerror": [19, 24], "nameformat": 10, "namespac": 5, "nativ": [18, 20, 33], "native_coverage_report": [20, 33], "natur": 7, "nb": [20, 30], "nb_bit": [25, 27, 31], "nb_calib": 25, "nb_chan": 20, "nb_channel": 9, "nb_cl": 30, "nb_data": [9, 24], "nb_featur": 9, "nb_in": 5, "nb_input": 9, "nb_iter": 12, "nb_out": [5, 9, 24], "nb_output": 9, "nb_param": [9, 24], "nb_sampl": [19, 31], "nb_test": 25, "nb_valid": 25, "nbchannel": 9, "nbdata": 9, "nbdim": [4, 9], "nbfeatur": 9, "nbin": 9, "nbinput": [6, 9], "nbout": 9, "nboutput": [6, 9], "nbparam": 9, "nbvalidinput": 6, "nbvalidoutput": 6, "nchw": [4, 6, 37, 39, 46], "nd": 46, "necessari": [4, 6, 12, 20, 40, 45], "necessarili": 32, "need": [4, 5, 6, 10, 18, 20, 21, 23, 24, 25, 26, 30, 32, 35, 39, 40, 46, 49], "neg": 9, "negative_slop": 9, "negativeslop": 9, "neighbour": 46, "neither": 46, "nenadmarku": 10, "neq": 49, "nest": 4, "netron": 27, "network": [0, 6, 9, 13, 18, 23, 24, 25, 27, 29, 32, 34, 35, 37, 39, 40, 41, 46], "neural": [0, 9, 18, 19, 27, 29, 31, 34, 37, 39, 40, 41, 46], "neuromorph": 0, "new": [4, 5, 6, 9, 13, 18, 25, 28, 32, 34, 40, 46, 49], "new_graph": 6, "new_nod": 6, "new_parent_input_tensor_idx": 6, "new_parent_nod": 6, "new_parent_output_tensor_idx": 6, "newg": 6, "newgrad": 4, "newli": 9, "newnam": 6, "newnod": 6, "newnodeoutid": 6, "newparentinputtensoridx": 6, "newparentnod": 6, "newparentoutputtensoridx": 6, "next": [4, 6, 18, 20, 27, 32, 39, 46, 49], "nhwc": [6, 39, 46], "nn": 21, "no_bia": [5, 9, 28, 32], "no_quant": [19, 25], "nobia": 9, "node": [7, 9, 10, 11, 13, 18, 19, 23, 24, 25, 26, 30, 31, 33, 35, 39, 45], "node_": 11, "node_convert": 20, "node_export": 13, "node_import": [13, 20], "node_inputs_nam": 13, "node_nam": [5, 6, 20], "node_or_block": 7, "node_outputs_nam": 13, "node_relu": 24, "node_swish": 24, "node_to_replac": 34, "nodeexectim": 11, "nodenam": 6, "nodeproto": 13, "nodeprt": 6, "nodeptr": [6, 10, 11], "noexcept": [2, 3, 4, 6, 7, 9, 11], "non": [6, 7, 9, 28, 32, 37, 40], "none": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 18, 19, 20, 22, 23, 24, 26, 31], "none_elt": 32, "noop_with_empty_ax": 9, "noqa": 19, "nor": 46, "normal": [10, 23, 26, 30, 31, 46], "notconnect": 11, "note": [4, 7, 19, 20, 23, 24, 26, 28, 30, 31, 32, 35, 39], "notebook": [31, 34], "noth": 4, "notic": [28, 31, 32], "notion": [18, 35, 39, 49], "now": [18, 19, 25, 26, 30, 31, 32, 34], "np": [6, 19, 20, 21, 22, 24, 25, 27, 30, 31, 34], "npu": 0, "npy": [19, 24, 27, 31], "nullptr": [6, 9, 11], "num_class": 21, "number": [2, 4, 5, 6, 9, 10, 11, 12, 19, 24, 32, 33, 34, 37, 40, 41, 46, 48], "number_np": [23, 26], "numer": 9, "numeric_limit": 4, "numpi": [9, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 34], "numpy_tensor": 20, "nvidia": [35, 39], "o": [3, 19, 20, 22, 23, 24, 26, 27, 28, 31, 32, 33], "o2": [23, 24], "ob222806": 32, "object": [1, 4, 6, 19, 24, 32, 33, 37, 40, 46], "observ": [21, 31], "obtain": [6, 11, 41], "obvious": 9, "occur": [4, 25], "off": [16, 19, 31], "offer": [0, 19, 35, 40, 41], "offset": [4, 5, 47], "often": [0, 6, 20, 31], "oh": 32, "old": [5, 6, 28], "old_graph": 6, "old_nam": 27, "old_nod": 6, "oldg": 6, "oldnod": 6, "on_click": [23, 26], "on_erase_button_click": [23, 26], "on_generate_button_click": [23, 26], "on_mouse_down": [23, 26], "on_mouse_mov": [23, 26], "on_mouse_up": [23, 26], "onc": [6, 19, 20, 25, 27, 30, 46, 49], "one": [2, 4, 5, 6, 7, 9, 10, 16, 17, 18, 19, 20, 21, 23, 26, 27, 28, 30, 32, 33, 34, 35, 37, 39, 40, 46, 49], "one_hot_encod": 30, "one_prod": 20, "ones": [6, 49], "onli": [4, 6, 7, 9, 11, 18, 19, 20, 24, 25, 28, 31, 33, 40, 41, 46, 47, 49], "onlinedoc": [23, 24], "onnx": [0, 6, 9, 10, 12, 14, 15, 21, 22, 23, 25, 26, 27, 29, 31, 32, 35, 40, 42, 46, 47, 49], "onnx__if": 32, "onnx_import": 19, "onnx_nod": [13, 20], "onnx_node_converter_": [13, 20], "onnx_tutori": 20, "op": [5, 6, 9, 10, 20, 24, 32], "op1": 49, "op_typ": 5, "opaqu": 49, "oparg": 6, "open": [0, 19, 20, 22, 24, 27, 31, 34], "opencv": [14, 37, 39, 46], "oper": [0, 4, 5, 6, 7, 8, 11, 13, 14, 18, 19, 27, 28, 31, 32, 33, 34, 35, 36, 37, 39, 41, 45, 47, 48], "operatora": 46, "operatorb": 46, "operatorimpl": [5, 9, 20, 24, 32], "operatortensor": 6, "operatortensorwithimpl": 9, "operatortyp": 9, "opitim": 35, "oppos": [6, 46], "opset": [13, 20, 32], "opt": 30, "optim": [0, 18, 30, 31, 33, 35, 40, 41, 49], "optim_sign": 25, "optimis": 16, "optimize_sign": [19, 25], "option": [4, 5, 6, 7, 9, 10, 11, 13, 14, 21, 23, 24, 27, 28, 32], "optionaldata": 6, "optionalparam": 32, "optionn": [10, 16], "optionnalparam": 9, "optyp": 28, "order": [4, 5, 6, 7, 9, 10, 11, 13, 18, 19, 20, 24, 27, 28, 31, 32, 34, 35, 37, 39, 40, 41, 45, 46, 49], "org": [0, 20, 22, 23, 24, 30, 31, 32], "origin": [4, 6, 9, 33, 46], "ossci": 22, "other": [0, 4, 5, 6, 7, 9, 10, 16, 18, 28, 32, 35, 36, 40, 42, 46, 49], "other_graph": 6, "other_in_id": 6, "other_nod": 6, "other_view": 6, "othergraph": 6, "otherinid": 6, "othernod": 6, "othertensor": 4, "otherview": 6, "otherwis": [4, 6, 9, 21], "oup": 28, "ouput": [6, 21, 34], "our": [6, 17, 19, 20, 30, 31, 32], "out": [6, 20, 24, 28, 40], "out_batch": 5, "out_cdtyp": 5, "out_chan": 5, "out_channel": [9, 30], "out_dim": 5, "out_dtyp": 5, "out_height": 5, "out_id": [5, 6], "out_nam": 5, "out_nod": 5, "out_siz": 5, "out_width": 5, "outchannel": 9, "outid": 6, "outnod": [19, 20, 21], "output": [4, 5, 6, 7, 9, 10, 12, 13, 18, 19, 21, 22, 25, 27, 28, 30, 31, 32, 33, 34, 39, 40, 46, 47, 48, 49], "output_aidg": [19, 20, 21, 22], "output_arrai": [25, 31], "output_connector": 6, "output_digit": 19, "output_dims_ord": 9, "output_idx": 32, "output_model": 19, "output_nam": 6, "output_nod": [25, 31], "output_tensor": [25, 31], "outputdim": 9, "outputdimsord": 9, "outputid": 6, "outputidx": [9, 18], "outputnam": 6, "outputnod": 6, "outputs_dim": 13, "outputs_nam": 6, "outputsnam": 6, "outsid": 6, "over": [0, 5, 6, 9, 20, 31, 32, 33, 46], "overal": 4, "overhead": 18, "overlap": [6, 7, 28, 37], "overload": [3, 6, 9, 10, 11, 18, 32], "overrid": [2, 4, 5, 6, 9], "overwrit": 4, "overwritten": 4, "own": [4, 7, 9, 18, 21, 37, 40], "own_fid": [19, 24], "p": [10, 11, 16, 18, 33], "packag": [12, 19, 22, 23, 24, 26, 27, 30, 32, 40], "pad": [7, 18, 20, 28, 47], "pad2d": 28, "pad_op": 9, "padbordertyp": 9, "paddedavgpooling2d": 9, "paddedavgpoolingop": 9, "paddedconv1d": 9, "paddedconv2d": [9, 28, 32], "paddedconvdepthwise1d": 9, "paddedconvdepthwise2d": 9, "paddedconvdepthwiseop": 9, "paddedconvop": 9, "paddedconvrelu": 28, "paddedconvrelu_prod": 28, "paddedmaxpooling2d": 9, "paddedmaxpoolingop": 9, "padding_dim": [9, 28, 32], "pair": [3, 6, 9, 11], "paltform": 49, "paradigm": 18, "parallel": [6, 18, 32, 46], "parallelschedul": 11, "param": [6, 7, 9, 10, 33], "paramet": [2, 4, 5, 7, 9, 10, 11, 12, 13, 16, 19, 23, 24, 30, 31, 32, 34, 35, 37, 39, 41, 48], "parent": [5, 6, 7, 24, 28, 31, 32, 46], "parent_list": 6, "parent_nam": 5, "parent_nod": 6, "parent_node_output": 6, "parent_vec": 6, "parenthes": 28, "parentisbackedg": 6, "parentless": 6, "parentnodetyp": 28, "pars": [7, 27, 28, 46], "parser_funct": 13, "parso": [23, 26], "part": [9, 10, 19, 20, 28, 46, 49], "parti": 40, "partial": 41, "particular": [4, 31, 33, 37], "particularli": [7, 18, 28, 46], "partion": 37, "pass": [4, 5, 6, 7, 9, 11, 19, 21, 27, 28, 30, 32, 41, 46, 49], "past": 31, "path": [5, 6, 11, 12, 13, 16, 18, 19, 20, 22, 24, 27, 28, 31, 32], "path_to_aidg": 16, "path_to_install_fold": 16, "path_to_mmd": [20, 22, 34], "path_to_sav": 13, "pathlik": 19, "pattern": [6, 7, 18, 28], "pe": 40, "peak": 5, "peak_mem": 5, "pep405": 16, "per": [4, 6, 9, 12, 31, 32, 48], "perceptron": 30, "perform": [4, 5, 6, 9, 10, 18, 19, 21, 24, 25, 27, 28, 29, 31, 32, 35, 36, 39, 41, 42, 46, 49], "permut": 9, "perspect": 19, "pexpect": [23, 26], "phase": [6, 16], "philosophi": 32, "pi": 9, "pickl": [19, 24], "piec": [19, 20, 31], "pil": 27, "pil_to_arrai": 27, "pillow": [23, 26, 27, 30], "pip": [16, 21, 23, 25, 26, 27, 30, 32], "pipelin": [18, 49], "pixel": 36, "place": [28, 47], "plan": [18, 40], "plane": 11, "plateform": 35, "platform": [0, 19, 35, 36, 39, 40, 49], "pleas": [0, 6, 17, 18, 23, 26, 27, 29, 41], "plt": [19, 20, 22, 27, 31, 34], "plugin": [14, 27, 40, 45, 49], "png": [19, 23, 26, 33], "pngimagefil": 27, "pngimageplugin": 27, "po": 6, "point": [5, 6, 18, 19, 20, 28, 30, 31, 32], "pointer": [4, 6, 9, 11, 24, 42], "polici": 11, "pool": [11, 46], "pop": [20, 25, 31, 32], "pop_op": 9, "pop_opimpl": 9, "popular": [9, 19], "posit": [4, 6, 9, 10, 23, 26, 47], "possess": 6, "possib": 40, "possibl": [6, 7, 9, 10, 11, 13, 18, 19, 27, 28, 32, 33, 40, 42, 46, 49], "possiibl": 30, "post": 6, "post_valu": 25, "povid": [19, 27], "pow": [20, 33, 46], "pow_op": [9, 20], "power": [0, 9, 15], "powop": 9, "practic": [27, 31, 49], "pre": [10, 19, 27, 32, 37], "preced": [10, 28, 32], "preceed": 34, "precis": [4, 11, 18, 31, 32, 35, 36, 37, 39, 46], "pred": 30, "predic": 4, "predict": [19, 20, 21, 22, 25], "predicted_class": 22, "prefer": 6, "prefix": [5, 6], "prepar": [5, 30, 31, 41], "preprocess": [27, 37], "present": [4, 6], "pretrain": 31, "previou": [4, 6, 23, 26, 27, 34, 49], "previous": [4, 6, 32, 39, 46, 48, 49], "primari": 18, "principl": [35, 40], "print": [4, 12, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 31, 32], "prior": [11, 32], "priorconsum": 11, "prioriti": 18, "priorproducersconsum": 11, "problem": [9, 31, 49], "problemat": 49, "process": [6, 9, 10, 11, 12, 18, 19, 27, 31, 32, 35, 37, 39, 40, 49], "prod_conso": 5, "prod_op": 30, "prodconso": [5, 32], "produc": [6, 7, 10, 11, 15, 19, 20, 24, 28, 30, 31, 33, 35, 39, 40, 45, 47, 49], "producer_op": 9, "product": 32, "profil": [12, 27], "program": [18, 35, 39, 40], "project": 32, "projet_root": 16, "prompt_toolkit": [23, 26], "propag": [6, 20, 24, 25, 30, 31, 32, 47], "proper": 31, "properti": [4, 6, 35, 46, 47], "propos": [6, 19, 46, 48], "protect": 49, "protobuff": [42, 45], "protocol": 4, "prototyp": [9, 40], "provid": [4, 5, 6, 9, 11, 12, 13, 18, 19, 21, 24, 27, 28, 32, 33, 35, 36, 37, 39, 40, 41, 46, 47, 49], "prun": 40, "prune": [31, 41], "pseudo": 6, "ptq": [15, 19, 25], "ptq_tutori": [19, 31], "ptyprocess": [23, 26], "public": [0, 2, 3, 4, 6, 7, 9, 11], "pure": [9, 23, 26], "purpos": [20, 31, 37, 49], "push": 32, "put": [6, 19, 32, 48, 49], "px": 37, "py": [5, 6, 9, 19, 24, 27, 32], "py2": 23, "py3": 23, "py_env_aidg": 16, "pybind": [12, 16], "pybind11": 42, "pygment": [23, 26], "pypi": 30, "pyplot": [19, 20, 22, 27, 31, 34], "python": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 19, 20, 22, 24, 27, 30, 35, 40, 45, 46], "python3": [16, 19, 23, 24, 26, 27, 30, 32], "python_bind": [12, 27], "pytorch": [0, 6, 15, 19, 21, 30, 32, 35, 46], "qat": 15, "qei": 25, "qom": 49, "quant": 31, "quant_accuraci": 25, "quantifi": [7, 18], "quantiti": [11, 18, 32], "quantiz": [0, 18, 40, 41], "quantize_network": [19, 25, 31], "quantized_model": 19, "quantizedmodel": 19, "queri": [7, 10, 18, 28], "queue": [6, 11], "quick": [0, 15], "quickli": [6, 40], "qzm": 49, "r": [9, 19, 20, 22, 31, 34], "rais": [4, 5, 25, 27], "rand": 34, "randn": [20, 21], "random": [4, 20, 21, 34], "randomli": [21, 37, 46], "rang": [0, 9, 19, 24, 25, 31], "rank": [4, 6, 9, 18], "rankf": 6, "rapid": 9, "rather": 32, "raw": [9, 20, 22, 27, 31, 37, 49], "rb": [19, 22, 24, 27], "re": 21, "read": [17, 19, 20, 22, 27, 34, 37], "readabl": 19, "readbatch": 4, "readi": [4, 6, 9, 18, 19, 30, 31], "readlink": 27, "readm": 40, "readrandombatch": 4, "realiz": 40, "realli": [30, 40], "realloc": 4, "reason": [4, 18, 49], "recal": 36, "receiv": [46, 49], "recent": [19, 24, 27], "recept": [9, 47], "recip": [7, 8, 9, 14, 19, 28, 32, 33, 35, 49], "recipi": [19, 47], "recogn": 49, "recognit": [19, 49], "recommend": 27, "reconfigur": 31, "reconnect": 6, "record": 32, "recquir": [19, 42, 45], "rectifi": 46, "recur": 9, "recurr": [9, 46], "recurs": [6, 10, 18, 28], "reduc": [0, 9, 20, 31, 33, 35], "reducemean": [20, 33], "reducemean_op": 9, "reducesum": 20, "reducesum_op": 9, "reduct": [9, 47], "ref": [4, 6, 10], "ref_typ": [20, 22, 31], "refcast": 4, "refcastfrom": 4, "refcontigu": 4, "refer": [0, 4, 6, 20, 23, 24, 28, 40, 41, 46, 49], "referenc": 49, "reffrom": 4, "reflect": [6, 49], "reformat_kernels_to_copi": 5, "regard": [4, 28], "regardless": 6, "regex": [7, 18, 28, 33], "regist": [5, 6, 19, 24, 35, 39, 46], "register_convert": 13, "register_export": 13, "register_gener": [5, 24], "register_import": 13, "register_metaop": [5, 24], "registeri": 6, "registr": 4, "registrar": 37, "registri": [5, 6], "regular": [28, 49], "rel": [5, 10, 11, 28, 47, 48], "relat": [13, 40], "relationship": [7, 11, 18, 28], "releas": [0, 16, 18], "reli": 33, "relu": [7, 18, 20, 21, 28, 30, 31, 32, 34, 46], "relu0": 34, "relu1": [28, 32], "relu2": [28, 32], "relu3": [28, 32], "relu5": 28, "relu_op": 9, "reluop": 9, "remain": [4, 6, 28, 32, 39, 46], "rememb": [28, 32], "remov": [6, 9, 19, 23, 24, 26, 27, 35], "remove_flatten": [10, 19, 21, 22, 23, 24, 25, 26, 31], "remove_nod": 28, "remove_optional_input": 25, "removechild": 6, "removedropout": 10, "removeflatten": 10, "removeview": 6, "renam": 27, "repeat": [4, 11], "repetit": [4, 32], "replac": [6, 7, 9, 10, 11, 15, 19, 21, 31, 32, 33, 34, 35, 46, 47], "replic": 6, "report": 20, "reprens": 37, "repres": [4, 9, 11, 13, 27, 37, 41, 46], "represent": [7, 19, 33], "reproduc": 20, "request": [20, 22, 23, 24, 25, 26, 27, 30, 31, 33], "requir": [0, 3, 4, 5, 6, 7, 9, 11, 19, 20, 21, 23, 24, 26, 28, 30, 31, 32, 34, 40, 41, 42, 46, 47], "requiredproduc": 11, "rerun": 28, "res1": 34, "res2": 34, "rescal": [25, 31], "rescaling_util": [23, 24], "reserv": 28, "reset": [4, 9, 11, 25, 31], "reset_cp_model": 11, "reset_grad": 30, "reset_schedul": [11, 25, 32, 34], "resetconnect": 6, "resetconsummerproduc": 9, "resetcpmodel": 11, "resetindexbatch": 4, "resetinput": 9, "resetschedul": 11, "reshap": [4, 10, 19, 20, 25, 31, 32, 33, 46], "reshape_op": [9, 32], "reshape_opimpl": 9, "reshapeop": 9, "residu": 6, "resiz": 4, "resize_op": 9, "resolut": 6, "resolv": [23, 24, 25, 26, 33], "resourc": [5, 27, 40, 49], "respect": [5, 35, 39], "respons": [20, 22, 31, 32, 40], "rest": 35, "restart": [23, 26], "restrict": 18, "result": [6, 7, 9, 10, 19, 25, 27, 28, 31, 32, 34, 45, 46, 47], "resum": 27, "retain": 9, "retreiv": 31, "retriev": [5, 9, 10, 11, 19], "return": [2, 4, 5, 7, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 34, 37, 40, 46, 49], "reus": [27, 47], "reuslt": 30, "revers": [6, 11], "rf": [23, 27], "rgb": [27, 37], "rh": [6, 23, 24], "rid": 31, "right": [4, 6, 18, 32, 34, 46], "rm": [19, 23, 27], "rnn": [9, 46], "robust": [35, 40, 41], "role": 40, "root": [5, 6, 7, 9, 16, 24, 25, 28, 30], "root_nod": [6, 24, 28], "rootnod": 6, "roughcanva": [23, 26], "round": [25, 31], "round_op": 9, "rounding_mod": 9, "roundingmod": 9, "routin": 31, "rparen": 49, "rtol": 19, "rtype": [6, 9, 10], "rule": [7, 9, 27, 35, 49], "run": [6, 11, 12, 20, 21, 22, 23, 24, 25, 26, 27, 30, 32, 34, 40, 41, 42, 48], "run_command": 25, "run_export": [19, 23, 24, 25], "run_sync": [12, 27], "runabl": 41, "runnabl": [32, 41], "runtim": [6, 13, 32, 40, 46], "runtimeerror": [24, 25], "s3": 22, "safe": 6, "sai": 24, "sake": [21, 49], "same": [0, 4, 6, 7, 9, 11, 16, 18, 20, 25, 28, 32, 34, 47], "sampl": [2, 4, 19, 25, 27, 30, 31], "satisfi": [23, 26, 30, 32], "satur": 0, "save": [5, 6, 11, 12, 13, 19, 20, 22, 24, 25, 27, 28, 32, 34, 35, 46], "save_factorized_static_scheduling_diagram": [11, 32], "save_scheduling_diagram": [11, 19], "save_static_scheduling_diagram": [11, 32], "savefactorizedstaticschedulingdiagram": 11, "saveschedulingdiagram": 11, "savestaticschedulingdiagram": 11, "scalar": 4, "scale": [31, 48], "scaleddotproductattent": 33, "schedul": [8, 9, 14, 15, 20, 21, 22, 23, 25, 26, 28, 30, 33, 34, 35, 41, 46, 47], "scheduler_export": [5, 19, 23, 24, 26], "schedulingel": 11, "schedulingpolici": 11, "schedulingsequenti": 19, "schedulingsequential_forward": 19, "schema": [13, 42], "scheme": 27, "scope": 6, "script": [19, 31], "scrt1": [23, 24], "se": 6, "seamless": 15, "search": [7, 9, 15, 28], "second": [4, 6, 7, 11, 28, 34, 40], "secondli": 31, "section": [20, 33, 35, 39, 40, 41, 46, 49], "secur": 40, "see": [0, 3, 6, 11, 18, 19, 20, 28, 31, 32, 39, 40, 41, 46, 49], "seem": 31, "seemless": 42, "seen": [20, 49], "segment": 36, "select": [6, 9, 11, 27, 28, 32, 33, 34, 46], "select_op": 9, "select_opimpl": 9, "self": [2, 3, 4, 5, 6, 7, 9, 11, 19, 20, 21, 24, 30, 32], "send": [6, 20, 30], "sens": [6, 28], "sep": 49, "separ": [9, 18, 28, 35, 39, 40], "seq": 7, "seq_length": [9, 32], "sequenc": [7, 9, 28, 32, 33, 35, 39], "sequenti": [6, 9, 18, 24, 28, 30, 32, 34, 35, 37, 40, 46], "sequentialschedul": [11, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 32, 33, 34], "seri": 37, "serial": [19, 41], "serv": [5, 34], "set": [4, 5, 6, 7, 9, 11, 12, 13, 16, 18, 21, 24, 25, 28, 32, 35, 40, 46, 48, 49], "set_back_edg": 9, "set_backend": [4, 6, 9, 19, 20, 21, 22, 25, 30, 31, 32, 33], "set_console_level": 33, "set_data_format": 4, "set_dataformat": [6, 9], "set_datatyp": [4, 6, 9, 19, 20, 21, 22, 25, 30, 31, 33], "set_forward_dim": [20, 24, 32], "set_grad": 4, "set_impl": [9, 20, 24, 32], "set_input": [9, 25, 34], "set_learning_rate_schedul": 30, "set_nam": 6, "set_nodes_datatyp": 25, "set_nodes_nam": 25, "set_ordered_input": 6, "set_ordered_output": [6, 33], "set_output": [9, 20], "set_paramet": 30, "set_root_nod": 6, "set_scheduling_polici": 11, "setbackedg": 9, "setbackend": [4, 6, 9, 20], "setbatch": 4, "setdataformat": [4, 6, 9], "setdatatyp": [4, 6, 9], "setgrad": 4, "setimpl": [4, 9], "setinheritedattr": 9, "setinput": 9, "setinputid": 6, "setnam": 6, "setnodesnam": 6, "setorderedinput": 6, "setorderedoutput": 6, "setoutput": 9, "setrootnod": 6, "setschedulingpolici": 11, "setup": [4, 6, 19, 30, 34], "sever": [0, 6, 7, 10, 12, 27, 28, 31, 34, 37, 40, 41, 46, 49], "sgd": 30, "sh": [19, 23, 24, 26, 27], "shall": 6, "shallow": [4, 9], "shape": [4, 6, 9, 10, 20, 21, 23, 26, 27, 32, 33], "shape_op": 9, "shape_opimpl": 9, "share": [4, 6, 9, 11], "shared_ptr": [2, 4, 6, 7, 9, 10, 11], "shiftgelu_op": 9, "shiftmax_op": 9, "short": [2, 9, 46], "shortestbranchfirst": 11, "should": [4, 5, 6, 9, 12, 13, 16, 18, 20, 25, 30, 34, 37, 40, 47], "show": [6, 16, 27, 31, 33], "show_produc": 6, "showcas": 20, "shown": 27, "showproduc": 6, "shuffl": [4, 22, 30], "shutil": [22, 27], "sibl": 28, "sigmoid": [20, 46], "sigmoid_op": 9, "sigmoidop": 9, "sign": 2, "signatur": 13, "similar": [10, 11, 18, 32, 39, 46, 47], "similarli": 42, "simpl": [0, 7, 9, 15, 19, 20, 27, 28, 32, 41], "simpler": 6, "simpli": [28, 32], "simplic": 21, "simplifi": [10, 33, 40, 42, 46, 49], "simul": 0, "simultan": 32, "sinc": [7, 9, 20, 28, 40, 46], "singl": [5, 6, 7, 9, 10, 18, 20, 28, 32, 34, 49], "single_shift": [19, 25], "singleoutput": 7, "singlepassgraphmatch": [7, 10, 18, 24, 28], "site": [19, 23, 24, 26, 27, 30, 32], "situat": 6, "size": [0, 4, 5, 6, 9, 10, 12, 24, 27, 32, 37, 40, 46, 47], "size_0": 4, "size_1": 4, "size_2": 4, "size_3": 4, "size_4": 4, "size_t": [2, 4, 6, 7, 9, 10, 11], "size_typ": [4, 9], "skip": [11, 22], "skipbackward": 11, "slice": [6, 10, 20, 34, 46], "slice_op": 9, "slice_opimpl": 9, "sliceop": 9, "slide": 9, "slope": 9, "small": [9, 31, 34], "smaller": [6, 31, 34], "smlal": [23, 24], "so": [0, 4, 6, 16, 19, 20, 24, 25, 27, 28, 31, 32, 33, 40, 46], "softmax": [20, 33, 46], "softmax_op": 9, "softmaxop": 9, "softmin": 46, "softplu": 46, "softwar": 40, "solut": 49, "solv": 36, "some": [0, 4, 6, 7, 9, 10, 11, 17, 18, 19, 24, 25, 32, 33, 36, 40, 41, 47], "sometim": [7, 18, 28], "somewher": 32, "soon": [4, 6], "sophist": [7, 18, 28], "sort": 11, "sourc": [0, 4, 5, 10, 16, 19, 23, 24, 26, 27, 35, 40], "sovereignti": 0, "space": [4, 9], "spatial": 9, "spec": 5, "special": [0, 6, 18, 19, 32], "specif": [0, 5, 6, 7, 9, 10, 18, 28, 30, 35, 39, 40, 41, 46, 47, 49], "specifi": [4, 5, 6, 9, 11, 18, 20, 24, 27, 28, 32, 33, 35, 40, 46, 47], "split": [6, 10, 20, 27, 33, 37, 40, 46, 49], "split_op": 9, "split_opimpl": 9, "splitdatabas": 37, "splite": 34, "splitext": 22, "sqrt": [4, 20, 33], "sqrt_op": 9, "sqrtop": 9, "squar": 9, "squash": 9, "squeez": 20, "squeeze_op": 9, "squeeze_opimpl": 9, "src": [4, 5, 19, 23, 24, 27], "stabil": 9, "stabl": [6, 32], "stack": [19, 24], "stack_data": [23, 26], "stackop": 9, "stackopimpl": 9, "stage": 41, "stai": [4, 18], "standalon": [18, 19], "standard": [0, 16, 18, 28, 35], "start": [0, 7, 9, 11, 19, 21, 27, 29, 32, 49], "start_": 11, "startnod": 7, "stat": [19, 23, 24, 26], "state": [15, 20, 32, 41], "state_begin": 32, "stateful": 32, "static": [4, 5, 6, 9, 11, 18, 23, 24, 28, 32, 40, 41], "static_analysi": [19, 33], "static_cast": 11, "static_fil": 5, "staticanalysi": [19, 33], "staticschedulingel": 11, "statist": 33, "stats_fold": [19, 23, 24, 26], "stats_op": [19, 33], "statu": [6, 20, 22, 23, 24, 31], "status_cod": [20, 22, 31], "std": [2, 3, 4, 6, 7, 9, 10, 11, 28], "std_line": 25, "stddev": 11, "step": [6, 9, 10, 11, 16, 18, 20, 21, 27, 31, 32, 35, 40, 42, 49], "still": [9, 10, 11, 32, 41], "stimulu": 12, "stm32h7": 26, "stock": 6, "stop": [27, 32, 49], "storag": [4, 9], "store": [3, 4, 5, 7, 11, 12, 19, 27, 28, 31, 40, 41, 46], "str": [2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 19, 20, 22, 24, 25, 27, 31], "strategi": [4, 39], "strictli": 32, "stride": [4, 5, 9, 21, 46], "stride_dim": [9, 28, 32], "stridedim": 9, "string": [2, 4, 5, 6, 7, 9, 10, 11, 13, 49], "stripe": 34, "stroke_lin": [23, 26], "stroke_styl": [23, 26], "struct": [3, 7, 11], "structur": [4, 5, 6, 19, 27, 33, 35, 39], "stub": 19, "studi": 33, "style": [6, 9], "sub": [4, 6, 7, 10, 20, 28, 32, 33, 34, 46, 49], "sub_op": 9, "subclass": [4, 5, 9, 11], "subdirectori": [5, 6], "subgraph": [46, 47, 49], "subop": 9, "subplot": [19, 31], "subprocess": 25, "subsequ": [28, 40], "subset": [7, 18, 28, 31, 49], "substitut": 6, "subtract": [4, 9], "succe": 6, "succeed": [6, 28], "success": [6, 32, 34, 49], "successfulli": [9, 20, 22, 23, 30, 31], "suffix": 28, "suggest": [6, 27], "sum": [6, 20, 22], "summar": [12, 32, 40], "summari": [19, 33], "super": [21, 24], "support": [0, 5, 9, 12, 13, 18, 19, 20, 27, 28, 32, 46, 49], "supported_graph": 20, "supported_oper": [13, 20], "suppos": [41, 46], "sure": [19, 21, 27], "swap": [6, 32], "swich": 20, "swish": 20, "swish0": 20, "swish_": 24, "swish_config": 24, "swish_export_fil": 24, "swish_forward": 24, "swish_kernel": 24, "swish_micro": 20, "swish_micro_graph": 20, "swish_nod": 20, "swish_op": 20, "swishcpp": 24, "swishimpl": 20, "switch": [24, 35, 39], "switch_id": 24, "sy": [19, 24, 28, 32], "symbol": 28, "symlink": [5, 27], "sync_image_data": [23, 26], "synchron": 12, "syntax": [7, 28, 49], "synthax": 46, "system": [0, 18, 32, 39, 40, 41, 46], "t": [4, 6, 7, 9, 19, 20, 27, 28, 30, 31, 46], "t10k": 22, "tabl": 12, "tag": 32, "tag_conditional_nod": [11, 32], "tagconditionalnod": 11, "tagforkbranch": 11, "tail": 27, "take": [4, 5, 6, 9, 13, 17, 19, 27, 31, 32, 33, 35, 37, 40, 46, 47, 49], "taken": [6, 49], "tangent": 46, "tanh": [20, 46], "tanh_op": 9, "tanhop": 9, "tar": 30, "target": [0, 4, 5, 9, 18, 19, 27, 31, 35, 36, 39, 40, 41, 46, 49], "target_typ": [19, 25], "targetreq": 4, "targettyp": 9, "task": [19, 31, 36], "team": 0, "technic": 0, "techniqu": [0, 31, 40], "teh": 6, "templat": [4, 5, 9, 12, 18, 24, 40], "template_path": 24, "temporari": 6, "tensor": [2, 6, 9, 10, 11, 20, 21, 23, 24, 25, 26, 28, 30, 31, 34, 35, 39, 46], "tensor_export": 24, "tensordim": 4, "tensorflow": [15, 42, 46], "tensorimpl": 4, "tensoropencv": 2, "tensorrt": [14, 35, 39], "term": [9, 19, 33, 35, 40, 46], "termin": 13, "test": [0, 4, 6, 7, 9, 12, 13, 18, 20, 31, 37, 40], "test_cpp_dock": 12, "test_lib_python_dock": [12, 27], "test_plugin": 12, "test_set": 25, "test_swish": 20, "text": [23, 24], "textual": [7, 18, 28], "tf2onnx": 42, "th": [6, 28, 31], "than": [4, 6, 32, 35, 39], "thank": [11, 18, 19, 34, 42], "thei": [5, 6, 7, 10, 11, 19, 28, 31, 35, 47], "them": [6, 7, 9, 10, 18, 19, 24, 28, 31, 32, 34, 39, 46, 48, 49], "themselv": [40, 46], "theori": 49, "therefor": [5, 7, 32, 40, 46, 49], "thi": [4, 5, 6, 7, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 23, 24, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 45, 46, 47, 48, 49], "third": [4, 40], "those": [16, 31, 40, 49], "thread": [11, 18], "threadpool": 11, "three": [27, 32, 37, 46], "through": [6, 9, 11, 21, 27, 28, 37, 41, 42], "throughout": 6, "throw": [6, 7, 28], "thrown": 6, "thu": [10, 11, 18, 20, 31, 32, 35], "tier": 37, "tight_layout": [19, 31], "tile": [15, 41], "tiled_conv": 34, "till": [19, 40], "time": [4, 6, 9, 11, 12, 17, 25, 32, 33, 37, 40, 41, 46, 49], "time_point": 11, "tlm": [11, 18, 32], "to_fil": [23, 26], "to_other_nod": 6, "to_tensor": 6, "tocoord": 4, "todo": [4, 6, 20], "togeth": 40, "toindex": 4, "token": [9, 11, 18, 32, 49], "tolpolog": 40, "tonod": 6, "tool": [18, 19, 20, 49], "toolchain": [19, 24], "toolkit": 40, "toothernod": 6, "tootherview": 6, "top": 22, "top1_accuraci": 22, "topk_op": 9, "topolog": [0, 6, 39, 46, 49], "topologi": [18, 46], "torch": [21, 30, 32, 42], "torchvis": [25, 30, 42], "toronto": 30, "tostr": 4, "tot_acc": 30, "total": [9, 11, 22, 33], "totensor": [6, 25, 30], "toto": 5, "toward": [6, 46], "tpu": 10, "traceback": [19, 24, 27], "track": 6, "train": [0, 2, 4, 9, 19, 21, 22, 25, 36, 37, 41, 46], "training_mod": 9, "trainingmod": 9, "trainset": 30, "traitlet": [23, 26], "transact": [11, 18, 32], "transfert": 46, "transfomr": 10, "transform": [2, 6, 10, 23, 24, 25, 26, 27, 29, 30, 34, 40, 41, 46, 47], "transit": 49, "transmitt": 6, "transpos": [4, 6, 19, 20, 33, 46], "transpose_op": 9, "transposeimpl": 9, "transposit": [4, 10, 49], "treat": 6, "tree": [19, 24, 49], "trigger": [6, 32], "trivial": [18, 31], "trt": [12, 27], "trt_version": [12, 27], "true": [4, 5, 6, 7, 9, 10, 11, 12, 13, 19, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 34, 49], "truth": 35, "try": [6, 23, 25, 26, 27, 32], "tune": 18, "tupl": [3, 4, 6, 9, 13, 37], "tuple_out": 30, "tuto_util": [19, 24, 28, 32], "tutori": [0, 17, 18, 19, 21, 23, 24, 26, 28, 30, 31, 32, 33, 34], "tvm": 18, "two": [4, 6, 9, 11, 16, 18, 27, 28, 32, 37, 40, 46, 47, 48, 49], "type": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 16, 18, 19, 20, 24, 25, 30, 31, 32, 33, 35, 39, 46, 49], "type_": 3, "typenam": 4, "typic": [5, 32], "typing_extens": [23, 26], "u": 31, "ubyt": 22, "uint": 37, "uint16": [5, 6], "uint16_t": 5, "uint32": 5, "uint32_t": [2, 5, 9, 23, 24], "uint64": 5, "uint64_t": 5, "uint8": 5, "uint8_t": [2, 5], "unabl": 32, "unalt": 49, "unchang": 9, "uncompress": 31, "unconnect": 6, "undefin": [4, 5, 6, 9, 23, 24, 32], "under": [0, 5, 37], "undergon": 40, "understand": 10, "unfold": 10, "unfold_op": 9, "unfold_opimpl": 9, "unic": 6, "unimpl": 49, "uninstal": 30, "union": [2, 5, 19], "uniqu": [5, 6, 10, 18, 28, 33], "unique_nam": 10, "uniquenam": 10, "unit": [9, 10, 40, 46], "unitari": 40, "unknown": [9, 20, 32, 45, 46], "unless": 5, "unlik": [4, 18], "unnecessari": [32, 49], "unord": 28, "unquantifi": [7, 18, 28], "unsign": 2, "unsqueez": 20, "unsqueeze_op": 9, "unsqueeze_opimpl": 9, "unsupport": [9, 18, 20, 24], "until": [6, 10, 11, 32], "unus": 4, "up": [12, 18, 40], "updat": [1, 6, 9, 11, 23, 26, 30, 31, 32, 33, 46, 47], "updateconsummerproduc": 9, "updatenodenam": 6, "upon": 27, "upper": 11, "uppernod": 11, "uppernodeinputconnect": 11, "uppernodeinputfound": 11, "url": [20, 22, 27, 30, 34], "urllib": [22, 27], "urllib3": [23, 26, 30], "urlopen": 27, "urlpars": 27, "urlretriev": 22, "us": [0, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 45, 46, 49], "usabl": [6, 10, 21], "usag": [0, 5, 6, 12, 22, 33, 49], "use_cuda": [19, 25], "useful": 37, "useless": [23, 24, 26], "user": [0, 6, 17, 18, 19, 27, 32, 35, 40, 46, 48, 49], "userwarn": 32, "usr": [19, 23, 24, 27], "usual": 18, "utf": 34, "util": [12, 14, 19, 23, 24, 25, 26, 28, 31, 32, 33], "v": [6, 16, 25], "val": [4, 49], "val_acc": 22, "val_dataprovid": 22, "val_mnist": 22, "valid": [4, 6, 19, 24, 27, 37, 40], "validi": 4, "validtensor": 11, "valu": [2, 4, 6, 9, 11, 13, 16, 19, 20, 24, 30, 31, 32, 34, 46], "valueerror": 27, "vanish": 9, "variabl": [5, 25, 32, 37], "variant": 9, "variou": [9, 19, 37], "vbox": [23, 26], "ve": 31, "vector": [2, 3, 4, 6, 9, 10, 11, 24], "venv": [19, 23, 24, 26, 27, 30], "verbos": [6, 13, 19, 21, 25, 31, 32, 33, 46], "veri": [10, 31], "verif": 6, "verifi": [6, 33], "version": [6, 12, 13, 19, 32], "versu": 40, "via": [5, 27, 33, 35, 39, 40, 42, 45, 46], "view": [6, 10, 18, 21, 42, 45, 49], "virtual": [2, 4, 5, 6, 9, 11], "virtualenv": 16, "vision": 27, "visit": 49, "visual": [11, 19, 20, 22, 27, 31, 33], "visualis": 20, "visualize_mmd": [19, 20, 22, 24, 28, 32, 34], "void": [4, 6, 7, 9, 10, 11], "vt": 4, "w": 9, "wa": [4, 6, 28, 34], "wai": [5, 6, 18, 19, 20, 30, 49], "wait": 11, "walk": [6, 27], "wall": [23, 24], "want": [4, 6, 10, 19, 20, 21, 24, 28, 31, 32, 49], "warn": [6, 16, 23, 24, 31, 32], "wb": [20, 22, 27, 31], "wcwidth": [23, 26], "we": [4, 6, 7, 10, 19, 20, 21, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 47, 48, 49], "weak": 6, "weight": [6, 7, 9, 28, 30, 32, 37, 45], "weightinterleaving_op": 9, "welcom": 4, "well": [4, 5, 6, 7, 11, 15, 19, 20, 28, 32, 40], "were": [4, 6, 33], "wether": [5, 32], "wextra": [23, 24], "wget": 27, "what": [18, 28, 30, 32, 35, 47, 49], "whatev": [19, 40], "whatsoev": 18, "when": [1, 4, 6, 7, 9, 10, 11, 12, 19, 28, 32, 40, 42, 46, 47, 49], "where": [4, 5, 6, 9, 10, 11, 12, 13, 31, 32, 46], "whether": [4, 6, 9, 49], "which": [4, 5, 6, 7, 9, 10, 12, 13, 16, 18, 19, 20, 28, 30, 32, 33, 35, 36, 37, 39, 40, 42, 46, 48, 49], "while": [9, 31, 35, 39], "whitespac": 7, "whl": [23, 30], "who": 18, "whole": [40, 46], "whose": [6, 33], "why": [0, 15, 28, 32, 35, 39], "wide": 0, "widgetsnbextens": [23, 26], "width": [5, 21, 23, 26], "window": 9, "wise": [4, 9, 36, 46], "wish": 6, "within": [5, 6, 9, 25, 42, 46], "without": [4, 6, 7, 11, 18, 19, 32, 35, 40, 41, 42, 46, 48], "won": 46, "work": [6, 7, 9, 10, 11, 21, 32, 39, 40, 42, 46], "workaround": 32, "would": [6, 19, 28, 32], "wrap": [5, 11, 19, 23, 24, 26, 33, 42], "wrap_around_buff": 11, "wraparoundbuff": 11, "wrapper": [5, 42], "write": [7, 18, 20, 22, 27, 28, 30, 31, 40], "writefil": 27, "wrong": [7, 28, 32], "wunus": [23, 24], "www": 30, "x": [6, 9, 20, 21, 23, 24, 26, 31, 32, 46], "x86_64": [23, 24], "xavier_uniform_fil": 30, "y": [6, 20, 23, 26, 31, 46], "yet": [4, 6, 9, 19, 27, 28, 32, 33, 46], "you": [4, 6, 7, 9, 12, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 39, 40, 49], "your": [0, 7, 12, 16, 18, 21, 27, 28, 32], "z": [6, 49], "z0": 49, "z1": 6, "z2": 6, "z3": 6, "za": 49, "zero": [4, 9, 28, 31, 46, 49], "\u00ecnstall": 16}, "titles": ["Aidge", "Aidge backend CPU", "Aidge backend OpenCV API", "Backend", "Data", "Export", "Graph", "Graph Matching", "Aidge core API", "Operators", "Recipes", "Scheduler", "Aidge Export TensorRT API", "Aidge ONNX API", "API", "Get Started", "Install", "Quick Start", "Why Aidge?", "Aidge demonstration", "Aidge ONNX tutorial", "Backend CUDA example", "Data provider tutorial", "Export 101", "Add a custom operator to the C++ export", "Quantized model C++ export", "STM32 export", "TensorRT export", "Graph matching and manipulation", "Tutorials", "Training a simple Neural Network", "Post Training Quantization with AIDGE", "Understanding Aidge\u2019s scheduling", "Perform static analysis on a neural network model", "Aidge tiling demonstration", "Framework architecture", "Benchmark neural network model", "Data", "Ensure robustness", "Runtime graph execution", "Perform an export", "User Guide", "Plateform interoperability", "Learn on edge", "Learn model", "Load and store model", "Computational graph", "Optimize graph", "Static analysis", "Transform graph"], "titleterms": {"": 32, "0": 27, "1": 27, "101": 23, "2": 27, "3": 27, "4": 27, "The": 31, "accuraci": 31, "ad": 47, "adapt": 10, "add": [9, 10, 24, 40], "advanc": 28, "aggreg": 48, "agnost": 18, "aidg": [0, 1, 2, 8, 12, 13, 18, 19, 20, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34], "altern": 28, "an": [19, 20, 22, 40, 46], "analysi": [19, 33, 48], "ani": 28, "api": [2, 8, 12, 13, 14], "appli": 31, "architectur": [35, 40], "art": 18, "attribut": [28, 40], "averag": 9, "backend": [1, 2, 3, 10, 21, 35, 39], "base": [9, 11, 28], "batchnorm": [9, 10], "benchmark": 36, "block": 28, "build": 16, "c": [16, 19, 24, 25, 32], "calibr": 27, "cast": [9, 10], "chang": 47, "character": 18, "class": [9, 11], "clone": 46, "code": 18, "compil": [16, 18, 19, 23, 26], "complet": 40, "comput": [20, 31, 36, 40, 46, 48], "concat": 9, "condit": 32, "configur": [19, 33], "connector": 6, "constant": 10, "constraint": 40, "consum": 18, "conv": [9, 10], "convdepthwis": 9, "convert": [10, 13], "copi": 46, "core": [8, 35, 46], "cpp": 24, "cpu": 1, "creat": [19, 20, 25, 30, 32, 46], "creation": 31, "cuda": 21, "custom": 24, "data": [4, 22, 32, 37], "databas": [2, 4, 25, 30, 37], "dataflow": [18, 32], "dataprovid": [4, 37], "dataset": [27, 31], "deep": 46, "default": 39, "defin": [18, 34], "definit": 46, "demand": 32, "demonstr": [19, 34], "describ": 49, "design": 40, "dimens": 20, "direct": 32, "div": 9, "do": 31, "done": 31, "download": [19, 23, 25, 26, 31, 33], "draw": [23, 26], "dropout": 10, "edg": [28, 43], "effect": 18, "engin": 18, "ensur": 38, "environ": 31, "erf": 9, "evalu": 22, "exampl": [6, 21, 31, 46], "excut": 36, "execut": 39, "expand": [10, 49], "expans": 28, "explicit": [10, 46], "explor": 33, "export": [5, 12, 13, 19, 23, 24, 25, 26, 27, 29, 40], "extra": 40, "factor": 28, "fc": [9, 10], "file": [19, 40], "first": 28, "flatten": 10, "fold": 10, "footprint": 48, "framework": 35, "from": [23, 26, 45, 48], "function": [12, 13, 28, 29, 34, 41, 46, 49], "fuse": [10, 47], "gather": 9, "gener": [9, 18, 19, 20, 23, 26, 27, 46], "get": [15, 48], "graph": [6, 7, 12, 18, 19, 24, 28, 33, 39, 40, 46, 47, 49], "graphview": 6, "guid": 41, "hand": 33, "hardwar": [18, 40], "helper": [6, 12], "heurist": 18, "high": 41, "i": [0, 31], "ident": 9, "implement": [3, 20, 35, 39, 40, 46, 47], "import": [13, 19, 20, 24, 31, 33], "infer": [19, 31, 33], "input": [3, 19, 23, 26], "instal": [16, 22], "int8": 25, "integr": 40, "interoper": [18, 42], "interpret": 49, "introduct": 46, "ir": 18, "isomorph": 47, "kera": 42, "kernel": 40, "kpi": 48, "lambda": 28, "last": 28, "layer": 47, "leakyrelu": 9, "learn": [30, 43, 44], "lenet": 22, "level": 41, "lexer": 49, "lib": 5, "librari": 40, "licens": 0, "like": 22, "linux": 16, "load": [23, 24, 25, 26, 45], "loop": 30, "lstm": 9, "machin": 49, "main": 19, "make": [12, 46], "manipul": [23, 25, 26, 28], "map": [18, 40], "master": 32, "match": [7, 28, 49], "matmul": [9, 10, 47], "measur": 36, "memor": 9, "memori": 48, "mermaid": 34, "meta": [9, 10], "metanod": [20, 49], "method": 18, "metric": 36, "mnist": 2, "model": [18, 19, 20, 23, 24, 25, 26, 27, 30, 31, 32, 33, 36, 40, 42, 44, 45, 47], "modifi": 27, "move": [9, 10], "mul": 9, "multi": 47, "need": [19, 31, 33], "network": [19, 30, 31, 33, 36], "neural": [30, 33, 36], "new": 20, "node": [5, 6, 20, 28, 32, 40, 46, 48, 49], "note": 6, "notebook": [19, 20, 33], "number": [23, 26], "numpi": 42, "object": 30, "onc": 32, "onli": 32, "onnx": [13, 18, 19, 20, 24, 33, 45], "opencv": 2, "oper": [9, 10, 20, 24, 46, 49], "operatortensor": 9, "optim": [19, 29, 47], "option": [12, 16, 19], "output": [3, 20], "overview": [36, 41, 48, 49], "own": [23, 26], "p": 32, "pad": 9, "paddedavgpool": 9, "paddedconv": 9, "paddedconvdepthwis": 9, "paddedmaxpool": 9, "parallel": [11, 28], "paramet": [6, 40, 46], "parser": 49, "partit": 37, "pattern": 49, "perform": [22, 33, 40], "phase": 40, "pipelin": [31, 32], "plateform": 42, "plugin": [12, 35, 46], "pool": 9, "pop": 9, "post": 31, "pow": 9, "power": 18, "predefin": 9, "prepar": 27, "produc": [9, 18, 32, 46], "project": 40, "propos": 47, "provid": [20, 22], "ptq": [18, 31], "python": 16, "pytorch": [18, 42], "qat": 18, "quantifi": 28, "quantiz": [25, 27, 31], "quick": 17, "recip": 10, "reducemean": 9, "regex": 49, "regist": [13, 20], "relu": [9, 24], "remov": [10, 28, 49], "replac": [18, 24, 28, 49], "requir": [22, 27], "reset": 32, "reshap": 9, "retriev": 20, "return": 6, "robust": 38, "rule": [28, 40], "run": [19, 31, 33], "runtim": 39, "schedul": [5, 11, 18, 19, 24, 31, 32, 39, 40], "score": 36, "script": 27, "seamless": 18, "search": 18, "select": 39, "sequenti": 11, "set": [19, 20, 30, 31, 33], "setup": 31, "share": 46, "sigmoid": 9, "simpl": [18, 30], "slice": 9, "softmax": 9, "solver": 49, "some": [28, 31], "spatial": 47, "specif": 3, "specifiyng": 28, "sqrt": 9, "start": [15, 17], "state": [18, 49], "static": [19, 33, 48], "stimuli": 37, "stm32": 26, "store": 45, "strategi": 40, "structur": 37, "sub": 9, "subgraph": 48, "support": 24, "swish": 24, "syntax": 46, "tanh": 9, "tensor": [4, 19, 32, 37, 42], "tensorflow": 18, "tensorrt": [12, 27], "test": [19, 23, 26, 27], "thi": 27, "tile": [10, 18, 34, 47], "time": 36, "topologi": 47, "train": [30, 31], "transform": [19, 33, 49], "transmitt": 46, "transpos": [9, 10], "tutori": [20, 22, 27, 29], "type": 28, "understand": 32, "up": [19, 20, 30, 31, 33], "updat": 20, "usag": 28, "user": 41, "util": 2, "view": 46, "visual": 34, "well": 18, "what": [0, 31], "whole": 32, "why": 18, "work": [20, 31], "workflow": 41, "your": [23, 26]}}) \ No newline at end of file diff --git a/source/API/BackendCPU/index.html b/source/API/BackendCPU/index.html index 364c80b44b3db6e86dc6278775f4f1d652815aec..dd7bd1620f421e63961f572f919537b83c835489 100644 --- a/source/API/BackendCPU/index.html +++ b/source/API/BackendCPU/index.html @@ -60,7 +60,7 @@ <link rel="prev" title="Export" href="../Core/export.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/BackendOPENCV/index.html b/source/API/BackendOPENCV/index.html index 89b6adb18d79eb9274a1a32f8f50bfa20677316c..1c354923023a9e6b877fa4ebecccec9498c84de3 100644 --- a/source/API/BackendOPENCV/index.html +++ b/source/API/BackendOPENCV/index.html @@ -60,7 +60,7 @@ <link rel="prev" title="Aidge ONNX API" href="../Onnx/index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/Core/backend.html b/source/API/Core/backend.html index fa17a0fbf57b1447d60092d11f876e0760f8bb30..e82e5e0e93cc0704735270f41e9c5f21b4a52b6d 100644 --- a/source/API/Core/backend.html +++ b/source/API/Core/backend.html @@ -60,7 +60,7 @@ <link rel="prev" title="Operators" href="operator.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/Core/data.html b/source/API/Core/data.html index ae164b31a5e2f9200b8dbe385a2bcc785956cf08..fba93fc77f1d9d27e9911a7bca3cddf5dda1a22c 100644 --- a/source/API/Core/data.html +++ b/source/API/Core/data.html @@ -60,7 +60,7 @@ <link rel="prev" title="Aidge core API" href="index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -530,6 +530,16 @@ Python</label><div class="sd-tab-content docutils"> <span class="sig-name descname"><span class="pre">sqrt</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.Tensor" title="aidge_core.aidge_core.Tensor"><span class="pre">aidge_core.aidge_core.Tensor</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#aidge_core.Tensor" title="aidge_core.aidge_core.Tensor"><span class="pre">aidge_core.aidge_core.Tensor</span></a></span></span><a class="headerlink" href="#aidge_core.Tensor.sqrt" title="Link to this definition">#</a></dt> <dd></dd></dl> +<dl class="py method"> +<dt class="sig sig-object py" id="aidge_core.Tensor.stride"> +<span class="sig-name descname"><span class="pre">stride</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.Tensor" title="aidge_core.aidge_core.Tensor"><span class="pre">aidge_core.aidge_core.Tensor</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">idx</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#aidge_core.Tensor.stride" title="Link to this definition">#</a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="aidge_core.Tensor.strides"> +<span class="sig-name descname"><span class="pre">strides</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.Tensor" title="aidge_core.aidge_core.Tensor"><span class="pre">aidge_core.aidge_core.Tensor</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.Tensor.strides" title="Link to this definition">#</a></dt> +<dd></dd></dl> + <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.Tensor.undefined"> <span class="sig-name descname"><span class="pre">undefined</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.Tensor" title="aidge_core.aidge_core.Tensor"><span class="pre">aidge_core.aidge_core.Tensor</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#aidge_core.Tensor.undefined" title="Link to this definition">#</a></dt> @@ -660,6 +670,24 @@ C++</label><div class="sd-tab-content docutils"> </dl> </dd></dl> +<dl class="cpp function"> +<dt class="sig sig-object cpp" id="_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E"> +<span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="k"><span class="pre">typename</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">T</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIZE_0</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIZE_1</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIZE_2</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIZE_3</span></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SIZE_4</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="classAidge_1_1Tensor_1a6f6f7eb7c0804e09904adb9e8c038789"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">constexpr</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tensor</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">Array5D</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Aidge::Tensor::Tensor::T"><span class="n"><span class="pre">T</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Aidge::Tensor::Tensor::SIZE_0"><span class="n"><span class="pre">SIZE_0</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Aidge::Tensor::Tensor::SIZE_1"><span class="n"><span class="pre">SIZE_1</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Aidge::Tensor::Tensor::SIZE_2"><span class="n"><span class="pre">SIZE_2</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Aidge::Tensor::Tensor::SIZE_3"><span class="n"><span class="pre">SIZE_3</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Aidge::Tensor::Tensor::SIZE_4"><span class="n"><span class="pre">SIZE_4</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">arr</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E" title="Link to this definition">#</a><br /></dt> +<dd><p>Construct a new <a class="reference internal" href="#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> object from the 5-dimensions Array helper. </p> +<dl class="field-list simple"> +<dt class="field-odd">Template Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>T</strong> – datatype </p></li> +<li><p><strong>SIZE_0</strong> – first array dimension. </p></li> +<li><p><strong>SIZE_1</strong> – second array dimension. </p></li> +<li><p><strong>SIZE_2</strong> – third array dimension. </p></li> +<li><p><strong>SIZE_3</strong> – fourth array dimension. </p></li> +<li><p><strong>SIZE_4</strong> – fifth array dimension. </p></li> +</ul> +</dd> +</dl> +</dd></dl> + <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge6Tensor6TensorERK6Tensor"> <span class="target" id="classAidge_1_1Tensor_1ac4bf024ec348340b67547a760521501f"></span><span class="sig-name descname"><span class="n"><span class="pre">Tensor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5Aidge6Tensor6TensorERK6Tensor" title="Aidge::Tensor::Tensor"><span class="n"><span class="pre">Tensor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">other</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge6Tensor6TensorERK6Tensor" title="Link to this definition">#</a><br /></dt> @@ -2023,6 +2051,8 @@ C++</label><div class="sd-tab-content docutils"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.set_grad"><code class="docutils literal notranslate"><span class="pre">Tensor.set_grad()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.size"><code class="docutils literal notranslate"><span class="pre">Tensor.size()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.sqrt"><code class="docutils literal notranslate"><span class="pre">Tensor.sqrt()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.stride"><code class="docutils literal notranslate"><span class="pre">Tensor.stride()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.strides"><code class="docutils literal notranslate"><span class="pre">Tensor.strides()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.undefined"><code class="docutils literal notranslate"><span class="pre">Tensor.undefined()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Tensor.zeros"><code class="docutils literal notranslate"><span class="pre">Tensor.zeros()</span></code></a></li> </ul> @@ -2036,6 +2066,7 @@ C++</label><div class="sd-tab-content docutils"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4I0_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array2DI1T6SIZE_06SIZE_1E"><code class="docutils literal notranslate"><span class="pre">Tensor()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array3DI1T6SIZE_06SIZE_16SIZE_2E"><code class="docutils literal notranslate"><span class="pre">Tensor()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array4DI1T6SIZE_06SIZE_16SIZE_26SIZE_3E"><code class="docutils literal notranslate"><span class="pre">Tensor()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4I0_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tE_NSt6size_tEEN5Aidge6Tensor6TensorERR7Array5DI1T6SIZE_06SIZE_16SIZE_26SIZE_36SIZE_4E"><code class="docutils literal notranslate"><span class="pre">Tensor()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge6Tensor6TensorERK6Tensor"><code class="docutils literal notranslate"><span class="pre">Tensor()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge6Tensor6TensorERR6Tensor"><code class="docutils literal notranslate"><span class="pre">Tensor()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge6TensoraSERK6Tensor"><code class="docutils literal notranslate"><span class="pre">operator=()</span></code></a></li> diff --git a/source/API/Core/export.html b/source/API/Core/export.html index 047e2413d00d2217cf3288bc82a889c50cdd609a..f1ddabcafa7b02703d379fe141e8ccbbf8b58251 100644 --- a/source/API/Core/export.html +++ b/source/API/Core/export.html @@ -60,7 +60,7 @@ <link rel="prev" title="Recipes" href="recipes.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/Core/graph.html b/source/API/Core/graph.html index 5c84578aca705864b185f0a7aeadaded3550542d..a231fadc8730b5d3b59be883c35ed03050034639 100644 --- a/source/API/Core/graph.html +++ b/source/API/Core/graph.html @@ -60,7 +60,7 @@ <link rel="prev" title="Data" href="data.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -1745,7 +1745,20 @@ Python</label><div class="sd-tab-content docutils"> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.clone"> <span class="sig-name descname"><span class="pre">clone</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></span><a class="headerlink" href="#aidge_core.GraphView.clone" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Clone the current GraphView using a callback function for the Node cloning, allowing to specify how each +Node should be cloned or replaced by another Node type, or removed (i.e. replaced by identity). +When a Node is removed, the clone() method automatically finds the next valid parent in line, going backward in +the graph and connects it if that makes sense without ambiguity (effectively treating the removed Node as an +identity operation).</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>Cloned GraphView</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.GraphView">GraphView</a></p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.compile"> @@ -1878,36 +1891,94 @@ dims were previously forwarded or not.</p> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_node"> <span class="sig-name descname"><span class="pre">get_node</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.GraphView.get_node" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Get the Node with the corresponding name if it is in the GraphView.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>node_name</strong> (<em>string</em>) – The name of the Node</p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>The Node of the GraphView with corresponding name</p> +</dd> +<dt class="field-odd">Return type<span class="colon">:</span></dt> +<dd class="field-odd"><p><a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a></p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_nodes"> <span class="sig-name descname"><span class="pre">get_nodes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">set</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_nodes" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Get the Nodes in the GraphView.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>List of the GraphView’s Nodes</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>List[<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>]</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_ordered_inputs"> <span class="sig-name descname"><span class="pre">get_ordered_inputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_ordered_inputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Get inputs of the current GraphView with their associated id. +The rank of the nodes are their rank in the vector.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>The pairs Node, inputId of each input of the graphView</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>List[(<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>, int)]</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_ordered_nodes"> <span class="sig-name descname"><span class="pre">get_ordered_nodes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">reversed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_ordered_nodes" title="Link to this definition">#</a></dt> -<dd><p>Get ordered nodes for the graph view</p> +<dd><p>Get a topological node order for an acyclic walk of the graph. +Graph cycles are broken on operator back edges such that resolution on +single level lattice can be done in a single pass as it is +the case generally for static resolution of Tensor shapes/datatypes.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>reversed</strong> (<em>bool</em>) – if True, returns a topological order of the reversed graph</p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>the ordered list of nodes</p> +</dd> +<dt class="field-odd">Return type<span class="colon">:</span></dt> +<dd class="field-odd"><p>List[<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>]</p> +</dd> +</dl> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_ordered_outputs"> <span class="sig-name descname"><span class="pre">get_ordered_outputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_ordered_outputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Get outputs of the current GraphView with their associated id. +The rank of the nodes are their rank in the vector.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>The pairs Node, outputId of each output of the graphView</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>List[(<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>, int)]</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_output_nodes"> <span class="sig-name descname"><span class="pre">get_output_nodes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">set</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_output_nodes" title="Link to this definition">#</a></dt> <dd><p>Get set of output Nodes.</p> <dl class="field-list simple"> -<dt class="field-odd">Return type<span class="colon">:</span></dt> -<dd class="field-odd"><p>list[<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>]</p> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>the input Nodes of the Graph</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>list[<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>]</p> </dd> </dl> </dd></dl> @@ -1915,27 +1986,105 @@ dims were previously forwarded or not.</p> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_ranked_nodes"> <span class="sig-name descname"><span class="pre">get_ranked_nodes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_ranked_nodes" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Get the ranked list of nodes in the GraphView. +Node ranking if performed the following:</p> +<ul class="simple"> +<li><p>The root node is put in the ranked list first (rank 1);</p></li> +<li><p>Then, its children (in order of outputs) are added in the ranked list;</p></li> +<li><p>Then, its parents (in order of inputs) are added in the ranked list;</p></li> +<li><p>The children and parents of the next node in the ranked list are then added to the list, and so on.</p></li> +<li><p>Any remaining nodes have no path to the root node and are added in arbitrary order. In this case, the ranking is not guaranteed to be unique.</p></li> +</ul> +<p>If the ranking cannot be guaranteed to be unique, the second item indicates +the rank from which unicity cannot be guaranteed.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>Pair with the list of ranked nodes and the size of the ranked sub-list where unicity is guaranteed.</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>(<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>, int)</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.get_ranked_nodes_name"> <span class="sig-name descname"><span class="pre">get_ranked_nodes_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mark_non_unicity</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.get_ranked_nodes_name" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Get the nodes name according to the GraphView nodes ranking.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>format</strong> (<em>string</em>) – The formatting string to be used in the output f-string.The usable positional arguments are the following: {0} node name, {1} node type, {2} rank, {3} type rank</p></li> +<li><p><strong>markNonUnicity</strong> (<em>bool</em>) – If true, non unique ranking is prefixed with “?â€</p></li> +</ul> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>map(Node, string) A map with the corresponding names</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.in_view"> <span class="sig-name descname"><span class="pre">in_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#aidge_core.GraphView.in_view" title="Link to this definition">#</a></dt> <dd><p>Overloaded function.</p> -<ol class="arabic simple"> -<li><p>in_view(self: aidge_core.aidge_core.GraphView, arg0: aidge_core.aidge_core.Node) -> bool</p></li> -<li><p>in_view(self: aidge_core.aidge_core.GraphView, arg0: str) -> bool</p></li> +<ol class="arabic"> +<li><p>in_view(self: aidge_core.aidge_core.GraphView, arg0: aidge_core.aidge_core.Node) -> bool</p> +<blockquote> +<div><p>Check that a node is in the current GraphView.</p> +<dl class="field-list simple"> +<dt class="field-odd">param NodePtr<span class="colon">:</span></dt> +<dd class="field-odd"><p>The Node that is checked</p> +</dd> +<dt class="field-even">type Node<span class="colon">:</span></dt> +<dd class="field-even"><p>Node that is checked</p> +</dd> +<dt class="field-odd">return<span class="colon">:</span></dt> +<dd class="field-odd"><p>True if the Node is in the GraphView, False otherwise</p> +</dd> +<dt class="field-even">rtype<span class="colon">:</span></dt> +<dd class="field-even"><p>bool</p> +</dd> +</dl> +</div></blockquote> +</li> +<li><p>in_view(self: aidge_core.aidge_core.GraphView, arg0: str) -> bool</p> +<blockquote> +<div><p>Check that a node is in the current GraphView based on its name.</p> +<dl class="field-list simple"> +<dt class="field-odd">param nodeName<span class="colon">:</span></dt> +<dd class="field-odd"><p>The name of the Node that is checked</p> +</dd> +<dt class="field-even">type nodeName<span class="colon">:</span></dt> +<dd class="field-even"><p>Node</p> +</dd> +<dt class="field-odd">return<span class="colon">:</span></dt> +<dd class="field-odd"><p>True if the Node is in the GraphView, False otherwise</p> +</dd> +<dt class="field-even">rtype<span class="colon">:</span></dt> +<dd class="field-even"><p>bool</p> +</dd> +</dl> +</div></blockquote> +</li> </ol> </dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.inputs"> <span class="sig-name descname"><span class="pre">inputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.inputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>List outside input connections of the GraphView. +The vector size is guaranteed to match the number of outside inputs of the GraphView. +If there is no external connection to a given input, a pair of nullptr and gk_IODefaultIndex is returned.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>A list containing the pairs Node, input indexes.</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>List[<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>, int]</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.insert_parent"> @@ -1945,12 +2094,31 @@ dims were previously forwarded or not.</p> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.log_outputs"> <span class="sig-name descname"><span class="pre">log_outputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.log_outputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Logs the output of all nodes of the graph in a directory +In the specified directory, it will create a subdirectory for each Node of the GraphView +In that sub-directory, each output of the Node will be saved in a different .log file</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>path</strong> (<em>string</em>) – The path to the folder where we wish to stock the logs</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.outputs"> <span class="sig-name descname"><span class="pre">outputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#aidge_core.GraphView.outputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>List outside output connections of the GraphView. +The vector size is guaranteed to match the number of outputs of the GraphView. +If there is no connection to a given output, the corresponding sub-vector will be empty.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>A list containing the pairs Node, output indexes.</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p>List[<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a>, int]</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.replace"> @@ -1990,13 +2158,13 @@ dims were previously forwarded or not.</p> <dd class="field-odd"><p>Nodes actually connected in GraphViews.</p> </dd> <dt class="field-even">type old_nodes<span class="colon">:</span></dt> -<dd class="field-even"><p>Node</p> +<dd class="field-even"><p>List[Node]</p> </dd> <dt class="field-odd">param new_nodes<span class="colon">:</span></dt> <dd class="field-odd"><p>Nodes with inner connections already taken care of.</p> </dd> <dt class="field-even">type new_nodes<span class="colon">:</span></dt> -<dd class="field-even"><p>Node</p> +<dd class="field-even"><p>List[Node]</p> </dd> <dt class="field-odd">return<span class="colon">:</span></dt> <dd class="field-odd"><p>Whether any replacement has been made.</p> @@ -2013,7 +2181,16 @@ dims were previously forwarded or not.</p> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.root_node"> <span class="sig-name descname"><span class="pre">root_node</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.GraphView.root_node" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Returns the rootNode of the GraphView</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>The root Node of the GraphView</p> +</dd> +<dt class="field-even">Return type<span class="colon">:</span></dt> +<dd class="field-even"><p><a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node">Node</a></p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.save"> @@ -2021,7 +2198,11 @@ dims were previously forwarded or not.</p> <dd><p>Save the GraphView as a Mermaid graph in a .md file at the specified location.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>path</strong> (<em>str</em>) – save location</p> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>path</strong> (<em>str</em>) – save location</p></li> +<li><p><strong>verbose</strong> (<em>bool</em>) – If true give more informations in the graph during the saving process</p></li> +<li><p><strong>show_producers</strong> (<em>bool</em>) – if true, shows the producer Nodes as well</p></li> +</ul> </dd> </dl> </dd></dl> @@ -2029,17 +2210,38 @@ dims were previously forwarded or not.</p> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_backend"> <span class="sig-name descname"><span class="pre">set_backend</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">backend</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.set_backend" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Set the same backend for each Operator of the GraphView object’s Nodes.*</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>backend</strong> (<em>string</em>) – Backen used, default is cpu</p></li> +<li><p><strong>device</strong> (<em>int</em>) – Device to be set</p></li> +</ul> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_dataformat"> <span class="sig-name descname"><span class="pre">set_dataformat</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">dataformat</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">aidge_core.aidge_core.dformat</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.set_dataformat" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Set the same data format for each Operator of the GraphView object’s Nodes.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>dataformat</strong> (<em>DataFormat</em>) – DataFormat to be set on the Node’s operators’</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_datatype"> <span class="sig-name descname"><span class="pre">set_datatype</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">datatype</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">aidge_core.aidge_core.dtype</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.set_datatype" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Set the same data type for each Operator of the GraphView object’s Nodes.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>datatype</strong> (<em>DataType</em>) – DataType to be set</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_name"> @@ -2049,17 +2251,39 @@ dims were previously forwarded or not.</p> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_ordered_inputs"> <span class="sig-name descname"><span class="pre">set_ordered_inputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.set_ordered_inputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Orders the inputs of the GraphView +The inputs will be ordered in the same order as they come in the std::vector. +Inputs missing from this vector will then be added as per their previous order.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>inputs</strong> (<em>List</em><em>[</em><em>(</em><a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node"><em>Node</em></a><em>, </em><em>int</em><em>)</em><em>]</em>) – set of inputs in the wanted order</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_ordered_outputs"> <span class="sig-name descname"><span class="pre">set_ordered_outputs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">outputs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.set_ordered_outputs" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Orders the outputs of the GraphView +The outputs will be ordered in the same order as they come in the std::vector. +Outputs missing from this vector will then be added as per their previous order.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>outputs</strong> (<em>List</em><em>[</em><em>(</em><a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node"><em>Node</em></a><em>, </em><em>int</em><em>)</em><em>]</em>) – set of outputs in the wanted order</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="aidge_core.GraphView.set_root_node"> <span class="sig-name descname"><span class="pre">set_root_node</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">self</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">node</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.GraphView.set_root_node" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Changes the rootNode of the GraphView</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>node</strong> (<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node"><em>Node</em></a>) – The Node of the GraphView that will become the new rootNode</p> +</dd> +</dl> +</dd></dl> </dd></dl> @@ -2076,30 +2300,65 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1a07fcc26090fc1fb4785a4c9332b2d08f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GraphView</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">""</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView9GraphViewERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Constructs a <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object with a given name. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>string</strong> – name : name given to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a></p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphVieweqERK9GraphView"> <span class="target" id="classAidge_1_1GraphView_1aadf38b2e8285de0d029fd7bf8690a2a2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">==</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">gv</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphVieweqERK9GraphView" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Equality operator, tests if the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> and the gv <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> have the same Nodes. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>GraphView</strong> – gv: <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> that shall be compared to the current one </p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>bool True if both <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> have the same set of Nodes </p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphViewixERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1a1b968a24d075fc48aa5c6c07de374561"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">[]</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nodeName</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphViewixERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Allows to find a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> using the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>’s name. </p> +<p> +Returns nullptr if the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> isn’t found </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>string</strong> – nodeName: The name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> we are looking for </p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>NodePtr Pointer of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> that is found</p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE"> <span class="target" id="classAidge_1_1GraphView_1a00b260554ba1f4ab0037429b78866f97"></span><a class="reference internal" href="#_CPPv4N5Aidge9ConnectorE" title="Aidge::Connector"><span class="n"><span class="pre">Connector</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">()</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge9ConnectorE" title="Aidge::Connector"><span class="n"><span class="pre">Connector</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">ctors</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphViewclEKNSt6vectorI9ConnectorEE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Functional operator for user-friendly connection interface using an ordered set of Connectors. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>Connector</strong> – ctors: a <a class="reference internal" href="#classAidge_1_1Connector"><span class="std std-ref">Connector</span></a></p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p><a class="reference internal" href="#classAidge_1_1Connector"><span class="std std-ref">Connector</span></a></p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView4nameEv"> <span class="target" id="classAidge_1_1GraphView_1a83890a33df37c965d92e7baf9ba0eb76"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">name</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">noexcept</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView4nameEv" title="Link to this definition">#</a><br /></dt> -<dd><p>Name of the node. </p> +<dd><p>Gives the name of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>std::string </p> +<dd class="field-odd"><p>std::string the name of the graphView </p> </dd> </dl> </dd></dl> @@ -2107,14 +2366,14 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1a85fcf955887d5e2c85f6553f1de28c75"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setName</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView7setNameERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd><p>Set the node name. </p> +<dd><p>Set the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> name. </p> <div class="admonition warning"> <p class="admonition-title">Warning</p> -<p>Undefined behavior when several Nodes have the same name. </p> +<p>Undefined behaviour when several GraphViews have the same name. </p> </div> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>name</strong> – New name for the node. </p> +<dd class="field-odd"><p><strong>name</strong> – New name for the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> </dd> </dl> </dd></dl> @@ -2131,7 +2390,11 @@ C++</label><div class="sd-tab-content docutils"> <dd><p>Save the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> as a Mermaid graph in a .md file at the specified location. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>path</strong> – </p> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>string</strong> – path: Path where the file should be put </p></li> +<li><p><strong>bool</strong> – verbose: If true give more informations in the saved graph </p></li> +<li><p><strong>bool</strong> – showProducers: if true, shows the producers as well </p></li> +</ul> </dd> </dl> </dd></dl> @@ -2139,7 +2402,14 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1a37779b904f864b7e7acc38569180ccc6"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">logOutputs</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">dirName</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView10logOutputsERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Logs the output of all nodes of the graph in a directory. </p> +<p>in the specified directory, it will create a subdirectory for each <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> In that sub-directory, each output of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> will be saved in a different .log file </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>string</strong> – dirName: Path of the directory where the logs shall be stocked </p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView6inViewERK7NodePtr"> @@ -2147,10 +2417,10 @@ C++</label><div class="sd-tab-content docutils"> <dd><p>Check that a node is in the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>nodePtr</strong> – <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to check </p> +<dd class="field-odd"><p><strong>NodePtr</strong> – nodePtr: <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to check </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> -<dd class="field-even"><p>bool True is nodePtr belongs to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> +<dd class="field-even"><p>bool True if nodePtr belongs to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> </dd> </dl> </dd></dl> @@ -2161,7 +2431,7 @@ C++</label><div class="sd-tab-content docutils"> <dd><p>Check that a node is in the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>nodeName</strong> – Name of the node to test the existence of. </p> +<dd class="field-odd"><p><strong>string</strong> – nodeName: Name of the node to test the existence of. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>true if the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> contains a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> with the name <code class="docutils literal notranslate"><span class="pre">nodeName</span></code>. </p> @@ -2172,12 +2442,24 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView8rootNodeEv"> <span class="target" id="classAidge_1_1GraphView_1a0ce50342c846f1ad999e9b624816fe89"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">rootNode</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">noexcept</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView8rootNodeEv" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Returns the rootNode of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> </p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>NodePtr of the rootNode </p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr"> <span class="target" id="classAidge_1_1GraphView_1a813df0c4409d8de25a21dad37c3124bc"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRootNode</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">node</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView11setRootNodeE7NodePtr" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Changes the rootNode of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>NodePtr</strong> – node: pointer of the new rootNode </p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView10inputNodesE13InputCategory"> @@ -2195,12 +2477,28 @@ C++</label><div class="sd-tab-content docutils"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr"> <span class="target" id="classAidge_1_1GraphView_1a856b0e37eca14c6591ac47eb564b8ebd"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isInputNode</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nodePtr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView11isInputNodeERK7NodePtr" title="Link to this definition">#</a><br /></dt> <dd><p>Assess if the given <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is an input <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>NodePtr</strong> – nodePtr: The tested <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a></p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>bool True if the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is an input of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>, False otherwise </p> +</dd> +</dl> </dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr"> <span class="target" id="classAidge_1_1GraphView_1a8f6ffb413c4edf432a94524c1de07249"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isOutputNode</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nodePtr</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView12isOutputNodeERK7NodePtr" title="Link to this definition">#</a><br /></dt> <dd><p>Assess if the given <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is an output <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>NodePtr</strong> – nodePtr: The tested <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a></p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>bool True if the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is an output of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>, False otherwise </p> +</dd> +</dl> </dd></dl> <dl class="cpp function"> @@ -2218,7 +2516,8 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE"> <span class="target" id="classAidge_1_1GraphView_1acdf388514aeb6d93fdb543c0bc383f0a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOrderedOutputs</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">pair</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">outputs</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView17setOrderedOutputsERKNSt6vectorINSt4pairI7NodePtr9IOIndex_tEEEE" title="Link to this definition">#</a><br /></dt> -<dd><p>Specify the ordered list of outputs of the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. Any node inside the graph can be a graph output, regardless its output is already connected or not. Duplicate outputs are allowed. Not all graph outputs need to be specified: missing outputs will be automatically appened at the end of the list. </p> +<dd><p>Specify the ordered list of outputs of the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> +<p>Any node inside the graph can be a graph output, regardless its output is already connected or not. Duplicate outputs are allowed. Not all graph outputs need to be specified: missing outputs will be automatically appened at the end of the list.</p> <p>Dummy outputs (nullptr) are allowed, but this will only be reflected in mOutputNodes. All other functions (nbOutputs(), <a class="reference internal" href="#classAidge_1_1GraphView_1af964fca07cc40493e2fac90866919c6e"><span class="std std-ref">outputs()</span></a>) will not take it into account.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> @@ -2248,7 +2547,7 @@ C++</label><div class="sd-tab-content docutils"> <dd><p>Get a topological node order for an acyclic walk of the graph Graph cycles are broken on operator back edges such that resolution on single level lattice can be done in a single pass as it is the case generally for static resolution of <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> shapes/datatypes. When reversed is true, gets a topological order on the reversed graph which is equivalent to a post-dfs order of the graph. The returned order is deterministic given the graph node set and the graph ordered output nodes. The output nodes connectivity must cover all nodes of the graph, otherwise a runtime exception is thrown. The returned order is biased toward left-to-right child order both for topological and post-dfs order. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>reversed</strong> – returns a topological order of the reversed graph </p> +<dd class="field-odd"><p><strong>bool</strong> – reversed: returns a topological order of the reversed graph </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>the ordered list of nodes </p> @@ -2295,7 +2594,7 @@ C++</label><div class="sd-tab-content docutils"> <dd><p>List all dataInput connections (within and outside) of the specified <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> node named “nameâ€. Data inputs exclude inputs expecting parameters (weights or bias). </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>name</strong> – Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<dd class="field-odd"><p><strong>string</strong> – name: Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>std::vector<std::pair<NodePtr, IOIndex_t>> </p> @@ -2319,8 +2618,11 @@ C++</label><div class="sd-tab-content docutils"> <span class="target" id="classAidge_1_1GraphView_1ac9ee704000ce6de4b86a49360d9afef6"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">pair</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">inputs</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView6inputsERKNSt6stringE" title="Link to this definition">#</a><br /></dt> <dd><p>List all input connections (within and outside) of the specified <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> node named “nameâ€. </p> <dl class="field-list simple"> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>std::vector<std::pair<NodePtr, IOIndex_t>> </p> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>string</strong> – name: name of the graphView’s node </p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>std::vector<std::pair<NodePtr, IOIndex_t>> </p> </dd> </dl> </dd></dl> @@ -2328,7 +2630,8 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView7outputsEv"> <span class="target" id="classAidge_1_1GraphView_1af964fca07cc40493e2fac90866919c6e"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">pair</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">outputs</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView7outputsEv" title="Link to this definition">#</a><br /></dt> -<dd><p>List outside output connections of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. The vector size is guaranteed to match the number of outputs of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. If there is no connection to a given output, the corresponding sub-vector will be empty. </p> +<dd><p>List outside output connections of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> +<p>The vector size is guaranteed to match the number of outputs of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. If there is no connection to a given output, the corresponding sub-vector will be empty. </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> <dd class="field-odd"><p>std::vector<std::pair<NodePtr, IOIndex_t>> </p> @@ -2342,7 +2645,7 @@ C++</label><div class="sd-tab-content docutils"> <dd><p>List all output connections (within and outside) of the specified <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> node named “nameâ€. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>nodeName</strong> – Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> of which to show the output. </p> +<dd class="field-odd"><p><strong>string</strong> – nodeName: Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> of which to show the output. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>std::vector<std::vector<std::pair<NodePtr, IOIndex_t>>> </p> @@ -2355,6 +2658,16 @@ C++</label><div class="sd-tab-content docutils"> <span class="target" id="classAidge_1_1GraphView_1af7f9cdb5a652317eb545ba5c7a0116c0"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">compile</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">backend</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">"cpu"</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">DataType</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">datatype</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">DataType</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Float32</span></span>, <span class="n"><span class="pre">DeviceIdx_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">dims</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="p"><span class="pre">{</span></span><span class="p"><span class="pre">}</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView7compileERKNSt6stringEKN5Aidge8DataTypeE11DeviceIdx_tKNSt6vectorINSt6vectorI9DimSize_tEEEE" title="Link to this definition">#</a><br /></dt> <dd><p>Assert Datatype, Backend, data format and dimensions along the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> are coherent. If not, apply the required transformations. </p> <p>Sets the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> ready for computation in four steps: 1 - Assert input Tensors’ datatype is compatible with each <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>’s datatype. If not, a conversion <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a> is inserted. 2 - Assert input Tensors’ backend is compatible with each <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>’s backend. If not, add a Transmitter <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>. 3 - Assert data format (NCHW, NHWC, …) of each <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>’s input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> is compatible with the selected kernel. If not, add a Transpose <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>. 4 - Propagate <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> dimensions through the consecutive Operators(also named forward dims). </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>string</strong> – backend: Backend used, default is cpu </p></li> +<li><p><strong>Datatype</strong> – datatype: datatype used, default is float32 </p></li> +<li><p><strong>DeviceIdx_t</strong> – device: Device to be set </p></li> +<li><p><strong>std::vector<std::vector<DimSize_t>></strong> – dims: vector of vector of dimensions of the inputs of the graphView </p></li> +</ul> +</dd> +</dl> </dd></dl> <dl class="cpp function"> @@ -2452,24 +2765,43 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t"> <span class="target" id="classAidge_1_1GraphView_1aa4f080212a494e4ed2d66acd883292fd"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setBackend</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">backend</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">DeviceIdx_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">device</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView10setBackendERKNSt6stringEK11DeviceIdx_t" title="Link to this definition">#</a><br /></dt> <dd><p>Set the same backend for each <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a> of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object’s Nodes. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>string</strong> – backend: Backend name to be set </p></li> +<li><p><strong>DeviceIdx_t</strong> – device: Backend device to be set </p></li> +</ul> +</dd> +</dl> </dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType"> <span class="target" id="classAidge_1_1GraphView_1ac9bea758930833be21bfc43fadd14404"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDataType</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">DataType</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">datatype</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView11setDataTypeERK8DataType" title="Link to this definition">#</a><br /></dt> <dd><p>Set the same data type for each <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a> of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object’s Nodes. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>DataType</strong> – datatype: DataType to be set </p> +</dd> +</dl> </dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat"> <span class="target" id="classAidge_1_1GraphView_1a44ec671056eb3eee967fa5042dd45326"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDataFormat</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">DataFormat</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">dataformat</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView13setDataFormatERK10DataFormat" title="Link to this definition">#</a><br /></dt> <dd><p>Set the same data format for each <a class="reference internal" href="operator.html#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a> of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object’s Nodes. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>DataFormat</strong> – dataformat: DataFormat to be set </p> +</dd> +</dl> </dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView10getParentsEv"> <span class="target" id="classAidge_1_1GraphView_1ac85c15beba42e77c0949279f0e955658"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">set</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getParents</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView10getParentsEv" title="Link to this definition">#</a><br /></dt> -<dd><p>Get the parents Nodes of inputNodes. </p> +<dd><p>Get the parents Nodes of inputNodes of the graph. </p> +<p>The parents are all put in a single set without ordering </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> <dd class="field-odd"><p>std::set<NodePtr> </p> @@ -2483,7 +2815,7 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dd><p>Get parents Nodes of the specified <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>nodeName</strong> – Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<dd class="field-odd"><p><strong>string</strong> – nodeName: Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>std::vector<NodePtr> </p> @@ -2494,12 +2826,20 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView17getOrderedParentsEv"> <span class="target" id="classAidge_1_1GraphView_1ac71dd872ad2009b2594a621732619778"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getOrderedParents</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView17getOrderedParentsEv" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Get the parents Nodes of inputNodes of the graph. </p> +<p>The parents are ordered in vectors, each vector containing the parents of an inputNode </p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>std::set<NodePtr> </p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView11getChildrenEv"> <span class="target" id="classAidge_1_1GraphView_1a5b83e9992a08df4b94a8ee172c714f08"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">set</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getChildren</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView11getChildrenEv" title="Link to this definition">#</a><br /></dt> <dd><p>Get the children Nodes of outputNodes. </p> +<p>The children are all put in a single set without ordering </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> <dd class="field-odd"><p>std::set<NodePtr> </p> @@ -2511,9 +2851,10 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1a356582fa293a62b9b3303fbf62fddb6a"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getChildren</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nodeName</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView11getChildrenEKNSt6stringE" title="Link to this definition">#</a><br /></dt> <dd><p>Get children Nodes of the specified <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<p>the children will be ordered in a vector of vector of <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, each sub-vector containing the children from one of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>’s output </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>nodeName</strong> – Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<dd class="field-odd"><p><strong>string</strong> – nodeName: Name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>std::vector<std::vector<NodePtr>> </p> @@ -2524,7 +2865,17 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr"> <span class="target" id="classAidge_1_1GraphView_1affdf9b5ac7752ed61f81fa9aadcd97b8"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">set</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getChildren</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">otherNode</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView11getChildrenEK7NodePtr" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>Get the Nodes pointed to by the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. </p> +<p>Get children Nodes of the specified <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>NodePtr</strong> – otherNode: The <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a></p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>std::vector<std::vector<NodePtr>> </p> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView8getNodesEv"> @@ -2540,10 +2891,10 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1a8786a6a1e2f834d961704140b70380c0"></span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getNode</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nodeName</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView7getNodeERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd><p>Get the operator with the corresponding name if it is in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> +<dd><p>Get the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> with the corresponding name if it is in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>nodeName</strong> – Name of the node. </p> +<dd class="field-odd"><p><strong>string</strong> – nodeName: Name of the node. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>NodePtr returns a nullptr if the one asked for was not found. </p> @@ -2556,9 +2907,9 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <span class="target" id="classAidge_1_1GraphView_1aba47d8a1d96196666983845c1ec208aa"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">pair</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">size_t</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getRankedNodes</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView14getRankedNodesEv" title="Link to this definition">#</a><br /></dt> <dd><p>Get the ranked list of nodes in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> ranking if performed the following:<ul class="simple"> <li><p>The root node is put in the ranked list first (rank 1);</p></li> -<li><p>Then, its childs (in order of outputs) are added in the ranked list;</p></li> +<li><p>Then, its children (in order of outputs) are added in the ranked list;</p></li> <li><p>Then, its parents (in order of inputs) are added in the ranked list;</p></li> -<li><p>The childs and parents of the next node in the ranked list are then added to the list, and so on.</p></li> +<li><p>The children and parents of the next node in the ranked list are then added to the list, and so on.</p></li> <li><p>Any remaining nodes have no path to the root node and are added in arbitrary order. In this case, the ranking is not guaranteed to be unique.</p></li> </ul> </p> @@ -2573,12 +2924,14 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb"> <span class="target" id="classAidge_1_1GraphView_1ac2b93feaa89046e2712d9b8bc4ab0bd5"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">map</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getRankedNodesName</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">format</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">markNonUnicity</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5Aidge9GraphView18getRankedNodesNameERKNSt6stringEb" title="Link to this definition">#</a><br /></dt> -<dd><p>Get the nodes name according to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> nodes ranking. </p> +<dd><p>Get the nodes name according to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a><p>nodes ranking.</p> +<p>The usable positional arguments are the following: {0} node name, {1} node type, {2} rank, {3} type rankf</p> +</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>format</strong> – The formatting string to be used with fmt::format(). The usable positional arguments are the following: {0} node name, {1} node type, {2} rank, {3} type rank </p></li> -<li><p><strong>markNonUnicity</strong> – If true, non unique ranking is prefixed with “?†</p></li> +<li><p><strong>string</strong> – format: The formatting string to be used with fmt::format().</p></li> +<li><p><strong>bool</strong> – markNonUnicity: If true, non unique ranking is prefixed with “?†</p></li> </ul> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> @@ -2594,8 +2947,8 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>nodePtr</strong> – <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to remove </p></li> -<li><p><strong>includeLearnableParam</strong> – Whether learnable parameters should also be removed. Default true. </p></li> +<li><p><strong>NodePrt</strong> – nodePtr: <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to remove </p></li> +<li><p><strong>bool</strong> – includeLearnableParam: Whether learnable parameters should also be removed. Default true. learnable params are removed only if they aren’t used by other Nodes </p></li> </ul> </dd> </dl> @@ -2609,12 +2962,13 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView3addE7NodePtrb"> <span class="target" id="classAidge_1_1GraphView_1a70606eccbaea721ed700501e8930175f"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">add</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">otherNode</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">includeLearnableParam</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView3addE7NodePtrb" title="Link to this definition">#</a><br /></dt> -<dd><p>Include a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. </p> +<dd><p>Include a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>’s set of Nodes. If the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is named, it is added in the registery as well. </p> +<p>If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> has no root <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> (most likely this <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> is empty) the added <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> becomes the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>’s root <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>other_Nde</strong> – <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to add. </p></li> -<li><p><strong>includeLearnableParam</strong> – Include non-data inputs, like weights and biases in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> automatically. Default: true. </p></li> +<li><p><strong>NodePtr</strong> – otherNode: <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to add. </p></li> +<li><p><strong>bool</strong> – includeLearnableParam: Include non-data inputs, like weights and biases in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> automatically. Default: true. </p></li> </ul> </dd> </dl> @@ -2627,8 +2981,8 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>otherNodes</strong> – </p></li> -<li><p><strong>includeLearnableParam</strong> – </p></li> +<li><p><strong>std::set<NodePtr></strong> – otherNodes: Nodes to add to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a></p></li> +<li><p><strong>bool</strong> – includeLearnableParam: Include non-data inputs, like weights and biases in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> automatically. Default: true. </p></li> </ul> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> @@ -2640,12 +2994,12 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb"> <span class="target" id="classAidge_1_1GraphView_1a493836f50224d2bf3fb3c93420bb8c3c"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">add</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">pair</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">set</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">NodePtr</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">otherNodes</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">includeLearnableParam</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView3addENSt4pairI7NodePtrNSt3setI7NodePtrEEEEb" title="Link to this definition">#</a><br /></dt> -<dd><p>Include a set of Nodes to the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. The first element of the otherNodes pair is the start node and the second is the remaining nodes to add. </p> +<dd><p>Include a set of Nodes to the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. if the graphView has no rootNode, the first element of the otherNodes pair is the new RootNode of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> and the second is the remaining nodes to add. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>otherNodes</strong> – </p></li> -<li><p><strong>includeLearnableParam</strong> – </p></li> +<li><p><strong>std::pair<NodePtr, std::set<NodePtr>></strong> – otherNodes: </p></li> +<li><p><strong>bool</strong> – includeLearnableParam: Include non-data inputs, like weights and biases in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> automatically. Default: true. </p></li> </ul> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> @@ -2658,9 +3012,10 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb"> <span class="target" id="classAidge_1_1GraphView_1a66dfa4dd368d7431b2ef3c026a5b5a52"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">add</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">otherGraph</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">includeLearnableParam</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView3addENSt10shared_ptrI9GraphViewEEb" title="Link to this definition">#</a><br /></dt> <dd><p>Include every <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> inside another <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> to the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. </p> +<p>If the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> has no RootNode it takes the RootNode of the new <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>other_graph</strong> – <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> containing the Nodes to include. </p> +<dd class="field-odd"><p><strong>std::shared_ptr<GraphView></strong> – other_graph: <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> containing the Nodes to include. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p>true if graph ordering is unique (meaning inputs/outputs order is well defined). </p> @@ -2671,14 +3026,14 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t"> <span class="target" id="classAidge_1_1GraphView_1a2e06f9ede58bf80b6dab2732d14ed2b3"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">addChild</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">toOtherNode</span></span>, <span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">fromOutNode</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">nullptr</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">fromTensor</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="p"><span class="pre">(</span></span><span class="m"><span class="pre">0</span></span><span class="p"><span class="pre">)</span></span>, <span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">toTensor</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">gk_IODefaultIndex</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView8addChildE7NodePtr7NodePtrK9IOIndex_t9IOIndex_t" title="Link to this definition">#</a><br /></dt> -<dd><p>Include a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> in the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> and link it to another already contained <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<dd><p>Include a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> in the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> and link it to another already contained <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> as its child. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>toOtherNode</strong> – Pointer to the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to add. </p></li> -<li><p><strong>fromOutNode</strong> – Pointer to the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> will be linked to (it will become a parent of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>). If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> only has one output <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, then default to this <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> -<li><p><strong>fromTensor</strong> – Output <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to 0. </p></li> -<li><p><strong>toTensor</strong> – Input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to gk_IODefaultIndex, meaning first available data input for the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> +<li><p><strong>NodePtr</strong> – toOtherNode: Pointer to the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to add. </p></li> +<li><p><strong>NodePtr</strong> – fromOutNode: Pointer to the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> will be linked to (it will become a parent of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>). If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> only has one output <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, then default to this <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> +<li><p><strong>IOIndex_t</strong> – fromTensor: Ouput <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to 0. </p></li> +<li><p><strong>IOIndex_t</strong> – toTensor: Input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to gk_IODefaultIndex, meaning first available data input for the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> </ul> </dd> </dl> @@ -2687,14 +3042,14 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t"> <span class="target" id="classAidge_1_1GraphView_1a598a806fe75d3d6422a0331c8a420c8a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">addChild</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">toOtherNode</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">fromOutNodeName</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">fromTensor</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">IOIndex_t</span></span><span class="p"><span class="pre">(</span></span><span class="m"><span class="pre">0</span></span><span class="p"><span class="pre">)</span></span>, <span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">toTensor</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">gk_IODefaultIndex</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView8addChildE7NodePtrRKNSt6stringEK9IOIndex_t9IOIndex_t" title="Link to this definition">#</a><br /></dt> -<dd><p>Include a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> in the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> and link it to another already contained <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> +<dd><p>Include a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> in the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> and link it to another already contained <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> as its child. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>toOtherNode</strong> – Pointer to the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to add. </p></li> -<li><p><strong>fromOutNodeName</strong> – Name of the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> will be linked to (it will become a parent of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>). As a name is optional, ensure such <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> or it will send back an error message. </p></li> -<li><p><strong>fromTensor</strong> – Output <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to 0. </p></li> -<li><p><strong>toTensor</strong> – Input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to gk_IODefaultIndex, meaning first available data input for the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> +<li><p><strong>NodePtr</strong> – toOtherNode: Pointer to the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to add. </p></li> +<li><p><strong>string</strong> – fromOutNodeName: Name of the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> will be linked to (it will become a parent of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>). As a name is optional, ensure such <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is in the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> or it will send back an error message. </p></li> +<li><p><strong>IOIndex_t</strong> – fromTensor: Ouput <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the already included <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to 0. </p></li> +<li><p><strong>IOIndex_t</strong> – toTensor: Input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID of the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. Default to gk_IODefaultIndex, meaning first available data input for the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> </ul> </dd> </dl> @@ -2703,7 +3058,17 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1ac68bb7e5fff90b99ce3faa8624ae14ae"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">updateNodeName</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">node</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">newName</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView14updateNodeNameERKNSt10shared_ptrI4NodeEERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p>(from my comprehension) This function is made only to be used in <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>’s setName. This method update the registry with the new <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>’s Name </p> +<p>todo only updates registery with pair (newName, node) but does not ensure node’s name is indeed newName in its args </p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>std::shared_ptr<Node>&</strong> – node: The <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> that is updated </p></li> +<li><p><strong>string</strong> – newName: The new name of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> that shall soon be updated </p></li> +</ul> +</dd> +</dl> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView8addChildENSt10shared_ptrI9GraphViewEENSt4pairI7NodePtr9IOIndex_tEENSt4pairI7NodePtr9IOIndex_tEE"> @@ -2712,9 +3077,9 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>toOtherView</strong> – Pointer to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> whose content should be added. </p></li> -<li><p><strong>fromOutNode</strong> – Pair of pointer to <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> and <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID for specifying the connection. If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> including the other one has only one output <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, then it defaults to the first output <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> of this <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> -<li><p><strong>toNode</strong> – Pair of pointer to <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> and <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID for specifying the connection. If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> whose content is included has only one input <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, then it defaults to the first available data input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> of this <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> +<li><p><strong>std::shared_ptr<GraphView></strong> – toOtherView: Pointer to the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> whose content should be added. </p></li> +<li><p><strong>std::pair<NodePtr, IOIndex_t></strong> – fromOutNode: Pair of pointer to <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> and <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID for specifying the connection. If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> including the other one has only one output <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, then it defaults to the first output <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> of this <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> +<li><p><strong>std::pair<NodePtr, IOIndex_t></strong> – toNode: Pair of pointer to <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> and <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> ID for specifying the connection. If the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> whose content is included has only one input <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>, then it defaults to the first available data input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> of this <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> </ul> </dd> </dl> @@ -2724,18 +3089,19 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView4swapER4NodeR4Node"> <span class="target" id="classAidge_1_1GraphView_1a0ae992d8f4a4b7aa7db8c2c1a84711d1"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">swap</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">node</span></span>, <a class="reference internal" href="#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">otherNode</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView4swapER4NodeR4Node" title="Link to this definition">#</a><br /></dt> <dd><p>Swap two <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> instances if possible. </p> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>not implemented </p> +</div> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>node</strong> – </p></li> -<li><p><strong>otherNode</strong> – </p></li> +<li><p><strong>Node</strong> – node: The <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to be swapped </p></li> +<li><p><strong>Node</strong> – otherNode: the other <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> to be swapped with </p></li> </ul> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> -<dd class="field-even"><p>true </p> -</dd> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>false </p> +<dd class="field-even"><p>bool: False as not implemented </p> </dd> </dl> </dd></dl> @@ -2743,20 +3109,24 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE"> <span class="target" id="classAidge_1_1GraphView_1ab32ee94ec761d51c0261cb88361db3e8"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">link</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name1_inID</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name2_outID</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView4linkERKNSt6stringERKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>not implemented </p> +</div> +</dd></dl> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t"> <span class="target" id="classAidge_1_1GraphView_1af4f0439c7409fb432617610fd03624f8"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">insertParent</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">childNode</span></span>, <span class="n"><span class="pre">NodePtr</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">newParentNode</span></span>, <span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">childInputTensorIdx</span></span>, <span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">newParentInputTensorIdx</span></span>, <span class="n"><span class="pre">IOIndex_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">newParentOutputTensorIdx</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView12insertParentE7NodePtr7NodePtr9IOIndex_t9IOIndex_t9IOIndex_t" title="Link to this definition">#</a><br /></dt> -<dd><p>Insert a node (newParentNode) as a parent of the passed node (childNode). </p> +<dd><p>Insert a node (newParentNode) as a parent of the passed node (childNode) and as a child of the current parent of the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>childNode</strong> – <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> that gets a new parent. </p></li> -<li><p><strong>newParentNode</strong> – Inserted <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> -<li><p><strong>childInputTensorIdx</strong> – Index of the input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> for the childNode linked to the inserted <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> output. </p></li> -<li><p><strong>newParentInputTensorIdx</strong> – Index of the input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> for the newParentNode linked to the former parent of childNode. </p></li> -<li><p><strong>newParentOutputTensorIdx</strong> – Index of the output <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> for the newParentNode linked to the childNode’s input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a>. </p></li> +<li><p><strong>NodePtr</strong> – childNode: <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> that gets a new parent. </p></li> +<li><p><strong>NodePtr</strong> – newParentNode: Inserted <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p></li> +<li><p><strong>IOIndex_t</strong> – childInputTensorIdx: Index of the input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> for the childNode linked to the inserted <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> output. </p></li> +<li><p><strong>IOIndex_t</strong> – newParentInputTensorIdx: Index of the input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> for the newParentNode linked to the former parent of childNode. </p></li> +<li><p><strong>IOIndex_t</strong> – newParentOutputTensorIdx: Index of the output <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> for the newParentNode linked to the childNode’s input <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a>. </p></li> </ul> </dd> </dl> @@ -2768,7 +3138,7 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dd><p>Clone the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> with shared Operators. It is a new <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>, with cloned Nodes, but the new Nodes refer to the same Operators as the original ones. </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>std::shared_ptr<GraphView> </p> +<dd class="field-odd"><p>std::shared_ptr<GraphView> The cloned graphView </p> </dd> </dl> </dd></dl> @@ -2779,7 +3149,7 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dd><p>Clone the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> with shared Producers. All the other Operators are copied. </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>std::shared_ptr<GraphView> </p> +<dd class="field-odd"><p>std::shared_ptr<GraphView> The cloned graphView </p> </dd> </dl> </dd></dl> @@ -2790,7 +3160,7 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dd><p>Clone the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a>. Everything is cloned: Nodes and Operators. </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>std::shared_ptr<GraphView> </p> +<dd class="field-odd"><p>std::shared_ptr<GraphView> The cloned graphView </p> </dd> </dl> </dd></dl> @@ -2801,10 +3171,10 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dd><p>Clone the current <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> using a callback function for the <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> cloning, allowing to specify how each <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> should be cloned or replaced by another <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> type, or removed (i.e. replaced by identity). When a <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> is removed, the <a class="reference internal" href="#classAidge_1_1GraphView_1ac5f5bb581a0550e65678fe71d5668dee"><span class="std std-ref">clone()</span></a> method automatically finds the next valid parent in line, going backward in the graph and connects it if that makes sense without ambiguity (effectively treating the removed <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a> as an identity operation). </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>cloneNode</strong> – Callback function to clone a node </p> +<dd class="field-odd"><p><strong>cloneNode</strong> – Callback function to clone a node (see clone functions in <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>) </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> -<dd class="field-even"><p>std::shared_ptr<GraphView> </p> +<dd class="field-even"><p>std::shared_ptr<GraphView> The cloned graphView </p> </dd> </dl> </dd></dl> @@ -2815,7 +3185,7 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dd><p>Get the sum of the number of free dataInput connection for all inputNodes of the <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> object. Data inputs exclude inputs expecting parameters (weights or bias). </p> <dl class="field-list simple"> <dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>IOIndex_t </p> +<dd class="field-odd"><p>IOIndex_t: number of free data inputs </p> </dd> </dl> </dd></dl> @@ -2834,21 +3204,18 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <li><p>same number of input/output connections in oldNodes, parents and children are linked according to these connections IDs</p></li> <li><p>different number of input/output connections in oldNodes => return false Case 4: newNodes set has no input and one output, oldNodes has any input and one output</p></li> <li><p>reconnect output</p></li> -<li><p>all input are disconnected </p></li> +<li><p>all input are disconnected</p></li> </ul> </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> -<li><p><strong>oldNodes</strong> – </p></li> -<li><p><strong>newNodes</strong> – </p></li> +<li><p><strong>std::set<NodePtr></strong> – oldNodes: set of Nodes to be replaced </p></li> +<li><p><strong>std::set<NodePtr></strong> – newNodes: New set of Nodes replacing the old one </p></li> </ul> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> -<dd class="field-even"><p>true replacement has been performed </p> -</dd> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>false no replacement has been performed </p> +<dd class="field-even"><p>bool: status of the replacement (True if it succeeded, false if it failed or didn’t happen) </p> </dd> </dl> </dd></dl> @@ -2856,7 +3223,20 @@ The algorithm works in several phases:<ol class="lowerroman simple"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE"> <span class="target" id="classAidge_1_1GraphView_1a9edfde1dea903266144dfcf1c55d80dc"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">replace</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">oldG</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">newG</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge9GraphView7replaceERKNSt10shared_ptrI9GraphViewEERKNSt10shared_ptrI9GraphViewEE" title="Link to this definition">#</a><br /></dt> -<dd></dd></dl> +<dd><p><div class="admonition seealso"> +<p class="admonition-title">See also</p> +<p><a class="reference internal" href="#classAidge_1_1GraphView_1ae484142e5f374b057f9b627e6dc97cf8"><span class="std std-ref">replace</span></a></p> +</div> +</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>std::shared_ptr<GraphView></strong> – oldG: graphView to be replaced </p></li> +<li><p><strong>std::shared_ptr<GraphView></strong> – newG: New graphView replacing the old one </p></li> +</ul> +</dd> +</dl> +</dd></dl> </div> </dd></dl> @@ -2871,7 +3251,19 @@ Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.get_connected_graph_view"> <span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">get_connected_graph_view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">arg0</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></span><a class="headerlink" href="#aidge_core.get_connected_graph_view" title="Link to this definition">#</a></dt> -<dd></dd></dl> +<dd><p>Create a GraphView containing all nodes with a path to given Node.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>node</strong> (<a class="reference internal" href="#aidge_core.Node" title="aidge_core.Node"><em>Node</em></a>) – Initial node to construct the graph.</p> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>GraphView GraphView containing all nodes with a path to node.</p> +</dd> +<dt class="field-odd">Return type<span class="colon">:</span></dt> +<dd class="field-odd"><p><a class="reference internal" href="#aidge_core.GraphView" title="aidge_core.GraphView">GraphView</a></p> +</dd> +</dl> +</dd></dl> </div> <input id="sd-tab-item-5" name="sd-tab-set-2" type="radio"> @@ -2880,10 +3272,10 @@ C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE"> <span class="target" id="GraphView_8hpp_1aa8da64400df6be018ba8c96970d3a452"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">getConnectedGraphView</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">node</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge21getConnectedGraphViewENSt10shared_ptrI4NodeEE" title="Link to this definition">#</a><br /></dt> -<dd><p>Create a <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> containing all nodes with a path to given argument. </p> +<dd><p>Create a <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> containing all nodes with a path to given <a class="reference internal" href="#classAidge_1_1Node"><span class="std std-ref">Node</span></a>. </p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>node</strong> – Initial node to construct the graph. </p> +<dd class="field-odd"><p><strong>std::shared_ptr<Node></strong> – node: Initial node to construct the graph. </p> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><p><a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> <a class="reference internal" href="#classAidge_1_1GraphView"><span class="std std-ref">GraphView</span></a> containing all nodes with a path to node. </p> diff --git a/source/API/Core/graphMatching.html b/source/API/Core/graphMatching.html index 05985f24ee31e575e766a040910eb0aac6132ba3..cfdc2c49218d8cd90e1182a326f7d9698dc2fc4b 100644 --- a/source/API/Core/graphMatching.html +++ b/source/API/Core/graphMatching.html @@ -60,7 +60,7 @@ <link rel="prev" title="Scheduler" href="scheduler.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/Core/index.html b/source/API/Core/index.html index eaf7818b5df630ffb592b8644723c16ffa873c42..becebc3d297078e840e8e9c95114a2d8cd729823 100644 --- a/source/API/Core/index.html +++ b/source/API/Core/index.html @@ -60,7 +60,7 @@ <link rel="prev" title="API" href="../index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/Core/operator.html b/source/API/Core/operator.html index ca3417b14989a84a96004c3b113d9260184e7257..0b2cd5c782842db34d4abab8e57db14f5b0670fa 100644 --- a/source/API/Core/operator.html +++ b/source/API/Core/operator.html @@ -68,7 +68,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="prev" title="Graph" href="graph.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -451,23 +451,22 @@ window.addEventListener("load", () => mermaid.run()); <li><p><a class="reference internal" href="#reducemean" id="id27">ReduceMean</a></p></li> <li><p><a class="reference internal" href="#relu" id="id28">ReLU</a></p></li> <li><p><a class="reference internal" href="#reshape" id="id29">Reshape</a></p></li> -<li><p><a class="reference internal" href="#scaling" id="id30">Scaling</a></p></li> -<li><p><a class="reference internal" href="#sigmoid" id="id31">Sigmoid</a></p></li> -<li><p><a class="reference internal" href="#slice" id="id32">Slice</a></p></li> -<li><p><a class="reference internal" href="#softmax" id="id33">Softmax</a></p></li> -<li><p><a class="reference internal" href="#sqrt" id="id34">Sqrt</a></p></li> -<li><p><a class="reference internal" href="#sub" id="id35">Sub</a></p></li> -<li><p><a class="reference internal" href="#tanh" id="id36">Tanh</a></p></li> -<li><p><a class="reference internal" href="#transpose" id="id37">Transpose</a></p></li> +<li><p><a class="reference internal" href="#sigmoid" id="id30">Sigmoid</a></p></li> +<li><p><a class="reference internal" href="#slice" id="id31">Slice</a></p></li> +<li><p><a class="reference internal" href="#softmax" id="id32">Softmax</a></p></li> +<li><p><a class="reference internal" href="#sqrt" id="id33">Sqrt</a></p></li> +<li><p><a class="reference internal" href="#sub" id="id34">Sub</a></p></li> +<li><p><a class="reference internal" href="#tanh" id="id35">Tanh</a></p></li> +<li><p><a class="reference internal" href="#transpose" id="id36">Transpose</a></p></li> </ul> </li> -<li><p><a class="reference internal" href="#predefined-meta-operators" id="id38">Predefined meta-operators</a></p> +<li><p><a class="reference internal" href="#predefined-meta-operators" id="id37">Predefined meta-operators</a></p> <ul> -<li><p><a class="reference internal" href="#paddedconv" id="id39">PaddedConv</a></p></li> -<li><p><a class="reference internal" href="#paddedconvdepthwise" id="id40">PaddedConvDepthWise</a></p></li> -<li><p><a class="reference internal" href="#paddedavgpooling" id="id41">PaddedAvgPooling</a></p></li> -<li><p><a class="reference internal" href="#paddedmaxpooling" id="id42">PaddedMaxPooling</a></p></li> -<li><p><a class="reference internal" href="#lstm" id="id43">LSTM</a></p></li> +<li><p><a class="reference internal" href="#paddedconv" id="id38">PaddedConv</a></p></li> +<li><p><a class="reference internal" href="#paddedconvdepthwise" id="id39">PaddedConvDepthWise</a></p></li> +<li><p><a class="reference internal" href="#paddedavgpooling" id="id40">PaddedAvgPooling</a></p></li> +<li><p><a class="reference internal" href="#paddedmaxpooling" id="id41">PaddedMaxPooling</a></p></li> +<li><p><a class="reference internal" href="#lstm" id="id42">LSTM</a></p></li> </ul> </li> </ul> @@ -1006,21 +1005,6 @@ If no <a class="reference internal" href="graph.html#classAidge_1_1Node"><span c </dl> </dd></dl> -</div> -<div class="breathe-sectiondef docutils container"> -<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p> -<dl class="cpp function"> -<dt class="sig sig-object cpp" id="_CPPv4N5Aidge8Operator13getInputsNameEv"> -<span class="target" id="classAidge_1_1Operator_1af090d6cca817332f5234f5c1b49edb2b"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getInputsName</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge8Operator13getInputsNameEv" title="Link to this definition">#</a><br /></dt> -<dd><p>Returns an empty vector of input names. </p> -</dd></dl> - -<dl class="cpp function"> -<dt class="sig sig-object cpp" id="_CPPv4N5Aidge8Operator14getOutputsNameEv"> -<span class="target" id="classAidge_1_1Operator_1ab08f3a07f166da1a492bf79db435c6c6"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getOutputsName</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge8Operator14getOutputsNameEv" title="Link to this definition">#</a><br /></dt> -<dd><p>Returns an empty vector of output names. </p> -</dd></dl> - </div> </dd></dl> @@ -1228,7 +1212,7 @@ C++</label><div class="sd-tab-content docutils"> <p><a class="reference internal" href="#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a></p> </div> </p> -<p>Subclassed by Aidge::Abs_Op, Aidge::Add_Op, Aidge::And_Op, Aidge::ArgMax_Op, Aidge::Atan_Op, Aidge::AvgPooling_Op< DIM >, Aidge::BatchNorm_Op< DIM >, Aidge::BitShift_Op, Aidge::Cast_Op, Aidge::Clip_Op, Aidge::Concat_Op, Aidge::ConstantOfShape_Op, Aidge::ConvDepthWise_Op< DIM >, Aidge::ConvTranspose_Op< DIM >, Aidge::Conv_Op< DIM >, Aidge::CryptoHash_Op, Aidge::DepthToSpace_Op, Aidge::Div_Op, Aidge::Dropout_Op, Aidge::Equal_Op, Aidge::Erf_Op, Aidge::Expand_Op, Aidge::FC_Op, Aidge::Flatten_Op, Aidge::Fold_Op< DIM >, Aidge::Gather_Op, Aidge::GenericOperator_Op, Aidge::GlobalAveragePooling_Op, Aidge::GridSample_Op, Aidge::Heaviside_Op, Aidge::ILayerNorm_Op, Aidge::Identity_Op, Aidge::LRN_Op, Aidge::LeakyReLU_Op, Aidge::Ln_Op, Aidge::MatMul_Op, Aidge::MaxPooling_Op< DIM >, Aidge::Memorize_Op, Aidge::MetaOperator_Op, Aidge::Mod_Op, Aidge::Move_Op, Aidge::Mul_Op, Aidge::Pad_Op< DIM >, Aidge::Pop_Op, Aidge::Pow_Op, Aidge::Producer_Op, Aidge::ReLU_Op, Aidge::ReduceMean_Op, Aidge::ReduceSum_Op, Aidge::Reshape_Op, Aidge::Resize_Op, Aidge::Round_Op, Aidge::Scaling_Op, Aidge::Select_Op, Aidge::Shape_Op, Aidge::ShiftGELU_Op, Aidge::ShiftMax_Op, Aidge::Sigmoid_Op, Aidge::Slice_Op, Aidge::Softmax_Op, Aidge::Split_Op, Aidge::Sqrt_Op, Aidge::Squeeze_Op, Aidge::StackOp, Aidge::Sub_Op, Aidge::Tanh_Op, Aidge::TopK_Op, Aidge::Transpose_Op, Aidge::Unfold_Op< DIM >, Aidge::Unsqueeze_Op, Aidge::WeightInterleaving_Op</p> +<p>Subclassed by Aidge::OperatorTensorWithImpl< WeightInterleaving_Op >, Aidge::OperatorTensorWithImpl< Slice_Op, Slice_OpImpl >, Aidge::OperatorTensorWithImpl< ReLU_Op >, Aidge::OperatorTensorWithImpl< Pop_Op, Pop_OpImpl >, Aidge::OperatorTensorWithImpl< Mul_Op >, Aidge::OperatorTensorWithImpl< AvgPooling_Op< DIM > >, Aidge::OperatorTensorWithImpl< Atan_Op >, Aidge::OperatorTensorWithImpl< Split_Op, Split_OpImpl >, Aidge::OperatorTensorWithImpl< Ln_Op >, Aidge::OperatorTensorWithImpl< LeakyReLU_Op >, Aidge::OperatorTensorWithImpl< DepthToSpace_Op, DepthToSpace_OpImpl >, Aidge::OperatorTensorWithImpl< ConvDepthWise_Op< DIM > >, Aidge::OperatorTensorWithImpl< BitShift_Op >, Aidge::OperatorTensorWithImpl< Mod_Op >, Aidge::OperatorTensorWithImpl< Flatten_Op, Flatten_OpImpl >, Aidge::OperatorTensorWithImpl< FC_Op >, Aidge::OperatorTensorWithImpl< ArgMax_Op >, Aidge::OperatorTensorWithImpl< Transpose_Op, TransposeImpl >, Aidge::OperatorTensorWithImpl< Sqrt_Op >, Aidge::OperatorTensorWithImpl< Pow_Op >, Aidge::OperatorTensorWithImpl< MaxPooling_Op< DIM > >, Aidge::OperatorTensorWithImpl< Heaviside_Op >, Aidge::OperatorTensorWithImpl< Equal_Op >, Aidge::OperatorTensorWithImpl< Conv_Op< DIM > >, Aidge::OperatorTensorWithImpl< Reshape_Op, Reshape_OpImpl >, Aidge::OperatorTensorWithImpl< GlobalAveragePooling_Op >, Aidge::OperatorTensorWithImpl< Unfold_Op< DIM >, Unfold_OpImpl< DIM > >, Aidge::OperatorTensorWithImpl< Shape_Op, Shape_OpImpl >, Aidge::OperatorTensorWithImpl< Sigmoid_Op >, Aidge::OperatorTensorWithImpl< Dropout_Op >, Aidge::OperatorTensorWithImpl< CryptoHash_Op >, Aidge::OperatorTensorWithImpl< ConstantOfShape_Op >, Aidge::OperatorTensorWithImpl< Sub_Op >, Aidge::OperatorTensorWithImpl< Squeeze_Op, Squeeze_OpImpl >, Aidge::OperatorTensorWithImpl< GridSample_Op >, Aidge::OperatorTensorWithImpl< Softmax_Op >, Aidge::OperatorTensorWithImpl< MatMul_Op >, Aidge::OperatorTensorWithImpl< Add_Op >, Aidge::OperatorTensorWithImpl< Abs_Op >, Aidge::OperatorTensorWithImpl< Memorize_Op, Memorize_OpImpl >, Aidge::OperatorTensorWithImpl< Div_Op >, Aidge::OperatorTensorWithImpl< Clip_Op >, Aidge::OperatorTensorWithImpl< BatchNorm_Op< DIM > >, Aidge::OperatorTensorWithImpl< Tanh_Op >, Aidge::OperatorTensorWithImpl< Round_Op >, Aidge::OperatorTensorWithImpl< ReduceSum_Op >, Aidge::OperatorTensorWithImpl< Erf_Op >, Aidge::OperatorTensorWithImpl< Concat_Op, Concat_OpImpl >, Aidge::OperatorTensorWithImpl< TopK_Op >, Aidge::OperatorTensorWithImpl< ShiftGELU_Op >, Aidge::OperatorTensorWithImpl< Pad_Op< DIM > >, Aidge::OperatorTensorWithImpl< And_Op >, Aidge::OperatorTensorWithImpl< Gather_Op, Gather_OpImpl >, Aidge::OperatorTensorWithImpl< Cast_Op, Cast_OpImpl >, Aidge::OperatorTensorWithImpl< Unsqueeze_Op, Unsqueeze_OpImpl >, Aidge::OperatorTensorWithImpl< StackOp, StackOpImpl >, Aidge::OperatorTensorWithImpl< Resize_Op >, Aidge::OperatorTensorWithImpl< ReduceMean_Op >, Aidge::OperatorTensorWithImpl< LRN_Op >, Aidge::OperatorTensorWithImpl< Expand_Op >, Aidge::OperatorTensorWithImpl< ShiftMax_Op >, Aidge::OperatorTensorWithImpl< Select_Op, Select_OpImpl >, Aidge::OperatorTensorWithImpl< Identity_Op, Identity_OpImpl >, Aidge::OperatorTensorWithImpl< ILayerNorm_Op >, Aidge::OperatorTensorWithImpl< Fold_Op< DIM > >, Aidge::OperatorTensorWithImpl< ConvTranspose_Op< DIM > >, Aidge::GenericOperator_Op, Aidge::Hardmax_Op, Aidge::MetaOperator_Op, Aidge::Move_Op, Aidge::OperatorTensorWithImpl< T, DEF_IMPL >, Aidge::Producer_Op</p> <div class="breathe-sectiondef docutils container"> <p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p> <dl class="cpp function"> @@ -1765,6 +1749,7 @@ graph TD <sub><em>stride_dims</em></sub> <sub><em>dilations</em></sub> <sub><em>ceil_mode</em></sub> + <sub><em>rounding_mode</em></sub> "):::operator @@ -1783,7 +1768,7 @@ graph TD Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.AvgPooling1D"> -<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">AvgPooling1D</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">kernel_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[1]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dilations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[1]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ceil_mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.AvgPooling1D" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">AvgPooling1D</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">kernel_dims:</span> <span class="pre">list[int],</span> <span class="pre">name:</span> <span class="pre">str</span> <span class="pre">=</span> <span class="pre">'',</span> <span class="pre">stride_dims:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[1],</span> <span class="pre">dilations:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[1],</span> <span class="pre">ceil_mode:</span> <span class="pre">bool</span> <span class="pre">=</span> <span class="pre">False,</span> <span class="pre">rounding_mode:</span> <span class="pre">aidge_core.aidge_core.RoundingMode</span> <span class="pre">=</span> <span class="pre"><RoundingMode.HalfAwayFromZero:</span> <span class="pre">7></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.AvgPooling1D" title="Link to this definition">#</a></dt> <dd><p>Initialize a node containing an AvgPooling operator.</p> <p>This function performs average pooling on the tensor with the given kernel and stride dimensions.</p> <dl class="field-list simple"> @@ -1801,7 +1786,7 @@ Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.AvgPooling2D"> -<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">AvgPooling2D</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">kernel_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[1,</span> <span class="pre">1]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dilations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[1,</span> <span class="pre">1]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ceil_mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.AvgPooling2D" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">AvgPooling2D</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">kernel_dims:</span> <span class="pre">list[int],</span> <span class="pre">name:</span> <span class="pre">str</span> <span class="pre">=</span> <span class="pre">'',</span> <span class="pre">stride_dims:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[1,</span> <span class="pre">1],</span> <span class="pre">dilations:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[1,</span> <span class="pre">1],</span> <span class="pre">ceil_mode:</span> <span class="pre">bool</span> <span class="pre">=</span> <span class="pre">False,</span> <span class="pre">rounding_mode:</span> <span class="pre">aidge_core.aidge_core.RoundingMode</span> <span class="pre">=</span> <span class="pre"><RoundingMode.HalfAwayFromZero:</span> <span class="pre">7></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.AvgPooling2D" title="Link to this definition">#</a></dt> <dd><p>Initialize a node containing an AvgPooling operator.</p> <p>This function performs average pooling on the tensor with the given kernel and stride dimensions.</p> <dl class="field-list simple"> @@ -1819,7 +1804,7 @@ Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.AvgPooling3D"> -<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">AvgPooling3D</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">kernel_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stride_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[1,</span> <span class="pre">1,</span> <span class="pre">1]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dilations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[1,</span> <span class="pre">1,</span> <span class="pre">1]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ceil_mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.AvgPooling3D" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">AvgPooling3D</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">kernel_dims:</span> <span class="pre">list[int],</span> <span class="pre">name:</span> <span class="pre">str</span> <span class="pre">=</span> <span class="pre">'',</span> <span class="pre">stride_dims:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[1,</span> <span class="pre">1,</span> <span class="pre">1],</span> <span class="pre">dilations:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[1,</span> <span class="pre">1,</span> <span class="pre">1],</span> <span class="pre">ceil_mode:</span> <span class="pre">bool</span> <span class="pre">=</span> <span class="pre">False,</span> <span class="pre">rounding_mode:</span> <span class="pre">aidge_core.aidge_core.RoundingMode</span> <span class="pre">=</span> <span class="pre"><RoundingMode.HalfAwayFromZero:</span> <span class="pre">7></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.AvgPooling3D" title="Link to this definition">#</a></dt> <dd><p>Initialize a node containing an AvgPooling operator.</p> <p>This function performs average pooling on the tensor with the given kernel and stride dimensions.</p> <dl class="field-list simple"> @@ -1840,8 +1825,8 @@ Python</label><div class="sd-tab-content docutils"> <label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-11"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> -<dt class="sig sig-object cpp" id="_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb"> -<span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DIM</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="AvgPooling_8hpp_1ae0db06d151a45dc0b8704c8d910ef52a"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">AvgPooling</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">kernel_dims</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">""</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">stride_dims</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">create_array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">(</span></span><span class="m"><span class="pre">1</span></span><span class="p"><span class="pre">)</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">dilations</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">create_array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">(</span></span><span class="m"><span class="pre">1</span></span><span class="p"><span class="pre">)</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">ceil_mode</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb" title="Link to this definition">#</a><br /></dt> +<dt class="sig sig-object cpp" id="_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode"> +<span class="k"><span class="pre">template</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="m"><span class="pre">1</span></span><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DIM</span></span></span><span class="p"><span class="pre">></span></span><br /><span class="target" id="AvgPooling_8hpp_1abd7e42918f9abcfe8b6d5be23b6c8c96"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">AvgPooling</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">kernel_dims</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">""</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">stride_dims</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">create_array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">(</span></span><span class="m"><span class="pre">1</span></span><span class="p"><span class="pre">)</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">dilations</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">create_array</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">DimSize_t</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode" title="Aidge::AvgPooling::DIM"><span class="n"><span class="pre">DIM</span></span></a><span class="p"><span class="pre">></span></span><span class="p"><span class="pre">(</span></span><span class="m"><span class="pre">1</span></span><span class="p"><span class="pre">)</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">ceil_mode</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span>, <span class="n"><span class="pre">RoundingMode</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">roundingMode</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">RoundingMode</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">HalfAwayFromZero</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode" title="Link to this definition">#</a><br /></dt> <dd><p>Creates an AvgPooling operator node. </p> <dl class="field-list simple"> <dt class="field-odd">Template Parameters<span class="colon">:</span></dt> @@ -2826,7 +2811,7 @@ C++</label><div class="sd-tab-content docutils"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.ReduceMean"> -<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">ReduceMean</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">axes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">keep_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">noop_with_empty_axes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.ReduceMean" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">ReduceMean</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">axes:</span> <span class="pre">list[int]</span> <span class="pre">=</span> <span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">keep_dims:</span> <span class="pre">bool</span> <span class="pre">=</span> <span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">noop_with_empty_axes:</span> <span class="pre">bool</span> <span class="pre">=</span> <span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rounding_mode:</span> <span class="pre">aidge_core.aidge_core.RoundingMode</span> <span class="pre">=</span> <span class="pre"><RoundingMode.HalfAwayFromZero:</span> <span class="pre">7></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name:</span> <span class="pre">str</span> <span class="pre">=</span> <span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.ReduceMean" title="Link to this definition">#</a></dt> <dd><p>Initialize a node containing a ReduceMean operator.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> @@ -2845,8 +2830,8 @@ Python</label><div class="sd-tab-content docutils"> <label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-51"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> -<dt class="sig sig-object cpp" id="_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE"> -<span class="target" id="ReduceMean_8hpp_1a8d66297757d1e39811a028fde574f038"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">ReduceMean</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">int32_t</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">axes</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">keep_dims</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">noop_with_empty_axes</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">""</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE" title="Link to this definition">#</a><br /></dt> +<dt class="sig sig-object cpp" id="_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE"> +<span class="target" id="ReduceMean_8hpp_1a435e2589f4d1a74d116104852e6378eb"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">ReduceMean</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre"><</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">int32_t</span></span><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">axes</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">keep_dims</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">noop_with_empty_axes</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span>, <span class="n"><span class="pre">RoundingMode</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">roundingMode</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">RoundingMode</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">HalfAwayFromZero</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">""</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE" title="Link to this definition">#</a><br /></dt> <dd><p>Compute the mean value of a <a class="reference internal" href="data.html#classAidge_1_1Tensor"><span class="std std-ref">Tensor</span></a> over the specified axes. </p> <p>Dimensions may be reduced by erasing the specified axes or retaining them with size 1.</p> <dl class="field-list simple"> @@ -2980,45 +2965,12 @@ C++</label><div class="sd-tab-content docutils"> </div> </div> </section> -<section id="scaling"> -<h3><a class="toc-backref" href="#id30" role="doc-backlink">Scaling</a><a class="headerlink" href="#scaling" title="Link to this heading">#</a></h3> +<section id="sigmoid"> +<h3><a class="toc-backref" href="#id30" role="doc-backlink">Sigmoid</a><a class="headerlink" href="#sigmoid" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> <input checked="checked" id="sd-tab-item-56" name="sd-tab-set-28" type="radio"> <label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-56"> Python</label><div class="sd-tab-content docutils"> -<p>Not available yet !</p> -</div> -<input id="sd-tab-item-57" name="sd-tab-set-28" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-57"> -C++</label><div class="sd-tab-content docutils"> -<dl class="cpp function"> -<dt class="sig sig-object cpp" id="_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE"> -<span class="target" id="Scaling_8hpp_1ade94c45220fc448f1100b5fb72f2f40e"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge4NodeE" title="Aidge::Node"><span class="n"><span class="pre">Node</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">Scaling</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">scalingFactor</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1.0f</span></span>, <span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">quantizedNbBits</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">8</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">isOutputUnsigned</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">""</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE" title="Link to this definition">#</a><br /></dt> -<dd><p>Apply a scaling and quantization operation on a tensor. </p> -<dl class="field-list simple"> -<dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><ul class="simple"> -<li><p><strong>scalingFactor</strong> – <strong>[in]</strong> Scaling factor to apply to the input tensor. </p></li> -<li><p><strong>quantizedNbBits</strong> – <strong>[in]</strong> Number of bits for quantization. </p></li> -<li><p><strong>isOutputUnsigned</strong> – <strong>[in]</strong> Whether the quantized output should be unsigned. </p></li> -<li><p><strong>name</strong> – <strong>[in]</strong> Name of the <a class="reference internal" href="#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>. </p></li> -</ul> -</dd> -<dt class="field-even">Returns<span class="colon">:</span></dt> -<dd class="field-even"><p>std::shared_ptr<Node> <a class="reference internal" href="graph.html#classAidge_1_1Node"><span class="std std-ref">Node</span></a> containing the <a class="reference internal" href="#classAidge_1_1Operator"><span class="std std-ref">Operator</span></a>. </p> -</dd> -</dl> -</dd></dl> - -</div> -</div> -</section> -<section id="sigmoid"> -<h3><a class="toc-backref" href="#id31" role="doc-backlink">Sigmoid</a><a class="headerlink" href="#sigmoid" title="Link to this heading">#</a></h3> -<div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-58" name="sd-tab-set-29" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-58"> -Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Sigmoid"> <span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">Sigmoid</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">aidge_core.aidge_core.Node</span></a></span></span><a class="headerlink" href="#aidge_core.Sigmoid" title="Link to this definition">#</a></dt> @@ -3042,8 +2994,8 @@ Python</label><div class="sd-tab-content docutils"> </dd></dl> </div> -<input id="sd-tab-item-59" name="sd-tab-set-29" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-59"> +<input id="sd-tab-item-57" name="sd-tab-set-28" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-57"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge7SigmoidERKNSt6stringE"> @@ -3054,10 +3006,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="slice"> -<h3><a class="toc-backref" href="#id32" role="doc-backlink">Slice</a><a class="headerlink" href="#slice" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id31" role="doc-backlink">Slice</a><a class="headerlink" href="#slice" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-60" name="sd-tab-set-30" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-60"> +<input checked="checked" id="sd-tab-item-58" name="sd-tab-set-29" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-58"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Slice"> @@ -3084,8 +3036,8 @@ Python</label><div class="sd-tab-content docutils"> </dd></dl> </div> -<input id="sd-tab-item-61" name="sd-tab-set-30" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-61"> +<input id="sd-tab-item-59" name="sd-tab-set-29" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-59"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge5SliceERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt7int64_tEEERKNSt6vectorINSt6int8_tEEERKNSt6vectorINSt7int64_tEEERKNSt6stringE"> @@ -3111,7 +3063,7 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="softmax"> -<h3><a class="toc-backref" href="#id33" role="doc-backlink">Softmax</a><a class="headerlink" href="#softmax" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id32" role="doc-backlink">Softmax</a><a class="headerlink" href="#softmax" title="Link to this heading">#</a></h3> <pre align="center" class="mermaid align-center"> %%{init: {'flowchart': { 'curve': 'monotoneY'}, 'fontFamily': 'Verdana' } }%% graph TD @@ -3132,8 +3084,8 @@ graph TD classDef operator stroke-opacity:0; </pre><div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-62" name="sd-tab-set-31" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-62"> +<input checked="checked" id="sd-tab-item-60" name="sd-tab-set-30" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-60"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Softmax"> @@ -3157,8 +3109,8 @@ where r is the rank (number of dimensions) of the input tensor.</p></li> </dd></dl> </div> -<input id="sd-tab-item-63" name="sd-tab-set-31" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-63"> +<input id="sd-tab-item-61" name="sd-tab-set-30" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-61"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge7SoftmaxENSt7int32_tERKNSt6stringE"> @@ -3181,10 +3133,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="sqrt"> -<h3><a class="toc-backref" href="#id34" role="doc-backlink">Sqrt</a><a class="headerlink" href="#sqrt" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id33" role="doc-backlink">Sqrt</a><a class="headerlink" href="#sqrt" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-64" name="sd-tab-set-32" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-64"> +<input checked="checked" id="sd-tab-item-62" name="sd-tab-set-31" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-62"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Sqrt"> @@ -3198,8 +3150,8 @@ The input tensor values must be non-negative for the square root to be computed. </dd></dl> </div> -<input id="sd-tab-item-65" name="sd-tab-set-32" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-65"> +<input id="sd-tab-item-63" name="sd-tab-set-31" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-63"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge4SqrtERKNSt6stringE"> @@ -3210,10 +3162,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="sub"> -<h3><a class="toc-backref" href="#id35" role="doc-backlink">Sub</a><a class="headerlink" href="#sub" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id34" role="doc-backlink">Sub</a><a class="headerlink" href="#sub" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-66" name="sd-tab-set-33" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-66"> +<input checked="checked" id="sd-tab-item-64" name="sd-tab-set-32" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-64"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Sub"> @@ -3243,8 +3195,8 @@ Input A: (1, 5, 3), Input B: (2, 1, 3), Output: (2, 5, 3)</p> </dd></dl> </div> -<input id="sd-tab-item-67" name="sd-tab-set-33" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-67"> +<input id="sd-tab-item-65" name="sd-tab-set-32" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-65"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge3SubERKNSt6stringE"> @@ -3255,10 +3207,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="tanh"> -<h3><a class="toc-backref" href="#id36" role="doc-backlink">Tanh</a><a class="headerlink" href="#tanh" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id35" role="doc-backlink">Tanh</a><a class="headerlink" href="#tanh" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-68" name="sd-tab-set-34" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-68"> +<input checked="checked" id="sd-tab-item-66" name="sd-tab-set-33" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-66"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Tanh"> @@ -3282,8 +3234,8 @@ Python</label><div class="sd-tab-content docutils"> </dd></dl> </div> -<input id="sd-tab-item-69" name="sd-tab-set-34" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-69"> +<input id="sd-tab-item-67" name="sd-tab-set-33" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-67"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge4TanhERKNSt6stringE"> @@ -3294,10 +3246,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="transpose"> -<h3><a class="toc-backref" href="#id37" role="doc-backlink">Transpose</a><a class="headerlink" href="#transpose" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id36" role="doc-backlink">Transpose</a><a class="headerlink" href="#transpose" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-70" name="sd-tab-set-35" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-70"> +<input checked="checked" id="sd-tab-item-68" name="sd-tab-set-34" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-68"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.Transpose"> @@ -3312,8 +3264,8 @@ Python</label><div class="sd-tab-content docutils"> </dd></dl> </div> -<input id="sd-tab-item-71" name="sd-tab-set-35" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-71"> +<input id="sd-tab-item-69" name="sd-tab-set-34" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-69"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge9TransposeERKNSt6vectorI9DimSize_tEERKNSt6stringE"> @@ -3337,13 +3289,13 @@ C++</label><div class="sd-tab-content docutils"> </section> </section> <section id="predefined-meta-operators"> -<h2><a class="toc-backref" href="#id38" role="doc-backlink">Predefined meta-operators</a><a class="headerlink" href="#predefined-meta-operators" title="Link to this heading">#</a></h2> +<h2><a class="toc-backref" href="#id37" role="doc-backlink">Predefined meta-operators</a><a class="headerlink" href="#predefined-meta-operators" title="Link to this heading">#</a></h2> <p>Some meta-operators (or composite operators) are predefined for conveniance and/or for compatibility with others frameworks.</p> <section id="paddedconv"> -<h3><a class="toc-backref" href="#id39" role="doc-backlink">PaddedConv</a><a class="headerlink" href="#paddedconv" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id38" role="doc-backlink">PaddedConv</a><a class="headerlink" href="#paddedconv" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-72" name="sd-tab-set-36" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-72"> +<input checked="checked" id="sd-tab-item-70" name="sd-tab-set-35" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-70"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.PaddedConv1D"> @@ -3402,8 +3354,8 @@ kernel filter over an input tensor with specified stride and dilation settings.< </dd></dl> </div> -<input id="sd-tab-item-73" name="sd-tab-set-36" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-73"> +<input id="sd-tab-item-71" name="sd-tab-set-35" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-71"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4I_9DimSize_tEN5Aidge10PaddedConvENSt10shared_ptrI4NodeEE9DimSize_t9DimSize_tRA3DIM_K9DimSize_tRKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb"> @@ -3414,10 +3366,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="paddedconvdepthwise"> -<h3><a class="toc-backref" href="#id40" role="doc-backlink">PaddedConvDepthWise</a><a class="headerlink" href="#paddedconvdepthwise" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id39" role="doc-backlink">PaddedConvDepthWise</a><a class="headerlink" href="#paddedconvdepthwise" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-74" name="sd-tab-set-37" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-74"> +<input checked="checked" id="sd-tab-item-72" name="sd-tab-set-36" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-72"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.PaddedConvDepthWise1D"> @@ -3476,8 +3428,8 @@ stride control, and dilation options.</p> </dd></dl> </div> -<input id="sd-tab-item-75" name="sd-tab-set-37" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-75"> +<input id="sd-tab-item-73" name="sd-tab-set-36" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-73"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge19PaddedConvDepthWiseENSt10shared_ptrI4NodeEEK9DimSize_tRKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEERKNSt5arrayI9DimSize_t3DIMEEb"> @@ -3506,10 +3458,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="paddedavgpooling"> -<h3><a class="toc-backref" href="#id41" role="doc-backlink">PaddedAvgPooling</a><a class="headerlink" href="#paddedavgpooling" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id40" role="doc-backlink">PaddedAvgPooling</a><a class="headerlink" href="#paddedavgpooling" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-76" name="sd-tab-set-38" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-76"> +<input checked="checked" id="sd-tab-item-74" name="sd-tab-set-37" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-74"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.PaddedAvgPooling2D"> @@ -3538,8 +3490,8 @@ is computed as the average of input values within a defined kernel window.</p> </dd></dl> </div> -<input id="sd-tab-item-77" name="sd-tab-set-38" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-77"> +<input id="sd-tab-item-75" name="sd-tab-set-37" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-75"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedAvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb"> @@ -3567,10 +3519,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="paddedmaxpooling"> -<h3><a class="toc-backref" href="#id42" role="doc-backlink">PaddedMaxPooling</a><a class="headerlink" href="#paddedmaxpooling" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id41" role="doc-backlink">PaddedMaxPooling</a><a class="headerlink" href="#paddedmaxpooling" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-78" name="sd-tab-set-39" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-78"> +<input checked="checked" id="sd-tab-item-76" name="sd-tab-set-38" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-76"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.PaddedMaxPooling2D"> @@ -3599,8 +3551,8 @@ The output value is computed as the maximum of input values within a defined ker </dd></dl> </div> -<input id="sd-tab-item-79" name="sd-tab-set-39" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-79"> +<input id="sd-tab-item-77" name="sd-tab-set-38" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-77"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge16PaddedMaxPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_tXmlL2E3DIMEEEb"> @@ -3628,10 +3580,10 @@ C++</label><div class="sd-tab-content docutils"> </div> </section> <section id="lstm"> -<h3><a class="toc-backref" href="#id43" role="doc-backlink">LSTM</a><a class="headerlink" href="#lstm" title="Link to this heading">#</a></h3> +<h3><a class="toc-backref" href="#id42" role="doc-backlink">LSTM</a><a class="headerlink" href="#lstm" title="Link to this heading">#</a></h3> <div class="sd-tab-set docutils"> -<input checked="checked" id="sd-tab-item-80" name="sd-tab-set-40" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-80"> +<input checked="checked" id="sd-tab-item-78" name="sd-tab-set-39" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="python" for="sd-tab-item-78"> Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.LSTM"> @@ -3660,8 +3612,8 @@ information flow through time.</p> </dd></dl> </div> -<input id="sd-tab-item-81" name="sd-tab-set-40" type="radio"> -<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-81"> +<input id="sd-tab-item-79" name="sd-tab-set-39" type="radio"> +<label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-79"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> <dt class="sig sig-object cpp" id="_CPPv4N5Aidge4LSTME9DimSize_t9DimSize_t9DimSize_tbRKNSt6stringE"> @@ -3805,8 +3757,6 @@ C++</label><div class="sd-tab-content docutils"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4NK5Aidge8Operator9nbOutputsEv"><code class="docutils literal notranslate"><span class="pre">nbOutputs()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge8Operator12setBackEdgesERKNSt3setI9IOIndex_tEE"><code class="docutils literal notranslate"><span class="pre">setBackEdges()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4NK5Aidge8Operator10isBackEdgeE9IOIndex_t"><code class="docutils literal notranslate"><span class="pre">isBackEdge()</span></code></a></li> -<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge8Operator13getInputsNameEv"><code class="docutils literal notranslate"><span class="pre">getInputsName()</span></code></a></li> -<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge8Operator14getOutputsNameEv"><code class="docutils literal notranslate"><span class="pre">getOutputsName()</span></code></a></li> </ul> </li> </ul> @@ -3891,7 +3841,7 @@ C++</label><div class="sd-tab-content docutils"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.AvgPooling1D"><code class="docutils literal notranslate"><span class="pre">AvgPooling1D()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.AvgPooling2D"><code class="docutils literal notranslate"><span class="pre">AvgPooling2D()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.AvgPooling3D"><code class="docutils literal notranslate"><span class="pre">AvgPooling3D()</span></code></a></li> -<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb"><code class="docutils literal notranslate"><span class="pre">AvgPooling()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4I_NSt5arrayI9DimSize_tXL1EEE9size_typeEEN5Aidge10AvgPoolingENSt10shared_ptrI4NodeEERKNSt5arrayI9DimSize_t3DIMEERKNSt6stringERKNSt5arrayI9DimSize_t3DIMEERKNSt5arrayI9DimSize_t3DIMEEb12RoundingMode"><code class="docutils literal notranslate"><span class="pre">AvgPooling()</span></code></a></li> </ul> </li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#batchnorm">BatchNorm</a><ul class="visible nav section-nav flex-column"> @@ -3990,7 +3940,7 @@ C++</label><div class="sd-tab-content docutils"> </li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#reducemean">ReduceMean</a><ul class="visible nav section-nav flex-column"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.ReduceMean"><code class="docutils literal notranslate"><span class="pre">ReduceMean()</span></code></a></li> -<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbbRKNSt6stringE"><code class="docutils literal notranslate"><span class="pre">ReduceMean()</span></code></a></li> +<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge10ReduceMeanERKNSt6vectorINSt7int32_tEEEbb12RoundingModeRKNSt6stringE"><code class="docutils literal notranslate"><span class="pre">ReduceMean()</span></code></a></li> </ul> </li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#relu">ReLU</a><ul class="visible nav section-nav flex-column"> @@ -4003,10 +3953,6 @@ C++</label><div class="sd-tab-content docutils"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge7ReshapeERKNSt6vectorINSt7int64_tEEEbRKNSt6stringE"><code class="docutils literal notranslate"><span class="pre">Reshape()</span></code></a></li> </ul> </li> -<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#scaling">Scaling</a><ul class="visible nav section-nav flex-column"> -<li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge7ScalingEfNSt6size_tEbRKNSt6stringE"><code class="docutils literal notranslate"><span class="pre">Scaling()</span></code></a></li> -</ul> -</li> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#sigmoid">Sigmoid</a><ul class="visible nav section-nav flex-column"> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.Sigmoid"><code class="docutils literal notranslate"><span class="pre">Sigmoid()</span></code></a></li> <li class="toc-h4 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge7SigmoidERKNSt6stringE"><code class="docutils literal notranslate"><span class="pre">Sigmoid()</span></code></a></li> diff --git a/source/API/Core/recipes.html b/source/API/Core/recipes.html index 21eb20d063783ee3e6eb47e12e5eaa008db7617a..bfd9a3d2101498c57a9f0dd356e55981f65de2fe 100644 --- a/source/API/Core/recipes.html +++ b/source/API/Core/recipes.html @@ -68,7 +68,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="prev" title="Graph Matching" href="graphMatching.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -625,13 +625,15 @@ classDef metaCls_rootCls stroke:#f00,stroke-width:5px Python</label><div class="sd-tab-content docutils"> <dl class="py function"> <dt class="sig sig-object py" id="aidge_core.expand_metaops"> -<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">expand_metaops</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">graph_view</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="graph.html#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">recursive</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.expand_metaops" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_core.</span></span><span class="sig-name descname"><span class="pre">expand_metaops</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">graph_view</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="graph.html#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">aidge_core.aidge_core.GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">recursive</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name_format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'{0}'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">unique_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_core.expand_metaops" title="Link to this definition">#</a></dt> <dd><p>Flatten the graph by replacing the meta operators by their micro graph.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> <li><p><strong>graph_view</strong> (<a class="reference internal" href="graph.html#aidge_core.GraphView" title="aidge_core.GraphView"><code class="xref py py-class docutils literal notranslate"><span class="pre">aidge_core.GraphView</span></code></a>) – Graph view on which we want to apply the recipe</p></li> <li><p><strong>recursive</strong> (<em>bool</em>) – If true, recursively replace meta operators until there is no more meta operator in the graph.</p></li> +<li><p><strong>name_format</strong> (<em>str</em>) – The formatting string to be used with fmt::format() for naming the nodes from the meta-op (inner nodes) in the expanded graph. The usable positional arguments are the following: {0} inner node name, {1} inner node type, {2} meta-node name, {3} meta-node type. Default is {0} (inner node name).</p></li> +<li><p><strong>unique_name</strong> (<em>bool</em>) – If True, ensure that the expanded nodes name are unique in the expanded graph.</p></li> </ul> </dd> </dl> @@ -642,12 +644,18 @@ Python</label><div class="sd-tab-content docutils"> <label class="sd-tab-label" data-sync-group="language" data-sync-id="cpp" for="sd-tab-item-5"> C++</label><div class="sd-tab-content docutils"> <dl class="cpp function"> -<dt class="sig sig-object cpp" id="_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb"> -<span class="target" id="Recipes_8hpp_1a965d064883305f80d7e4d8304ee102e9"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">expandMetaOps</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">graph</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">recursive</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb" title="Link to this definition">#</a><br /></dt> -<dd><p>Flatten the graph by replacing the meta operators by their micro graph. </p> +<dt class="sig sig-object cpp" id="_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb"> +<span class="target" id="Recipes_8hpp_1aadd699b63188cff138b64fb83e94091a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-prename descclassname"><span class="n"><span class="pre">Aidge</span></span><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">expandMetaOps</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre"><</span></span><a class="reference internal" href="graph.html#_CPPv4N5Aidge9GraphViewE" title="Aidge::GraphView"><span class="n"><span class="pre">GraphView</span></span></a><span class="p"><span class="pre">></span></span><span class="w"> </span><span class="n sig-param"><span class="pre">graph</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">recursive</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&</span></span><span class="n sig-param"><span class="pre">nameFormat</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="s"><span class="pre">"{0}"</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">uniqueName</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb" title="Link to this definition">#</a><br /></dt> +<dd><p><p>Flatten the graph by replacing the meta operators by their micro graph.</p> +<p>The usable positional arguments are the following: {0} inner node name, {1} inner node type, {2} meta-node name, {3} meta-node type Default is {0} (inner node name).</p> +</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>recursive</strong> – If true, recursively replace meta operators until there is no more meta operator in the graph. </p> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>recursive</strong> – If true, recursively replace meta operators until there is no more meta operator in the graph. </p></li> +<li><p><strong>string</strong> – nameFormat: The formatting string to be used with fmt::format() for naming the nodes from the meta-op (inner nodes) in the expanded graph.</p></li> +<li><p><strong>bool</strong> – uniqueName: If true, ensure that the expanded nodes name are unique in the expanded graph. </p></li> +</ul> </dd> </dl> </dd></dl> @@ -1089,7 +1097,7 @@ C++</label><div class="sd-tab-content docutils"> </li> <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#expand-meta-operators">Expand meta operators</a><ul class="visible nav section-nav flex-column"> <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge_core.expand_metaops"><code class="docutils literal notranslate"><span class="pre">expand_metaops()</span></code></a></li> -<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEb"><code class="docutils literal notranslate"><span class="pre">expandMetaOps()</span></code></a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#_CPPv4N5Aidge13expandMetaOpsENSt10shared_ptrI9GraphViewEEbRKNSt6stringEb"><code class="docutils literal notranslate"><span class="pre">expandMetaOps()</span></code></a></li> </ul> </li> <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#explicit-cast-move">Explicit Cast Move</a><ul class="visible nav section-nav flex-column"> diff --git a/source/API/Core/scheduler.html b/source/API/Core/scheduler.html index 27c7aeb46fb3266413b576e46cbf79fb25d3cb11..f9d5a027a3826483faddca3ffeeac9d56379fbe5 100644 --- a/source/API/Core/scheduler.html +++ b/source/API/Core/scheduler.html @@ -60,7 +60,7 @@ <link rel="prev" title="Backend" href="backend.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/ExportTensorRT/index.html b/source/API/ExportTensorRT/index.html index 29520d0bd5d1ff9a7a5190233d0eabbbe43cd899..1b9fa933781774c96b32a45e0cb33242fed11495 100644 --- a/source/API/ExportTensorRT/index.html +++ b/source/API/ExportTensorRT/index.html @@ -59,7 +59,7 @@ <link rel="prev" title="Aidge backend OpenCV API" href="../BackendOPENCV/index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/API/Onnx/index.html b/source/API/Onnx/index.html index 5661542ea475e8aa2cdb37ca5caa4b15546a86ac..b29b9d41b8809eec7e2dcea07a968aceea513e62 100644 --- a/source/API/Onnx/index.html +++ b/source/API/Onnx/index.html @@ -60,7 +60,7 @@ <link rel="prev" title="Aidge backend CPU" href="../BackendCPU/index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -501,7 +501,7 @@ It is possible to add keys to this dictionnary at runtime using <code class="xre <p>Method related to the export of an Aidge <a class="reference internal" href="../Core/graph.html#aidge_core.GraphView" title="aidge_core.GraphView"><code class="xref py py-class docutils literal notranslate"><span class="pre">aidge_core.GraphView</span></code></a> to an ONNX file.</p> <dl class="py function"> <dt class="sig sig-object py" id="aidge_onnx.export_onnx"> -<span class="sig-prename descclassname"><span class="pre">aidge_onnx.</span></span><span class="sig-name descname"><span class="pre">export_onnx</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">graph_view</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../Core/graph.html#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">path_to_save</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">outputs_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_custom_op</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">opset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#aidge_onnx.export_onnx" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_onnx.</span></span><span class="sig-name descname"><span class="pre">export_onnx</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">graph_view</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../Core/graph.html#aidge_core.GraphView" title="aidge_core.aidge_core.GraphView"><span class="pre">GraphView</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">path_to_save</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">inputs_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">outputs_dims</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_custom_op</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">opset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#aidge_onnx.export_onnx" title="Link to this definition">#</a></dt> <dd><p>Export a <a class="reference internal" href="../Core/graph.html#aidge_core.GraphView" title="aidge_core.GraphView"><code class="xref py py-class docutils literal notranslate"><span class="pre">aidge_core.GraphView</span></code></a> to an ONNX file.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> @@ -510,7 +510,6 @@ It is possible to add keys to this dictionnary at runtime using <code class="xre <li><p><strong>path_to_save</strong> (<em>str</em>) – Path where to save the ONNX file, example <code class="docutils literal notranslate"><span class="pre">test.onnx</span></code></p></li> <li><p><strong>inputs_dims</strong> (<em>Mapping</em><em>[</em><em>str</em><em>, </em><em>List</em><em>[</em><em>List</em><em>[</em><em>int</em><em>]</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – input dimensions of the network, if provided, <code class="docutils literal notranslate"><span class="pre">outputs_dims</span></code> must also be filled, this argument is a map, where the key is the name of the input node and the value is a list of dimensions ordered by the input index, defaults to None</p></li> <li><p><strong>outputs_dims</strong> (<em>Mapping</em><em>[</em><em>str</em><em>, </em><em>List</em><em>[</em><em>List</em><em>[</em><em>int</em><em>]</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – output dimensions of the network, if provided, <code class="docutils literal notranslate"><span class="pre">inputs_dims</span></code> must also be filled, this argument is a map, where the key is the name of the output node and the value is a list of dimensions ordered by the output index, defaults to None</p></li> -<li><p><strong>verbose</strong> (<em>bool</em><em>, </em><em>optional</em>) – If true, verbosity is activated, defaults to False</p></li> <li><p><strong>enable_custom_op</strong> (<em>bool</em><em>, </em><em>optional</em>) – If True, export will not fail for <a class="reference internal" href="../Core/operator.html#aidge_core.GenericOperator" title="aidge_core.GenericOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">aidge_core.GenericOperator</span></code></a> and will add the operator schema to a custom aidge domain, defaults to False</p></li> <li><p><strong>opset</strong> (<em>int</em><em>, </em><em>optional</em>) – The version of the ONNX opset generated, defaults to None</p></li> </ul> @@ -529,7 +528,7 @@ A conversion function must have the following signature : <code class="docutils <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> <li><p><strong>key</strong> (<em>str</em>) – This chain of characters must correspond to the Aidge type.</p></li> -<li><p><strong>converter_function</strong> (<em>Callable</em><em>[</em><em>[</em><a class="reference internal" href="../Core/graph.html#aidge_core.Node" title="aidge_core.Node"><em>aidge_core.Node</em></a><em>, </em><em>List</em><em>[</em><em>str</em><em>]</em><em>, </em><em>List</em><em>[</em><em>str</em><em>]</em><em>, </em><em>int</em><em>, </em><em>bool</em><em>]</em><em>, </em><em>onnx.NodeProto</em><em>]</em>) – Function which take as an input an Aidge node, list of inputs name, outputs name and a boolean to handle verbosity level.</p></li> +<li><p><strong>converter_function</strong> (<em>Callable</em><em>[</em><em>[</em><a class="reference internal" href="../Core/graph.html#aidge_core.Node" title="aidge_core.Node"><em>aidge_core.Node</em></a><em>, </em><em>List</em><em>[</em><em>str</em><em>]</em><em>, </em><em>List</em><em>[</em><em>str</em><em>]</em><em>, </em><em>Optional</em><em>[</em><em>int</em><em>]</em><em>]</em><em>, </em><em>onnx.NodeProto</em><em>]</em>) – Function which take as an input an Aidge node, list of inputs name, outputs name and a boolean to handle verbosity level.</p></li> </ul> </dd> </dl> @@ -571,7 +570,7 @@ A conversion function must have the following signature : <code class="docutils <h3>Converters Aidge to ONNX<a class="headerlink" href="#converters-aidge-to-onnx" title="Link to this heading">#</a></h3> <dl class="py function"> <dt class="sig sig-object py" id="aidge_onnx.node_export.generic_export.generic_export"> -<span class="sig-prename descclassname"><span class="pre">aidge_onnx.node_export.generic_export.</span></span><span class="sig-name descname"><span class="pre">generic_export</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">aidge_node</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../Core/graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">Node</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_inputs_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_outputs_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">opset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_custom_op</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_onnx.node_export.generic_export.generic_export" title="Link to this definition">#</a></dt> +<span class="sig-prename descclassname"><span class="pre">aidge_onnx.node_export.generic_export.</span></span><span class="sig-name descname"><span class="pre">generic_export</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">aidge_node</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../Core/graph.html#aidge_core.Node" title="aidge_core.aidge_core.Node"><span class="pre">Node</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_inputs_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">node_outputs_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">opset</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_custom_op</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#aidge_onnx.node_export.generic_export.generic_export" title="Link to this definition">#</a></dt> <dd><p>Function to export a <a class="reference internal" href="../Core/operator.html#aidge_core.GenericOperator" title="aidge_core.GenericOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">aidge_core.GenericOperator</span></code></a> to an ONNX node</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> @@ -581,7 +580,6 @@ A conversion function must have the following signature : <code class="docutils <li><p><strong>node_outputs_name</strong> (<em>list</em><em>[</em><em>str</em><em>]</em>) – list of names of outputs node</p></li> <li><p><strong>opset</strong> (<em>int</em><em>, </em><em>optional</em>) – opset to use for the export, defaults to None</p></li> <li><p><strong>enable_custom_op</strong> (<em>bool</em><em>, </em><em>optional</em>) – If True, the export will not fait if the type associated to the <a class="reference internal" href="../Core/operator.html#aidge_core.GenericOperator" title="aidge_core.GenericOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">aidge_core.GenericOperator</span></code></a> is not , defaults to False</p></li> -<li><p><strong>verbose</strong> (<em>bool</em><em>, </em><em>optional</em>) – If true, verbosity is activated, defaults to False</p></li> </ul> </dd> </dl> diff --git a/source/API/index.html b/source/API/index.html index cca8de5624451d9477ec9c2638e91a534a0df8c8..6a9518bc295ef62404af85e1b93050dd8827c065 100644 --- a/source/API/index.html +++ b/source/API/index.html @@ -57,10 +57,10 @@ <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> <link rel="next" title="Aidge core API" href="Core/index.html" /> - <link rel="prev" title="Export a MNIST model to a CPP standalone project" href="../Tutorial/export_cpp.html" /> + <link rel="prev" title="STM32 export" href="../Tutorial/export_stm32.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -441,12 +441,12 @@ <div class="prev-next-area"> <a class="left-prev" - href="../Tutorial/export_cpp.html" + href="../Tutorial/export_stm32.html" title="previous page"> <i class="fa-solid fa-angle-left"></i> <div class="prev-next-info"> <p class="prev-next-subtitle">previous</p> - <p class="prev-next-title">Export a MNIST model to a CPP standalone project</p> + <p class="prev-next-title">STM32 export</p> </div> </a> <a class="right-next" diff --git a/source/GetStarted/index.html b/source/GetStarted/index.html index d382b7d98929fccbf1acf8178c1b36ca7fdb5ec8..53b3c048511d70b63f69f355d6f2967d140dd8e9 100644 --- a/source/GetStarted/index.html +++ b/source/GetStarted/index.html @@ -60,7 +60,7 @@ <link rel="prev" title="Aidge" href="../../index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/GetStarted/install.html b/source/GetStarted/install.html index 320539f2aa648e6f0e63eff393cbeef1a8ccd02b..f9c354278b0b5baac4a49c5d6ab2205480f84646 100644 --- a/source/GetStarted/install.html +++ b/source/GetStarted/install.html @@ -60,7 +60,7 @@ <link rel="prev" title="Get Started" href="index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/GetStarted/quickStart.html b/source/GetStarted/quickStart.html index 650718186482c0d2f2816d8ed70b0e5be0c3973d..fa2f8f08d59e13ef97c7cfbc72efd4cdfde23edc 100644 --- a/source/GetStarted/quickStart.html +++ b/source/GetStarted/quickStart.html @@ -60,7 +60,7 @@ <link rel="prev" title="Why Aidge?" href="whyAidge.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/GetStarted/whyAidge.html b/source/GetStarted/whyAidge.html index 325bd6d10b7d97bf83fc200d09471e512b71b456..8d53d4f786f9dbd7ca577b31624e9b3b14c2473f 100644 --- a/source/GetStarted/whyAidge.html +++ b/source/GetStarted/whyAidge.html @@ -68,7 +68,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="prev" title="Install" href="install.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/Tutorial/101_first_step.html b/source/Tutorial/101_first_step.html index d6192f37b1a2757ba0a4029fa9e62f7ce6fcb232..f64a539676ea07fb8aa88af119b35bfc6c3434fb 100644 --- a/source/Tutorial/101_first_step.html +++ b/source/Tutorial/101_first_step.html @@ -59,11 +59,11 @@ <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> - <link rel="next" title="Database MNIST" href="database.html" /> + <link rel="next" title="Data provider tutorial" href="database.html" /> <link rel="prev" title="Tutorials" href="index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1 current active"><a class="current reference internal" href="#">Aidge demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -534,7 +540,7 @@ Available backends for Tensor: <div class="output_area docutils container"> <div class="highlight"><pre> Available backends: -{'export_serialize', 'cpu'} +{'cpu', 'export_serialize'} </pre></div></div> </div> <p>For this tutorial, we will need to import <code class="docutils literal notranslate"><span class="pre">aidge_onnx</span></code> in order to load ONNX files, numpy in order to load data and matplotlib to display images.</p> @@ -576,28 +582,28 @@ File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10 <span class="ansi-green-fg">---> 39</span> model <span style="color: rgb(98,98,98)">=</span> <span class="ansi-yellow-bg">onnx</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">load</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">filename</span><span class="ansi-yellow-bg">)</span> <span class="ansi-green-intense-fg ansi-bold"> 40</span> <span class="ansi-bold" style="color: rgb(0,135,0)">return</span> _load_onnx2graphview(model, verbose) -File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:212</span>, in <span class="ansi-cyan-fg">load_model</span><span class="ansi-blue-fg">(f, format, load_external_data)</span> -<span class="ansi-green-intense-fg ansi-bold"> 191</span> <span class="ansi-bold" style="color: rgb(0,135,0)">def</span><span style="color: rgb(188,188,188)"> </span><span style="color: rgb(0,0,255)">load_model</span>( -<span class="ansi-green-intense-fg ansi-bold"> 192</span> f: IO[<span style="color: rgb(0,135,0)">bytes</span>] <span style="color: rgb(98,98,98)">|</span> <span style="color: rgb(0,135,0)">str</span> <span style="color: rgb(98,98,98)">|</span> os<span style="color: rgb(98,98,98)">.</span>PathLike, -<span class="ansi-green-intense-fg ansi-bold"> 193</span> <span style="color: rgb(0,135,0)">format</span>: _SupportedFormat <span style="color: rgb(98,98,98)">|</span> <span class="ansi-bold" style="color: rgb(0,135,0)">None</span> <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">None</span>, <span style="color: rgb(95,135,135)"># noqa: A002</span> -<span class="ansi-green-intense-fg ansi-bold"> 194</span> load_external_data: <span style="color: rgb(0,135,0)">bool</span> <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">True</span>, -<span class="ansi-green-intense-fg ansi-bold"> 195</span> ) <span style="color: rgb(98,98,98)">-</span><span style="color: rgb(98,98,98)">></span> ModelProto: -<span class="ansi-green-intense-fg ansi-bold"> 196</span> <span style="color: rgb(188,188,188)"> </span><span style="color: rgb(175,0,0)">"""Loads a serialized ModelProto into memory.</span> -<span class="ansi-green-intense-fg ansi-bold"> 197</span> -<span class="ansi-green-intense-fg ansi-bold"> 198</span> <span style="color: rgb(175,0,0)"> Args:</span> +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:226</span>, in <span class="ansi-cyan-fg">load_model</span><span class="ansi-blue-fg">(f, format, load_external_data)</span> +<span class="ansi-green-intense-fg ansi-bold"> 205</span> <span class="ansi-bold" style="color: rgb(0,135,0)">def</span><span style="color: rgb(188,188,188)"> </span><span style="color: rgb(0,0,255)">load_model</span>( +<span class="ansi-green-intense-fg ansi-bold"> 206</span> f: IO[<span style="color: rgb(0,135,0)">bytes</span>] <span style="color: rgb(98,98,98)">|</span> <span style="color: rgb(0,135,0)">str</span> <span style="color: rgb(98,98,98)">|</span> os<span style="color: rgb(98,98,98)">.</span>PathLike, +<span class="ansi-green-intense-fg ansi-bold"> 207</span> <span style="color: rgb(0,135,0)">format</span>: _SupportedFormat <span style="color: rgb(98,98,98)">|</span> <span class="ansi-bold" style="color: rgb(0,135,0)">None</span> <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">None</span>, <span style="color: rgb(95,135,135)"># noqa: A002</span> +<span class="ansi-green-intense-fg ansi-bold"> 208</span> load_external_data: <span style="color: rgb(0,135,0)">bool</span> <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">True</span>, +<span class="ansi-green-intense-fg ansi-bold"> 209</span> ) <span style="color: rgb(98,98,98)">-</span><span style="color: rgb(98,98,98)">></span> ModelProto: +<span class="ansi-green-intense-fg ansi-bold"> 210</span> <span style="color: rgb(188,188,188)"> </span><span style="color: rgb(175,0,0)">"""Loads a serialized ModelProto into memory.</span> +<span class="ansi-green-intense-fg ansi-bold"> 211</span> +<span class="ansi-green-intense-fg ansi-bold"> 212</span> <span style="color: rgb(175,0,0)"> Args:</span> <span class="ansi-green-fg"> (...)</span> -<span class="ansi-green-intense-fg ansi-bold"> 210</span> <span style="color: rgb(175,0,0)"> Loaded in-memory ModelProto.</span> -<span class="ansi-green-intense-fg ansi-bold"> 211</span> <span style="color: rgb(175,0,0)"> """</span> -<span class="ansi-green-fg">--> 212</span> model <span style="color: rgb(98,98,98)">=</span> _get_serializer(<span style="color: rgb(0,135,0)">format</span>, f)<span style="color: rgb(98,98,98)">.</span>deserialize_proto(<span class="ansi-yellow-bg">_load_bytes</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">f</span><span class="ansi-yellow-bg">)</span>, ModelProto()) -<span class="ansi-green-intense-fg ansi-bold"> 214</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> load_external_data: -<span class="ansi-green-intense-fg ansi-bold"> 215</span> model_filepath <span style="color: rgb(98,98,98)">=</span> _get_file_path(f) - -File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:149</span>, in <span class="ansi-cyan-fg">_load_bytes</span><span class="ansi-blue-fg">(f)</span> -<span class="ansi-green-intense-fg ansi-bold"> 147</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: -<span class="ansi-green-intense-fg ansi-bold"> 148</span> f <span style="color: rgb(98,98,98)">=</span> typing<span style="color: rgb(98,98,98)">.</span>cast(Union[<span style="color: rgb(0,135,0)">str</span>, os<span style="color: rgb(98,98,98)">.</span>PathLike], f) -<span class="ansi-green-fg">--> 149</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span class="ansi-yellow-bg" style="color: rgb(0,135,0)">open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">f</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">rb</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span> <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> readable: -<span class="ansi-green-intense-fg ansi-bold"> 150</span> content <span style="color: rgb(98,98,98)">=</span> readable<span style="color: rgb(98,98,98)">.</span>read() -<span class="ansi-green-intense-fg ansi-bold"> 151</span> <span class="ansi-bold" style="color: rgb(0,135,0)">return</span> content +<span class="ansi-green-intense-fg ansi-bold"> 224</span> <span style="color: rgb(175,0,0)"> Loaded in-memory ModelProto.</span> +<span class="ansi-green-intense-fg ansi-bold"> 225</span> <span style="color: rgb(175,0,0)"> """</span> +<span class="ansi-green-fg">--> 226</span> model <span style="color: rgb(98,98,98)">=</span> _get_serializer(<span style="color: rgb(0,135,0)">format</span>, f)<span style="color: rgb(98,98,98)">.</span>deserialize_proto(<span class="ansi-yellow-bg">_load_bytes</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">f</span><span class="ansi-yellow-bg">)</span>, ModelProto()) +<span class="ansi-green-intense-fg ansi-bold"> 228</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> load_external_data: +<span class="ansi-green-intense-fg ansi-bold"> 229</span> model_filepath <span style="color: rgb(98,98,98)">=</span> _get_file_path(f) + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:163</span>, in <span class="ansi-cyan-fg">_load_bytes</span><span class="ansi-blue-fg">(f)</span> +<span class="ansi-green-intense-fg ansi-bold"> 161</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: +<span class="ansi-green-intense-fg ansi-bold"> 162</span> f <span style="color: rgb(98,98,98)">=</span> typing<span style="color: rgb(98,98,98)">.</span>cast(Union[<span style="color: rgb(0,135,0)">str</span>, os<span style="color: rgb(98,98,98)">.</span>PathLike], f) +<span class="ansi-green-fg">--> 163</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span class="ansi-yellow-bg" style="color: rgb(0,135,0)">open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">f</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">rb</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span> <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> readable: +<span class="ansi-green-intense-fg ansi-bold"> 164</span> content <span style="color: rgb(98,98,98)">=</span> readable<span style="color: rgb(98,98,98)">.</span>read() +<span class="ansi-green-intense-fg ansi-bold"> 165</span> <span class="ansi-bold" style="color: rgb(0,135,0)">return</span> content <span class="ansi-red-fg">FileNotFoundError</span>: [Errno 2] No such file or directory: 'MLP_MNIST.onnx' </pre></div></div> @@ -1323,7 +1329,7 @@ cat: myexport/main.cpp: No such file or directory title="next page"> <div class="prev-next-info"> <p class="prev-next-subtitle">next</p> - <p class="prev-next-title">Database MNIST</p> + <p class="prev-next-title">Data provider tutorial</p> </div> <i class="fa-solid fa-angle-right"></i> </a> diff --git a/source/Tutorial/101_first_step.ipynb b/source/Tutorial/101_first_step.ipynb index d560a6b537354a2497710f46cccd41a68448d820..986a4297289ab50278c359a711a0cce42802abd3 100644 --- a/source/Tutorial/101_first_step.ipynb +++ b/source/Tutorial/101_first_step.ipynb @@ -30,10 +30,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:35.954733Z", - "iopub.status.busy": "2025-05-11T15:21:35.954470Z", - "iopub.status.idle": "2025-05-11T15:21:36.077582Z", - "shell.execute_reply": "2025-05-11T15:21:36.077273Z" + "iopub.execute_input": "2025-05-19T10:05:02.056271Z", + "iopub.status.busy": "2025-05-19T10:05:02.056139Z", + "iopub.status.idle": "2025-05-19T10:05:02.205282Z", + "shell.execute_reply": "2025-05-19T10:05:02.204978Z" } }, "outputs": [ @@ -69,10 +69,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.091885Z", - "iopub.status.busy": "2025-05-11T15:21:36.091780Z", - "iopub.status.idle": "2025-05-11T15:21:36.099661Z", - "shell.execute_reply": "2025-05-11T15:21:36.099432Z" + "iopub.execute_input": "2025-05-19T10:05:02.221626Z", + "iopub.status.busy": "2025-05-19T10:05:02.221412Z", + "iopub.status.idle": "2025-05-19T10:05:02.229690Z", + "shell.execute_reply": "2025-05-19T10:05:02.229419Z" } }, "outputs": [ @@ -122,10 +122,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.100600Z", - "iopub.status.busy": "2025-05-11T15:21:36.100504Z", - "iopub.status.idle": "2025-05-11T15:21:36.307020Z", - "shell.execute_reply": "2025-05-11T15:21:36.306678Z" + "iopub.execute_input": "2025-05-19T10:05:02.230791Z", + "iopub.status.busy": "2025-05-19T10:05:02.230598Z", + "iopub.status.idle": "2025-05-19T10:05:02.502776Z", + "shell.execute_reply": "2025-05-19T10:05:02.502388Z" } }, "outputs": [ @@ -165,10 +165,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.308227Z", - "iopub.status.busy": "2025-05-11T15:21:36.308096Z", - "iopub.status.idle": "2025-05-11T15:21:36.311424Z", - "shell.execute_reply": "2025-05-11T15:21:36.311197Z" + "iopub.execute_input": "2025-05-19T10:05:02.503989Z", + "iopub.status.busy": "2025-05-19T10:05:02.503721Z", + "iopub.status.idle": "2025-05-19T10:05:02.507100Z", + "shell.execute_reply": "2025-05-19T10:05:02.506830Z" } }, "outputs": [ @@ -177,7 +177,7 @@ "output_type": "stream", "text": [ "Available backends:\n", - "{'export_serialize', 'cpu'}\n" + "{'cpu', 'export_serialize'}\n" ] } ], @@ -199,10 +199,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.312405Z", - "iopub.status.busy": "2025-05-11T15:21:36.312307Z", - "iopub.status.idle": "2025-05-11T15:21:36.352665Z", - "shell.execute_reply": "2025-05-11T15:21:36.352380Z" + "iopub.execute_input": "2025-05-19T10:05:02.507963Z", + "iopub.status.busy": "2025-05-19T10:05:02.507795Z", + "iopub.status.idle": "2025-05-19T10:05:02.548261Z", + "shell.execute_reply": "2025-05-19T10:05:02.547956Z" } }, "outputs": [], @@ -228,10 +228,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.354167Z", - "iopub.status.busy": "2025-05-11T15:21:36.354056Z", - "iopub.status.idle": "2025-05-11T15:21:36.411038Z", - "shell.execute_reply": "2025-05-11T15:21:36.410712Z" + "iopub.execute_input": "2025-05-19T10:05:02.549602Z", + "iopub.status.busy": "2025-05-19T10:05:02.549365Z", + "iopub.status.idle": "2025-05-19T10:05:02.613593Z", + "shell.execute_reply": "2025-05-19T10:05:02.613348Z" } }, "outputs": [ @@ -244,8 +244,8 @@ "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[6], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[43maidge_onnx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload_onnx\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mMLP_MNIST.onnx\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_onnx/onnx_import.py:39\u001b[0m, in \u001b[0;36mload_onnx\u001b[0;34m(filename, verbose)\u001b[0m\n\u001b[1;32m 36\u001b[0m aidge_core\u001b[38;5;241m.\u001b[39mLog\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLoading ONNX \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfilename\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 38\u001b[0m \u001b[38;5;66;03m# Load the ONNX model\u001b[39;00m\n\u001b[0;32m---> 39\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[43monnx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _load_onnx2graphview(model, verbose)\n", - "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:212\u001b[0m, in \u001b[0;36mload_model\u001b[0;34m(f, format, load_external_data)\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mload_model\u001b[39m(\n\u001b[1;32m 192\u001b[0m f: IO[\u001b[38;5;28mbytes\u001b[39m] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m os\u001b[38;5;241m.\u001b[39mPathLike,\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28mformat\u001b[39m: _SupportedFormat \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;66;03m# noqa: A002\u001b[39;00m\n\u001b[1;32m 194\u001b[0m load_external_data: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 195\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ModelProto:\n\u001b[1;32m 196\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Loads a serialized ModelProto into memory.\u001b[39;00m\n\u001b[1;32m 197\u001b[0m \n\u001b[1;32m 198\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 210\u001b[0m \u001b[38;5;124;03m Loaded in-memory ModelProto.\u001b[39;00m\n\u001b[1;32m 211\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 212\u001b[0m model \u001b[38;5;241m=\u001b[39m _get_serializer(\u001b[38;5;28mformat\u001b[39m, f)\u001b[38;5;241m.\u001b[39mdeserialize_proto(\u001b[43m_load_bytes\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m)\u001b[49m, ModelProto())\n\u001b[1;32m 214\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m load_external_data:\n\u001b[1;32m 215\u001b[0m model_filepath \u001b[38;5;241m=\u001b[39m _get_file_path(f)\n", - "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:149\u001b[0m, in \u001b[0;36m_load_bytes\u001b[0;34m(f)\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 148\u001b[0m f \u001b[38;5;241m=\u001b[39m typing\u001b[38;5;241m.\u001b[39mcast(Union[\u001b[38;5;28mstr\u001b[39m, os\u001b[38;5;241m.\u001b[39mPathLike], f)\n\u001b[0;32m--> 149\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m readable:\n\u001b[1;32m 150\u001b[0m content \u001b[38;5;241m=\u001b[39m readable\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 151\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m content\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:226\u001b[0m, in \u001b[0;36mload_model\u001b[0;34m(f, format, load_external_data)\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mload_model\u001b[39m(\n\u001b[1;32m 206\u001b[0m f: IO[\u001b[38;5;28mbytes\u001b[39m] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28mstr\u001b[39m \u001b[38;5;241m|\u001b[39m os\u001b[38;5;241m.\u001b[39mPathLike,\n\u001b[1;32m 207\u001b[0m \u001b[38;5;28mformat\u001b[39m: _SupportedFormat \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;66;03m# noqa: A002\u001b[39;00m\n\u001b[1;32m 208\u001b[0m load_external_data: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 209\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ModelProto:\n\u001b[1;32m 210\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Loads a serialized ModelProto into memory.\u001b[39;00m\n\u001b[1;32m 211\u001b[0m \n\u001b[1;32m 212\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 224\u001b[0m \u001b[38;5;124;03m Loaded in-memory ModelProto.\u001b[39;00m\n\u001b[1;32m 225\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 226\u001b[0m model \u001b[38;5;241m=\u001b[39m _get_serializer(\u001b[38;5;28mformat\u001b[39m, f)\u001b[38;5;241m.\u001b[39mdeserialize_proto(\u001b[43m_load_bytes\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m)\u001b[49m, ModelProto())\n\u001b[1;32m 228\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m load_external_data:\n\u001b[1;32m 229\u001b[0m model_filepath \u001b[38;5;241m=\u001b[39m _get_file_path(f)\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/onnx/__init__.py:163\u001b[0m, in \u001b[0;36m_load_bytes\u001b[0;34m(f)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 162\u001b[0m f \u001b[38;5;241m=\u001b[39m typing\u001b[38;5;241m.\u001b[39mcast(Union[\u001b[38;5;28mstr\u001b[39m, os\u001b[38;5;241m.\u001b[39mPathLike], f)\n\u001b[0;32m--> 163\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m readable:\n\u001b[1;32m 164\u001b[0m content \u001b[38;5;241m=\u001b[39m readable\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 165\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m content\n", "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'MLP_MNIST.onnx'" ] } @@ -275,10 +275,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.412017Z", - "iopub.status.busy": "2025-05-11T15:21:36.411914Z", - "iopub.status.idle": "2025-05-11T15:21:36.418981Z", - "shell.execute_reply": "2025-05-11T15:21:36.418764Z" + "iopub.execute_input": "2025-05-19T10:05:02.614732Z", + "iopub.status.busy": "2025-05-19T10:05:02.614493Z", + "iopub.status.idle": "2025-05-19T10:05:02.621750Z", + "shell.execute_reply": "2025-05-19T10:05:02.621542Z" } }, "outputs": [ @@ -330,10 +330,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.419910Z", - "iopub.status.busy": "2025-05-11T15:21:36.419815Z", - "iopub.status.idle": "2025-05-11T15:21:36.426572Z", - "shell.execute_reply": "2025-05-11T15:21:36.426354Z" + "iopub.execute_input": "2025-05-19T10:05:02.622651Z", + "iopub.status.busy": "2025-05-19T10:05:02.622500Z", + "iopub.status.idle": "2025-05-19T10:05:02.629548Z", + "shell.execute_reply": "2025-05-19T10:05:02.629334Z" } }, "outputs": [ @@ -366,10 +366,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.427484Z", - "iopub.status.busy": "2025-05-11T15:21:36.427384Z", - "iopub.status.idle": "2025-05-11T15:21:36.434071Z", - "shell.execute_reply": "2025-05-11T15:21:36.433851Z" + "iopub.execute_input": "2025-05-19T10:05:02.630339Z", + "iopub.status.busy": "2025-05-19T10:05:02.630250Z", + "iopub.status.idle": "2025-05-19T10:05:02.636670Z", + "shell.execute_reply": "2025-05-19T10:05:02.636462Z" } }, "outputs": [ @@ -406,10 +406,10 @@ "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.434967Z", - "iopub.status.busy": "2025-05-11T15:21:36.434871Z", - "iopub.status.idle": "2025-05-11T15:21:36.442465Z", - "shell.execute_reply": "2025-05-11T15:21:36.442244Z" + "iopub.execute_input": "2025-05-19T10:05:02.637632Z", + "iopub.status.busy": "2025-05-19T10:05:02.637463Z", + "iopub.status.idle": "2025-05-19T10:05:02.645037Z", + "shell.execute_reply": "2025-05-19T10:05:02.644768Z" } }, "outputs": [ @@ -440,10 +440,10 @@ "execution_count": 11, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.443358Z", - "iopub.status.busy": "2025-05-11T15:21:36.443255Z", - "iopub.status.idle": "2025-05-11T15:21:36.449998Z", - "shell.execute_reply": "2025-05-11T15:21:36.449778Z" + "iopub.execute_input": "2025-05-19T10:05:02.645995Z", + "iopub.status.busy": "2025-05-19T10:05:02.645815Z", + "iopub.status.idle": "2025-05-19T10:05:02.652400Z", + "shell.execute_reply": "2025-05-19T10:05:02.652189Z" } }, "outputs": [ @@ -482,10 +482,10 @@ "execution_count": 12, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.450891Z", - "iopub.status.busy": "2025-05-11T15:21:36.450797Z", - "iopub.status.idle": "2025-05-11T15:21:36.504000Z", - "shell.execute_reply": "2025-05-11T15:21:36.503724Z" + "iopub.execute_input": "2025-05-19T10:05:02.653203Z", + "iopub.status.busy": "2025-05-19T10:05:02.653057Z", + "iopub.status.idle": "2025-05-19T10:05:02.707902Z", + "shell.execute_reply": "2025-05-19T10:05:02.707661Z" } }, "outputs": [ @@ -520,10 +520,10 @@ "execution_count": 13, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.504943Z", - "iopub.status.busy": "2025-05-11T15:21:36.504840Z", - "iopub.status.idle": "2025-05-11T15:21:36.516107Z", - "shell.execute_reply": "2025-05-11T15:21:36.515880Z" + "iopub.execute_input": "2025-05-19T10:05:02.709069Z", + "iopub.status.busy": "2025-05-19T10:05:02.708889Z", + "iopub.status.idle": "2025-05-19T10:05:02.720796Z", + "shell.execute_reply": "2025-05-19T10:05:02.720561Z" } }, "outputs": [ @@ -558,10 +558,10 @@ "execution_count": 14, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.517038Z", - "iopub.status.busy": "2025-05-11T15:21:36.516943Z", - "iopub.status.idle": "2025-05-11T15:21:36.523819Z", - "shell.execute_reply": "2025-05-11T15:21:36.523596Z" + "iopub.execute_input": "2025-05-19T10:05:02.721888Z", + "iopub.status.busy": "2025-05-19T10:05:02.721719Z", + "iopub.status.idle": "2025-05-19T10:05:02.728896Z", + "shell.execute_reply": "2025-05-19T10:05:02.728669Z" } }, "outputs": [ @@ -603,10 +603,10 @@ "execution_count": 15, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.524767Z", - "iopub.status.busy": "2025-05-11T15:21:36.524668Z", - "iopub.status.idle": "2025-05-11T15:21:36.531831Z", - "shell.execute_reply": "2025-05-11T15:21:36.531613Z" + "iopub.execute_input": "2025-05-19T10:05:02.729842Z", + "iopub.status.busy": "2025-05-19T10:05:02.729670Z", + "iopub.status.idle": "2025-05-19T10:05:02.736701Z", + "shell.execute_reply": "2025-05-19T10:05:02.736495Z" } }, "outputs": [ @@ -643,10 +643,10 @@ "execution_count": 16, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.532760Z", - "iopub.status.busy": "2025-05-11T15:21:36.532660Z", - "iopub.status.idle": "2025-05-11T15:21:36.539349Z", - "shell.execute_reply": "2025-05-11T15:21:36.539127Z" + "iopub.execute_input": "2025-05-19T10:05:02.737656Z", + "iopub.status.busy": "2025-05-19T10:05:02.737490Z", + "iopub.status.idle": "2025-05-19T10:05:02.744488Z", + "shell.execute_reply": "2025-05-19T10:05:02.744280Z" } }, "outputs": [ @@ -675,10 +675,10 @@ "execution_count": 17, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.540250Z", - "iopub.status.busy": "2025-05-11T15:21:36.540150Z", - "iopub.status.idle": "2025-05-11T15:21:36.547941Z", - "shell.execute_reply": "2025-05-11T15:21:36.547724Z" + "iopub.execute_input": "2025-05-19T10:05:02.745327Z", + "iopub.status.busy": "2025-05-19T10:05:02.745210Z", + "iopub.status.idle": "2025-05-19T10:05:02.752967Z", + "shell.execute_reply": "2025-05-19T10:05:02.752739Z" } }, "outputs": [ @@ -715,10 +715,10 @@ "execution_count": 18, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.548858Z", - "iopub.status.busy": "2025-05-11T15:21:36.548764Z", - "iopub.status.idle": "2025-05-11T15:21:36.555325Z", - "shell.execute_reply": "2025-05-11T15:21:36.555101Z" + "iopub.execute_input": "2025-05-19T10:05:02.753992Z", + "iopub.status.busy": "2025-05-19T10:05:02.753805Z", + "iopub.status.idle": "2025-05-19T10:05:02.760830Z", + "shell.execute_reply": "2025-05-19T10:05:02.760564Z" } }, "outputs": [ @@ -753,10 +753,10 @@ "execution_count": 19, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.556234Z", - "iopub.status.busy": "2025-05-11T15:21:36.556135Z", - "iopub.status.idle": "2025-05-11T15:21:36.562769Z", - "shell.execute_reply": "2025-05-11T15:21:36.562555Z" + "iopub.execute_input": "2025-05-19T10:05:02.761769Z", + "iopub.status.busy": "2025-05-19T10:05:02.761609Z", + "iopub.status.idle": "2025-05-19T10:05:02.768269Z", + "shell.execute_reply": "2025-05-19T10:05:02.768042Z" } }, "outputs": [ @@ -781,10 +781,10 @@ "execution_count": 20, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.563703Z", - "iopub.status.busy": "2025-05-11T15:21:36.563609Z", - "iopub.status.idle": "2025-05-11T15:21:36.592226Z", - "shell.execute_reply": "2025-05-11T15:21:36.591944Z" + "iopub.execute_input": "2025-05-19T10:05:02.769124Z", + "iopub.status.busy": "2025-05-19T10:05:02.768971Z", + "iopub.status.idle": "2025-05-19T10:05:02.798303Z", + "shell.execute_reply": "2025-05-19T10:05:02.798066Z" } }, "outputs": [ @@ -826,10 +826,10 @@ "execution_count": 21, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.593114Z", - "iopub.status.busy": "2025-05-11T15:21:36.593026Z", - "iopub.status.idle": "2025-05-11T15:21:36.601935Z", - "shell.execute_reply": "2025-05-11T15:21:36.601665Z" + "iopub.execute_input": "2025-05-19T10:05:02.799396Z", + "iopub.status.busy": "2025-05-19T10:05:02.799238Z", + "iopub.status.idle": "2025-05-19T10:05:02.808186Z", + "shell.execute_reply": "2025-05-19T10:05:02.807935Z" } }, "outputs": [ @@ -864,10 +864,10 @@ "execution_count": 22, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.602830Z", - "iopub.status.busy": "2025-05-11T15:21:36.602744Z", - "iopub.status.idle": "2025-05-11T15:21:36.609872Z", - "shell.execute_reply": "2025-05-11T15:21:36.609636Z" + "iopub.execute_input": "2025-05-19T10:05:02.809098Z", + "iopub.status.busy": "2025-05-19T10:05:02.808913Z", + "iopub.status.idle": "2025-05-19T10:05:02.815736Z", + "shell.execute_reply": "2025-05-19T10:05:02.815534Z" } }, "outputs": [ @@ -910,10 +910,10 @@ "execution_count": 23, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.610839Z", - "iopub.status.busy": "2025-05-11T15:21:36.610655Z", - "iopub.status.idle": "2025-05-11T15:21:36.725540Z", - "shell.execute_reply": "2025-05-11T15:21:36.725202Z" + "iopub.execute_input": "2025-05-19T10:05:02.816689Z", + "iopub.status.busy": "2025-05-19T10:05:02.816535Z", + "iopub.status.idle": "2025-05-19T10:05:02.929320Z", + "shell.execute_reply": "2025-05-19T10:05:02.928846Z" } }, "outputs": [ @@ -934,10 +934,10 @@ "execution_count": 24, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.727387Z", - "iopub.status.busy": "2025-05-11T15:21:36.727130Z", - "iopub.status.idle": "2025-05-11T15:21:36.840907Z", - "shell.execute_reply": "2025-05-11T15:21:36.840501Z" + "iopub.execute_input": "2025-05-19T10:05:02.930767Z", + "iopub.status.busy": "2025-05-19T10:05:02.930586Z", + "iopub.status.idle": "2025-05-19T10:05:03.044515Z", + "shell.execute_reply": "2025-05-19T10:05:03.044032Z" } }, "outputs": [ @@ -967,10 +967,10 @@ "execution_count": 25, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.842572Z", - "iopub.status.busy": "2025-05-11T15:21:36.842405Z", - "iopub.status.idle": "2025-05-11T15:21:36.857009Z", - "shell.execute_reply": "2025-05-11T15:21:36.856764Z" + "iopub.execute_input": "2025-05-19T10:05:03.046094Z", + "iopub.status.busy": "2025-05-19T10:05:03.045915Z", + "iopub.status.idle": "2025-05-19T10:05:03.065479Z", + "shell.execute_reply": "2025-05-19T10:05:03.065195Z" } }, "outputs": [ @@ -1020,10 +1020,10 @@ "execution_count": 26, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.857905Z", - "iopub.status.busy": "2025-05-11T15:21:36.857816Z", - "iopub.status.idle": "2025-05-11T15:21:36.968330Z", - "shell.execute_reply": "2025-05-11T15:21:36.968030Z" + "iopub.execute_input": "2025-05-19T10:05:03.066626Z", + "iopub.status.busy": "2025-05-19T10:05:03.066498Z", + "iopub.status.idle": "2025-05-19T10:05:03.180270Z", + "shell.execute_reply": "2025-05-19T10:05:03.179828Z" } }, "outputs": [ @@ -1055,10 +1055,10 @@ "execution_count": 27, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.969783Z", - "iopub.status.busy": "2025-05-11T15:21:36.969676Z", - "iopub.status.idle": "2025-05-11T15:21:36.979165Z", - "shell.execute_reply": "2025-05-11T15:21:36.978959Z" + "iopub.execute_input": "2025-05-19T10:05:03.181813Z", + "iopub.status.busy": "2025-05-19T10:05:03.181643Z", + "iopub.status.idle": "2025-05-19T10:05:03.193138Z", + "shell.execute_reply": "2025-05-19T10:05:03.192863Z" } }, "outputs": [ @@ -1083,10 +1083,10 @@ "execution_count": 28, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:36.980013Z", - "iopub.status.busy": "2025-05-11T15:21:36.979927Z", - "iopub.status.idle": "2025-05-11T15:21:37.093185Z", - "shell.execute_reply": "2025-05-11T15:21:37.092869Z" + "iopub.execute_input": "2025-05-19T10:05:03.194532Z", + "iopub.status.busy": "2025-05-19T10:05:03.194328Z", + "iopub.status.idle": "2025-05-19T10:05:03.309200Z", + "shell.execute_reply": "2025-05-19T10:05:03.308706Z" } }, "outputs": [ @@ -1132,10 +1132,10 @@ "execution_count": 29, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:37.094406Z", - "iopub.status.busy": "2025-05-11T15:21:37.094302Z", - "iopub.status.idle": "2025-05-11T15:21:37.206431Z", - "shell.execute_reply": "2025-05-11T15:21:37.206085Z" + "iopub.execute_input": "2025-05-19T10:05:03.310955Z", + "iopub.status.busy": "2025-05-19T10:05:03.310734Z", + "iopub.status.idle": "2025-05-19T10:05:03.425192Z", + "shell.execute_reply": "2025-05-19T10:05:03.424603Z" } }, "outputs": [ @@ -1163,10 +1163,10 @@ "execution_count": 30, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:37.208015Z", - "iopub.status.busy": "2025-05-11T15:21:37.207913Z", - "iopub.status.idle": "2025-05-11T15:21:37.318275Z", - "shell.execute_reply": "2025-05-11T15:21:37.317922Z" + "iopub.execute_input": "2025-05-19T10:05:03.426667Z", + "iopub.status.busy": "2025-05-19T10:05:03.426513Z", + "iopub.status.idle": "2025-05-19T10:05:03.537767Z", + "shell.execute_reply": "2025-05-19T10:05:03.537349Z" } }, "outputs": [ diff --git a/source/Tutorial/ONNX.html b/source/Tutorial/ONNX.html index 2e87c8f88682ddfcb46425fc1d08abc55ff9d1f8..1813844fa4f91ad72a3aa283a60f335f76c898fe 100644 --- a/source/Tutorial/ONNX.html +++ b/source/Tutorial/ONNX.html @@ -59,11 +59,11 @@ <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> - <link rel="next" title="Post Training Quantization with AIDGE" href="ptq.html" /> + <link rel="next" title="Perform static analysis on a neural network model" href="static_analysis.html" /> <link rel="prev" title="Training a simple Neural Network" href="learning.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="current nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1 current active"><a class="current reference internal" href="#">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -886,11 +892,11 @@ Reference output: </div> </a> <a class="right-next" - href="ptq.html" + href="static_analysis.html" title="next page"> <div class="prev-next-info"> <p class="prev-next-subtitle">next</p> - <p class="prev-next-title">Post Training Quantization with AIDGE</p> + <p class="prev-next-title">Perform static analysis on a neural network model</p> </div> <i class="fa-solid fa-angle-right"></i> </a> diff --git a/source/Tutorial/backend_cuda.html b/source/Tutorial/backend_cuda.html new file mode 100644 index 0000000000000000000000000000000000000000..a881db0040fda1905b74f68fcf0df6cf2f809052 --- /dev/null +++ b/source/Tutorial/backend_cuda.html @@ -0,0 +1,672 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Backend CUDA example — Eclipse Aidge documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> + <link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v=d2d258e8" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=abb81387" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/id.css?v=5eddeb79" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> + <script src="../../_static/copybutton.js?v=f281be69"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'source/Tutorial/backend_cuda';</script> + <script src="../../_static/js/mermaid.min.js"></script> + <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="Post Training Quantization with AIDGE" href="ptq.html" /> + <link rel="prev" title="Perform static analysis on a neural network model" href="static_analysis.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="0.6.1" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + <button type="button" class="btn rounded-pill" id="pst-back-to-top"> + <i class="fa-solid fa-arrow-up"></i>Back to top</button> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + + + + + <img src="../../_static/Isotype-aidge.png" class="logo__image only-light" alt=""/> + <img src="../../_static/Isotype-aidge.png" class="logo__image only-dark pst-js-only" alt=""/> + + + <p class="title logo__title">Eclipse Aidge</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> +<li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> +<li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> +<li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Backend CUDA example</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> +<li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Backend CUDA example</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="Backend-CUDA-example"> +<h1>Backend CUDA example<a class="headerlink" href="#Backend-CUDA-example" title="Link to this heading">#</a></h1> +<p>This tutorial provides a step-by-step guide on performing inference with the LeNet model using <strong>Aidge Backend CUDA</strong>. Using randomly generated data as input, we will demonstrate how to pass data through the model and observe its predictions. For the sake of simplicity, we will not train the model. Feel free to replace the onnx model with one already trained.</p> +<ul class="simple"> +<li><p>The required libraries for this tutorial are <strong>Numpy</strong> and <strong>PyTorch</strong> (optional if you you want to load your own model):</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span>pip<span class="w"> </span>install<span class="w"> </span>numpy +<span class="o">!</span>pip<span class="w"> </span>install<span class="w"> </span>torch +</pre></div> +</div> +</div> +<ul class="simple"> +<li><p>We start by creating a LeNet model:</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">torch</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">torch.onnx</span> + +<span class="k">class</span><span class="w"> </span><span class="nc">LeNet</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">LeNet</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">conv1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">conv2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fc1</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">16</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">*</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">120</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fc2</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">120</span><span class="p">,</span> <span class="mi">84</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fc3</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">84</span><span class="p">,</span> <span class="n">num_classes</span><span class="p">)</span> + + <span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conv1</span><span class="p">(</span><span class="n">x</span><span class="p">))</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">max_pool2d</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conv2</span><span class="p">(</span><span class="n">x</span><span class="p">))</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">max_pool2d</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">kernel_size</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">stride</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">16</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">*</span> <span class="mi">4</span><span class="p">)</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fc1</span><span class="p">(</span><span class="n">x</span><span class="p">))</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fc2</span><span class="p">(</span><span class="n">x</span><span class="p">))</span> + <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fc3</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> + <span class="k">return</span> <span class="n">x</span> + +<span class="c1"># Instantiate the model</span> +<span class="n">num_classes</span> <span class="o">=</span> <span class="mi">10</span> <span class="c1"># Assuming you're working with MNIST dataset</span> +<span class="n">model</span> <span class="o">=</span> <span class="n">LeNet</span><span class="p">(</span><span class="n">num_classes</span><span class="p">)</span> + +<span class="c1"># Set the model to evaluation mode</span> +<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span> + +<span class="c1"># Example input shape (batch_size, channels, height, width)</span> +<span class="n">dummy_input</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">)</span> + +<span class="c1"># Export the model to ONNX</span> +<span class="n">torch</span><span class="o">.</span><span class="n">onnx</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">dummy_input</span><span class="p">,</span> <span class="s2">"lenet.onnx"</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</pre></div> +</div> +</div> +<ul class="simple"> +<li><p>import the needed libraries</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cuda</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_onnx</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +</pre></div> +</div> +</div> +<ul class="simple"> +<li><p>load onnx model on Aidge</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">load_onnx</span><span class="p">(</span><span class="s2">"lenet.onnx"</span><span class="p">)</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">remove_flatten</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + +<span class="c1"># Configure the model</span> +<span class="n">model</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> +<span class="n">model</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cuda"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<ul class="simple"> +<li><p>create input tensor:</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create an input tensor</span> +<span class="nb">input</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> +<span class="n">input_tensor</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span> +<span class="n">input_tensor</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> +<span class="n">input_tensor</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cuda"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<ul class="simple"> +<li><p>compile the model:</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"cuda"</span><span class="p">,</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">dims</span><span class="o">=</span><span class="p">[</span><span class="n">input_tensor</span><span class="o">.</span><span class="n">dims</span><span class="p">()])</span> +</pre></div> +</div> +</div> +<ul class="simple"> +<li><p>create a scheduler and run inference</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Define the scheduler</span> +<span class="n">scheduler</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SequentialScheduler</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="c1"># Run inference !</span> +<span class="n">scheduler</span><span class="o">.</span><span class="n">forward</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="p">[</span><span class="n">input_tensor</span><span class="p">])</span> +<br/></pre></div> +</div> +</div> +<ul class="simple"> +<li><p>get the ouput: Before getting the output we need to set it to backend cpu</p></li> +</ul> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">outNode</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">get_output_nodes</span><span class="p">():</span> + <span class="n">outNode</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">get_output</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s1">'cpu'</span><span class="p">)</span> + <span class="n">output_aidge</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">outNode</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">get_output</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Aidge output: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">output_aidge</span><span class="p">))</span> + <span class="c1"># Make sure to set the output back to "cuda" otherwise the model will not be usable</span> + <span class="n">outNode</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">get_output</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s1">'cuda'</span><span class="p">)</span> +</pre></div> +</div> +</div> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="static_analysis.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Perform static analysis on a neural network model</p> + </div> + </a> + <a class="right-next" + href="ptq.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Post Training Quantization with AIDGE</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/source/Tutorial/backend_cuda.nblink.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright 2023, CEA LIST. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/source/Tutorial/backend_cuda.ipynb b/source/Tutorial/backend_cuda.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..5140a9e895565b03b35f67542c83de2e45473214 --- /dev/null +++ b/source/Tutorial/backend_cuda.ipynb @@ -0,0 +1,216 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Backend CUDA example\n", + "This tutorial provides a step-by-step guide on performing inference with the LeNet model using **Aidge Backend CUDA**. <br>\n", + "Using randomly generated data as input, we will demonstrate how to pass data through the model and observe its predictions. <br>\n", + "For the sake of simplicity, we will not train the model. Feel free to replace the onnx model with one already trained. <br>\n", + "\n", + "- The required libraries for this tutorial are **Numpy** and **PyTorch** (optional if you you want to load your own model):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install numpy\n", + "!pip install torch" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "- We start by creating a LeNet model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.onnx\n", + "\n", + "class LeNet(nn.Module):\n", + " def __init__(self, num_classes):\n", + " super(LeNet, self).__init__()\n", + " self.conv1 = nn.Conv2d(1, 6, kernel_size=5)\n", + " self.conv2 = nn.Conv2d(6, 16, kernel_size=5)\n", + " self.fc1 = nn.Linear(16 * 4 * 4, 120)\n", + " self.fc2 = nn.Linear(120, 84)\n", + " self.fc3 = nn.Linear(84, num_classes)\n", + "\n", + " def forward(self, x):\n", + " x = torch.relu(self.conv1(x))\n", + " x = torch.max_pool2d(x, kernel_size=2, stride=2)\n", + " x = torch.relu(self.conv2(x))\n", + " x = torch.max_pool2d(x, kernel_size=2, stride=2)\n", + " x = x.view(-1, 16 * 4 * 4)\n", + " x = torch.relu(self.fc1(x))\n", + " x = torch.relu(self.fc2(x))\n", + " x = self.fc3(x)\n", + " return x\n", + "\n", + "# Instantiate the model\n", + "num_classes = 10 # Assuming you're working with MNIST dataset\n", + "model = LeNet(num_classes)\n", + "\n", + "# Set the model to evaluation mode\n", + "model.eval()\n", + "\n", + "# Example input shape (batch_size, channels, height, width)\n", + "dummy_input = torch.randn(1, 1, 28, 28)\n", + "\n", + "# Export the model to ONNX\n", + "torch.onnx.export(model, dummy_input, \"lenet.onnx\", verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- import the needed libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import aidge_core\n", + "import aidge_backend_cuda\n", + "import aidge_onnx\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- load onnx model on Aidge" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = aidge_onnx.load_onnx(\"lenet.onnx\")\n", + "aidge_core.remove_flatten(model)\n", + "\n", + "# Configure the model\n", + "model.set_datatype(aidge_core.dtype.float32)\n", + "model.set_backend(\"cuda\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- create input tensor:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create an input tensor\n", + "input = np.random.randn(1, 1, 28, 28).astype(np.float32)\n", + "input_tensor = aidge_core.Tensor(input)\n", + "input_tensor.set_datatype(aidge_core.dtype.float32)\n", + "input_tensor.set_backend(\"cuda\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- compile the model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model.compile(\"cuda\", aidge_core.dtype.float32, dims=[input_tensor.dims()])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- create a scheduler and run inference" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Define the scheduler\n", + "scheduler = aidge_core.SequentialScheduler(model)\n", + "# Run inference !\n", + "scheduler.forward(data=[input_tensor])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- get the ouput: <br>\n", + "Before getting the output we need to set it to backend cpu" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for outNode in model.get_output_nodes():\n", + " outNode.get_operator().get_output(0).set_backend('cpu')\n", + " output_aidge = np.array(outNode.get_operator().get_output(0))\n", + " print(\"Aidge output: {}\".format(output_aidge))\n", + " # Make sure to set the output back to \"cuda\" otherwise the model will not be usable\n", + " outNode.get_operator().get_output(0).set_backend('cuda')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "aidge", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/source/Tutorial/database.html b/source/Tutorial/database.html index f5c0680df1fbc3e1637b086216b2ab872727dbde..c85ed432897e7cfc7ffe8a0e313b3ed48af8093c 100644 --- a/source/Tutorial/database.html +++ b/source/Tutorial/database.html @@ -8,7 +8,7 @@ <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Database MNIST — Eclipse Aidge documentation</title> + <title>Data provider tutorial — Eclipse Aidge documentation</title> @@ -59,11 +59,11 @@ <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> - <link rel="next" title="Graph matching and manipulation with Aidge" href="graph_matching.html" /> + <link rel="next" title="Graph matching and manipulation" href="graph_matching.html" /> <link rel="prev" title="Aidge demonstration" href="101_first_step.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="current nav bd-sidenav"> -<li class="toctree-l1 current active"><a class="current reference internal" href="#">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -392,7 +398,7 @@ <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> - <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Database MNIST</span></li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Data provider tutorial</span></li> </ul> </nav> </div> @@ -409,8 +415,8 @@ <div id="searchbox"></div> <article class="bd-article"> - <section id="Database-MNIST"> -<h1>Database MNIST<a class="headerlink" href="#Database-MNIST" title="Link to this heading">#</a></h1> + <section id="Data-provider-tutorial"> +<h1>Data provider tutorial<a class="headerlink" href="#Data-provider-tutorial" title="Link to this heading">#</a></h1> <p>This tutorial demonstrate the usage of databases and data providers to perform an evaluation on a model using Aidge.</p> <section id="Installation-and-Requirements"> <h2>Installation and Requirements<a class="headerlink" href="#Installation-and-Requirements" title="Link to this heading">#</a></h2> @@ -569,7 +575,7 @@ Decompression complete <div class="prompt empty docutils container"> </div> <div class="output_area rendered_html docutils container"> -<img src="https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpQcm9kdWNlcl8wKCJmYzFfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHNfcm9vdENscwpQcm9kdWNlcl8xKCJmYzFfYmlhczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzMoImZjMl9iaWFzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNSgiZmMzX2JpYXM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8yKCJmYzJfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNCgiZmMzX3dlaWdodDxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzQpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkZDXzAoImZjMV9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMCk8L2VtPjwvc3ViPiIpClJlTFVfMCgiUmVsdTxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpCkZDXzEoImZjMl9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMSk8L2VtPjwvc3ViPiIpClJlTFVfMSgiUmVsdV8xPGJyLz48c3ViPjxlbT4oUmVMVSMxKTwvZW0+PC9zdWI+IikKRkNfMigiZmMzX0dlbW0mbmJzcDs8c3VwPjxzcGFuIHRpdGxlPSJuYW1lID0gZmMzX0dlbW0Kb3V0cHV0X25hbWVzID0gWyZxdW90O291dHB1dCZxdW90O10KIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGJsdWUiPlsyXTwvc3Bhbj48L3N1cD48YnIvPjxzdWI+PGVtPihGQyMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfMC0tPnwiMCBbNTAsIDc4NF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxGQ18wClByb2R1Y2VyXzEtLT58IjAgWzUwXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifEZDXzAKUHJvZHVjZXJfMy0tPnwiMCBbNTBdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8RkNfMQpQcm9kdWNlcl81LS0+fCIwIFsxMF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxGQ18yClByb2R1Y2VyXzItLT58IjAgWzUwLCA1MF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxGQ18xClByb2R1Y2VyXzQtLT58IjAgWzEwLCA1MF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxGQ18yCkZDXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClJlTFVfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18xCkZDXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8xClJlTFVfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18yCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifEZDXzAKRkNfMi0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg=="/></div> +<img src="https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpQcm9kdWNlcl80KCJmYzNfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjNCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMigiZmMyX3dlaWdodDxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzMoImZjMl9iaWFzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNSgiZmMzX2JpYXM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8wKCJmYzFfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHNfcm9vdENscwpQcm9kdWNlcl8xKCJmYzFfYmlhczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkZDXzAoImZjMV9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMCk8L2VtPjwvc3ViPiIpClJlTFVfMCgiUmVsdTxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpCkZDXzEoImZjMl9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMSk8L2VtPjwvc3ViPiIpClJlTFVfMSgiUmVsdV8xPGJyLz48c3ViPjxlbT4oUmVMVSMxKTwvZW0+PC9zdWI+IikKRkNfMigiZmMzX0dlbW0mbmJzcDs8c3VwPjxzcGFuIHRpdGxlPSJuYW1lID0gZmMzX0dlbW0Kb3V0cHV0X25hbWVzID0gWyZxdW90O291dHB1dCZxdW90O10KIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGJsdWUiPlsyXTwvc3Bhbj48L3N1cD48YnIvPjxzdWI+PGVtPihGQyMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfNC0tPnwiMCBbMTAsIDUwXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifEZDXzIKUHJvZHVjZXJfMi0tPnwiMCBbNTAsIDUwXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifEZDXzEKUHJvZHVjZXJfMy0tPnwiMCBbNTBdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8RkNfMQpQcm9kdWNlcl81LS0+fCIwIFsxMF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxGQ18yClByb2R1Y2VyXzAtLT58IjAgWzUwLCA3ODRdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8RkNfMApQcm9kdWNlcl8xLS0+fCIwIFs1MF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxGQ18wCkZDXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClJlTFVfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18xCkZDXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8xClJlTFVfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18yCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifEZDXzAKRkNfMi0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg=="/></div> </div> <div class="nbinput nblast docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: @@ -631,7 +637,7 @@ Decompression complete </div> <div class="output_area docutils container"> <div class="highlight"><pre> -0.9634000000000001 +0.9633999999999999 </pre></div></div> </div> </section> @@ -661,7 +667,7 @@ Decompression complete title="next page"> <div class="prev-next-info"> <p class="prev-next-subtitle">next</p> - <p class="prev-next-title">Graph matching and manipulation with Aidge</p> + <p class="prev-next-title">Graph matching and manipulation</p> </div> <i class="fa-solid fa-angle-right"></i> </a> diff --git a/source/Tutorial/database.ipynb b/source/Tutorial/database.ipynb index 030c7cb9f1b5fdfed95d0c6669029a1c86da3dc5..3a45e9a316e9c8c38ced95516394a7be172f14d1 100644 --- a/source/Tutorial/database.ipynb +++ b/source/Tutorial/database.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Database MNIST\n", + "# Data provider tutorial\n", + "\n", "This tutorial demonstrate the usage of databases and data providers to perform an evaluation on a model using Aidge." ] }, @@ -24,10 +25,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:40.366688Z", - "iopub.status.busy": "2025-05-11T15:21:40.366467Z", - "iopub.status.idle": "2025-05-11T15:21:40.523587Z", - "shell.execute_reply": "2025-05-11T15:21:40.523206Z" + "iopub.execute_input": "2025-05-19T10:05:06.993801Z", + "iopub.status.busy": "2025-05-19T10:05:06.993643Z", + "iopub.status.idle": "2025-05-19T10:05:07.634370Z", + "shell.execute_reply": "2025-05-19T10:05:07.634104Z" } }, "outputs": [ @@ -51,7 +52,7 @@ " f.write(response.content)\n", " print(\"File downloaded successfully.\")\n", " else:\n", - " print(\"Failed to download file. Status code:\", response.status_code) \n", + " print(\"Failed to download file. Status code:\", response.status_code)\n", "\n", "# Download onnx model file\n", "download_material(\"MLP_MNIST.onnx\")\n" @@ -62,10 +63,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:40.524707Z", - "iopub.status.busy": "2025-05-11T15:21:40.524459Z", - "iopub.status.idle": "2025-05-11T15:21:44.279027Z", - "shell.execute_reply": "2025-05-11T15:21:44.278715Z" + "iopub.execute_input": "2025-05-19T10:05:07.635492Z", + "iopub.status.busy": "2025-05-19T10:05:07.635292Z", + "iopub.status.idle": "2025-05-19T10:05:10.326935Z", + "shell.execute_reply": "2025-05-19T10:05:10.326544Z" } }, "outputs": [ @@ -130,10 +131,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.280225Z", - "iopub.status.busy": "2025-05-11T15:21:44.279999Z", - "iopub.status.idle": "2025-05-11T15:21:44.477341Z", - "shell.execute_reply": "2025-05-11T15:21:44.477012Z" + "iopub.execute_input": "2025-05-19T10:05:10.327990Z", + "iopub.status.busy": "2025-05-19T10:05:10.327808Z", + "iopub.status.idle": "2025-05-19T10:05:10.508886Z", + "shell.execute_reply": "2025-05-19T10:05:10.508573Z" } }, "outputs": [], @@ -158,10 +159,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.478753Z", - "iopub.status.busy": "2025-05-11T15:21:44.478611Z", - "iopub.status.idle": "2025-05-11T15:21:44.480493Z", - "shell.execute_reply": "2025-05-11T15:21:44.480286Z" + "iopub.execute_input": "2025-05-19T10:05:10.510424Z", + "iopub.status.busy": "2025-05-19T10:05:10.510265Z", + "iopub.status.idle": "2025-05-19T10:05:10.512063Z", + "shell.execute_reply": "2025-05-19T10:05:10.511862Z" } }, "outputs": [], @@ -193,10 +194,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.481473Z", - "iopub.status.busy": "2025-05-11T15:21:44.481311Z", - "iopub.status.idle": "2025-05-11T15:21:44.560520Z", - "shell.execute_reply": "2025-05-11T15:21:44.560226Z" + "iopub.execute_input": "2025-05-19T10:05:10.512900Z", + "iopub.status.busy": "2025-05-19T10:05:10.512821Z", + "iopub.status.idle": "2025-05-19T10:05:10.586573Z", + "shell.execute_reply": "2025-05-19T10:05:10.586264Z" } }, "outputs": [], @@ -213,17 +214,17 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.562364Z", - "iopub.status.busy": "2025-05-11T15:21:44.562229Z", - "iopub.status.idle": "2025-05-11T15:21:44.574154Z", - "shell.execute_reply": "2025-05-11T15:21:44.573893Z" + "iopub.execute_input": "2025-05-19T10:05:10.588333Z", + "iopub.status.busy": "2025-05-19T10:05:10.588175Z", + "iopub.status.idle": "2025-05-19T10:05:10.599411Z", + "shell.execute_reply": "2025-05-19T10:05:10.599158Z" } }, "outputs": [ { "data": { "text/html": [ - "<img src=\"https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpQcm9kdWNlcl8wKCJmYzFfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHNfcm9vdENscwpQcm9kdWNlcl8xKCJmYzFfYmlhczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzMoImZjMl9iaWFzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNSgiZmMzX2JpYXM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8yKCJmYzJfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNCgiZmMzX3dlaWdodDxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzQpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkZDXzAoImZjMV9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMCk8L2VtPjwvc3ViPiIpClJlTFVfMCgiUmVsdTxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpCkZDXzEoImZjMl9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMSk8L2VtPjwvc3ViPiIpClJlTFVfMSgiUmVsdV8xPGJyLz48c3ViPjxlbT4oUmVMVSMxKTwvZW0+PC9zdWI+IikKRkNfMigiZmMzX0dlbW0mbmJzcDs8c3VwPjxzcGFuIHRpdGxlPSJuYW1lID0gZmMzX0dlbW0Kb3V0cHV0X25hbWVzID0gWyZxdW90O291dHB1dCZxdW90O10KIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGJsdWUiPlsyXTwvc3Bhbj48L3N1cD48YnIvPjxzdWI+PGVtPihGQyMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfMC0tPnwiMCBbNTAsIDc4NF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxGQ18wClByb2R1Y2VyXzEtLT58IjAgWzUwXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifEZDXzAKUHJvZHVjZXJfMy0tPnwiMCBbNTBdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8RkNfMQpQcm9kdWNlcl81LS0+fCIwIFsxMF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxGQ18yClByb2R1Y2VyXzItLT58IjAgWzUwLCA1MF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxGQ18xClByb2R1Y2VyXzQtLT58IjAgWzEwLCA1MF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxGQ18yCkZDXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClJlTFVfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18xCkZDXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8xClJlTFVfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18yCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifEZDXzAKRkNfMi0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg==\"/>" + "<img src=\"https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpQcm9kdWNlcl80KCJmYzNfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjNCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMigiZmMyX3dlaWdodDxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzMoImZjMl9iaWFzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNSgiZmMzX2JpYXM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8wKCJmYzFfd2VpZ2h0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHNfcm9vdENscwpQcm9kdWNlcl8xKCJmYzFfYmlhczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkZDXzAoImZjMV9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMCk8L2VtPjwvc3ViPiIpClJlTFVfMCgiUmVsdTxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpCkZDXzEoImZjMl9HZW1tPGJyLz48c3ViPjxlbT4oRkMjMSk8L2VtPjwvc3ViPiIpClJlTFVfMSgiUmVsdV8xPGJyLz48c3ViPjxlbT4oUmVMVSMxKTwvZW0+PC9zdWI+IikKRkNfMigiZmMzX0dlbW0mbmJzcDs8c3VwPjxzcGFuIHRpdGxlPSJuYW1lID0gZmMzX0dlbW0Kb3V0cHV0X25hbWVzID0gWyZxdW90O291dHB1dCZxdW90O10KIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGJsdWUiPlsyXTwvc3Bhbj48L3N1cD48YnIvPjxzdWI+PGVtPihGQyMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfNC0tPnwiMCBbMTAsIDUwXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifEZDXzIKUHJvZHVjZXJfMi0tPnwiMCBbNTAsIDUwXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifEZDXzEKUHJvZHVjZXJfMy0tPnwiMCBbNTBdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8RkNfMQpQcm9kdWNlcl81LS0+fCIwIFsxMF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxGQ18yClByb2R1Y2VyXzAtLT58IjAgWzUwLCA3ODRdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8RkNfMApQcm9kdWNlcl8xLS0+fCIwIFs1MF0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxGQ18wCkZDXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClJlTFVfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18xCkZDXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8xClJlTFVfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxGQ18yCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifEZDXzAKRkNfMi0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg==\"/>" ], "text/plain": [ "<IPython.core.display.Image object>" @@ -245,10 +246,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.575040Z", - "iopub.status.busy": "2025-05-11T15:21:44.574872Z", - "iopub.status.idle": "2025-05-11T15:21:44.576563Z", - "shell.execute_reply": "2025-05-11T15:21:44.576363Z" + "iopub.execute_input": "2025-05-19T10:05:10.600292Z", + "iopub.status.busy": "2025-05-19T10:05:10.600199Z", + "iopub.status.idle": "2025-05-19T10:05:10.601867Z", + "shell.execute_reply": "2025-05-19T10:05:10.601659Z" } }, "outputs": [], @@ -266,10 +267,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.577483Z", - "iopub.status.busy": "2025-05-11T15:21:44.577321Z", - "iopub.status.idle": "2025-05-11T15:21:44.900404Z", - "shell.execute_reply": "2025-05-11T15:21:44.900086Z" + "iopub.execute_input": "2025-05-19T10:05:10.602704Z", + "iopub.status.busy": "2025-05-19T10:05:10.602618Z", + "iopub.status.idle": "2025-05-19T10:05:10.914157Z", + "shell.execute_reply": "2025-05-19T10:05:10.913874Z" } }, "outputs": [], @@ -289,10 +290,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:44.901305Z", - "iopub.status.busy": "2025-05-11T15:21:44.901208Z", - "iopub.status.idle": "2025-05-11T15:21:45.223108Z", - "shell.execute_reply": "2025-05-11T15:21:45.222647Z" + "iopub.execute_input": "2025-05-19T10:05:10.915745Z", + "iopub.status.busy": "2025-05-19T10:05:10.915584Z", + "iopub.status.idle": "2025-05-19T10:05:11.217836Z", + "shell.execute_reply": "2025-05-19T10:05:11.217375Z" } }, "outputs": [ @@ -300,7 +301,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.9634000000000001\n" + "0.9633999999999999\n" ] } ], @@ -331,7 +332,7 @@ ], "metadata": { "kernelspec": { - "display_name": "env_aidge", + "display_name": "aidge", "language": "python", "name": "python3" }, diff --git a/source/Tutorial/export_cpp.html b/source/Tutorial/export_cpp.html index b22cce59db2e670008ce1703e767a29879397e68..ac04902694c5e695bccdcfbe067df81ed38a65da 100644 --- a/source/Tutorial/export_cpp.html +++ b/source/Tutorial/export_cpp.html @@ -8,7 +8,7 @@ <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Export a MNIST model to a CPP standalone project — Eclipse Aidge documentation</title> + <title>Export 101 — Eclipse Aidge documentation</title> @@ -59,11 +59,11 @@ <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> - <link rel="next" title="API" href="../API/index.html" /> + <link rel="next" title="Quantized model C++ export" href="export_cpp_quant.html" /> <link rel="prev" title="Aidge tiling demonstration" href="tiling.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="current nav bd-sidenav"> -<li class="toctree-l1 current active"><a class="current reference internal" href="#">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -392,7 +398,7 @@ <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> - <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Export a MNIST model to a CPP standalone project</span></li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Export 101</span></li> </ul> </nav> </div> @@ -409,8 +415,8 @@ <div id="searchbox"></div> <article class="bd-article"> - <section id="Export-a-MNIST-model-to-a-CPP-standalone-project"> -<h1>Export a MNIST model to a CPP standalone project<a class="headerlink" href="#Export-a-MNIST-model-to-a-CPP-standalone-project" title="Link to this heading">#</a></h1> + <section id="Export-101"> +<h1>Export 101<a class="headerlink" href="#Export-101" title="Link to this heading">#</a></h1> <div class="nbinput docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[1]: </pre></div> @@ -425,7 +431,7 @@ <div class="output_area docutils container"> <div class="highlight"><pre> Requirement already satisfied: requests in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.32.3) -Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.2.5) +Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.2.6) Collecting ipywidgets Downloading ipywidgets-8.1.7-py3-none-any.whl.metadata (2.4 kB) Collecting ipycanvas @@ -460,7 +466,7 @@ Requirement already satisfied: pure-eval in /builds/eclipse/aidge/aidge/venv/lib Downloading ipywidgets-8.1.7-py3-none-any.whl (139 kB) Downloading jupyterlab_widgets-3.0.15-py3-none-any.whl (216 kB) Downloading widgetsnbextension-4.0.14-py3-none-any.whl (2.2 MB) - <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">2.2/2.2 MB</span> <span class="ansi-red-fg">53.9 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> + <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">2.2/2.2 MB</span> <span class="ansi-red-fg">34.7 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> Downloading ipycanvas-0.13.3-py2.py3-none-any.whl (125 kB) Installing collected packages: widgetsnbextension, jupyterlab_widgets, ipywidgets, ipycanvas <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">4/4</span> [ipycanvas] @@ -470,55 +476,41 @@ Note: you may need to restart the kernel to use updated packages. </div> <section id="Download-the-model"> <h2>Download the model<a class="headerlink" href="#Download-the-model" title="Link to this heading">#</a></h2> -<div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: -</pre></div> -</div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span> -<span class="kn">import</span><span class="w"> </span><span class="nn">requests</span> -</pre></div> -</div> -</div> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Download onnx file if it has not been done before</span> -<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="s2">"./lenet_mnist.onnx"</span><span class="p">):</span> - <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"https://huggingface.co/vtemplier/LeNet_MNIST/resolve/main/lenet_mnist.onnx?download=true"</span><span class="p">)</span> - <span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span> - <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"lenet_mnist.onnx"</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> - <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> - <span class="nb">print</span><span class="p">(</span><span class="s2">"ONNX model downloaded successfully."</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="nb">print</span><span class="p">(</span><span class="s2">"Failed to download ONNX model. Status code:"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span><span class="p">)</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> + +<span class="n">file_url</span> <span class="o">=</span> <span class="s2">"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true"</span> +<span class="n">file_path</span> <span class="o">=</span> <span class="s2">"lenet_mnist.onnx"</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">download_file</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">file_url</span><span class="p">)</span> </pre></div> </div> </div> <div class="nboutput nblast docutils container"> <div class="prompt empty docutils container"> </div> -<div class="output_area docutils container"> +<div class="output_area stderr docutils container"> <div class="highlight"><pre> -ONNX model downloaded successfully. +lenet_mnist.onnx: 100%|██████████| 349k/349k [00:00<00:00, 8.07MB/s] </pre></div></div> </div> </section> <section id="Load-the-model-in-Aidge-and-manipulate-it"> <h2>Load the model in Aidge and manipulate it<a class="headerlink" href="#Load-the-model-in-Aidge-and-manipulate-it" title="Link to this heading">#</a></h2> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> -<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cpu</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cpu</span> <span class="kn">import</span><span class="w"> </span><span class="nn">aidge_onnx</span> <span class="kn">import</span><span class="w"> </span><span class="nn">aidge_export_cpp</span> </pre></div> </div> </div> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">load_onnx</span><span class="p">(</span><span class="s2">"lenet_mnist.onnx"</span><span class="p">)</span> @@ -526,7 +518,7 @@ ONNX model downloaded successfully. </div> </div> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Remove Flatten node, useless in the CPP export</span> @@ -538,7 +530,7 @@ ONNX model downloaded successfully. </div> </div> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span>rm<span class="w"> </span>-rf<span class="w"> </span>lenet_export_fp32 @@ -546,7 +538,7 @@ ONNX model downloaded successfully. </div> </div> <div class="nbinput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Generate scheduling of the model</span> @@ -558,8 +550,8 @@ ONNX model downloaded successfully. </section> <section id="Export-the-model"> <h2>Export the model<a class="headerlink" href="#Export-the-model" title="Link to this heading">#</a></h2> -<div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">export_folder</span> <span class="o">=</span> <span class="s2">"lenet_export_fp32"</span> @@ -571,23 +563,13 @@ ONNX model downloaded successfully. <span class="n">memory_manager</span><span class="o">=</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">mem_info</span><span class="o">.</span><span class="n">generate_optimized_memory_info</span><span class="p">,</span> <span class="n">memory_manager_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"stats_folder"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">export_folder</span><span class="si">}</span><span class="s2">/stats"</span><span class="p">,</span> <span class="s2">"wrapping"</span><span class="p">:</span> <span class="kc">False</span> <span class="p">}</span> <span class="p">)</span> - -<span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">generate_main_cpp</span><span class="p">(</span><span class="n">export_folder</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span> </pre></div> </div> </div> -<div class="nboutput nblast docutils container"> -<div class="prompt empty docutils container"> -</div> -<div class="output_area docutils container"> -<div class="highlight"><pre> -gen : lenet_export_fp32/data/feature_feature_0_Conv_input_0.h -</pre></div></div> -</div> <section id="Draw-your-own-number"> <h3>Draw your own number<a class="headerlink" href="#Draw-your-own-number" title="Link to this heading">#</a></h3> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">ipywidgets</span><span class="w"> </span><span class="kn">import</span> <span class="n">HBox</span><span class="p">,</span> <span class="n">VBox</span><span class="p">,</span> <span class="n">Button</span><span class="p">,</span> <span class="n">Layout</span> @@ -664,27 +646,26 @@ gen : lenet_export_fp32/data/feature_feature_0_Conv_input_0.h </div> </div> <div class="nboutput nblast docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: </pre></div> </div> <div class="output_area docutils container"> -<script type="application/vnd.jupyter.widget-view+json">{"version_major": 2, "version_minor": 0, "model_id": "44dd172846d746d787387796b29867aa"}</script></div> +<script type="application/vnd.jupyter.widget-view+json">{"version_major": 2, "version_minor": 0, "model_id": "a6d4edc48ab74af9a004a0b7d66dbd77"}</script></div> </div> </section> <section id="Generate-inputs-for-testing-the-model-from-your-drawing"> <h3>Generate inputs for testing the model from your drawing<a class="headerlink" href="#Generate-inputs-for-testing-the-model-from-your-drawing" title="Link to this heading">#</a></h3> <div class="nbinput docutils container"> -<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">try</span><span class="p">:</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">aidge_tensor</span> <span class="o">=</span> <span class="kc">None</span> +<span class="k">try</span><span class="p">:</span> <span class="n">number_np</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">get_image_data</span><span class="p">()</span> <span class="c1"># We got a numpy array with the shape of (28,28,4)</span> <span class="c1"># Transform it to (28,28)</span> <span class="n">x</span> <span class="o">=</span> <span class="n">number_np</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s2">"float32"</span><span class="p">)</span> - <span class="c1"># Convert from [0, 255] to [0, 1] and export it</span> - <span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">generate_input_file</span><span class="p">(</span><span class="n">export_folder</span><span class="o">=</span><span class="s2">"lenet_export_fp32"</span><span class="p">,</span> <span class="n">array_name</span><span class="o">=</span><span class="s2">"feature_feature_0_Conv_input_0"</span><span class="p">,</span> <span class="n">tensor</span><span class="o">=</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">x</span> <span class="o">/</span> <span class="mi">255</span><span class="p">))</span> - + <span class="n">aidge_tensor</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">x</span> <span class="o">/</span> <span class="mi">255</span><span class="p">)</span> <span class="k">except</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Please draw a number in the previous cell before running this one."</span><span class="p">)</span> </pre></div> @@ -698,6 +679,26 @@ gen : lenet_export_fp32/data/feature_feature_0_Conv_input_0.h Please draw a number in the previous cell before running this one. </pre></div></div> </div> +<p>Generate a main that will do an inference on the drawing.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">aidge_tensor</span><span class="p">:</span> + <span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">generate_main_cpp</span><span class="p">(</span><span class="n">export_folder</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">inputs_tensor</span><span class="o">=</span><span class="n">aidge_tensor</span><span class="p">)</span> +<span class="k">else</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Please draw a number before generating the export."</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Please draw a number before generating the export. +</pre></div></div> +</div> </section> <section id="Compile-the-export-and-test-it"> <h3>Compile the export and test it<a class="headerlink" href="#Compile-the-export-and-test-it" title="Link to this heading">#</a></h3> @@ -715,21 +716,17 @@ Please draw a number in the previous cell before running this one. <div class="output_area docutils container"> <div class="highlight"><pre> make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32' -g++ -O2 -Wall -Wextra -MMD -fopenmp -I. -I./dnn -I./dnn/include -I./dnn/layers -I./dnn/parameters -c main.cpp -o build/./main.o -In file included from <span class="ansi-bold">main.cpp:4</span>: -<span class="ansi-bold">data/feature_feature_0_Conv_input_0.h:4:393:</span> <span class="ansi-red-intense-fg ansi-bold">error: </span>‘<span class="ansi-bold">nan</span>’ was not declared in this scope - 4 | 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.6624670822171524e-44, <span class="ansi-red-intense-fg ansi-bold">nan</span>, 1.6815581571897805e-44, 2.942726775082116e-44, 1.0089348943138683e-43, 0.0, 4.273960316190692e-43, 0.0, 1.425184075619792e+37, 4.072873986560081e-41, 1.425184075619792e+37, 4.072873986560081e-41, 1.0166547672625598e+37, 4.072873986560081e-41, 1.0166547672625598e+37, 4.072873986560081e-41, 1551.88671875, 4.072873986560081e-41, 4.8130715755729514e+36, 4.072873986560081e-41, 4.420287501791034e+36, 4.072873986560081e-41, 4.8130715755729514e+36, 4.072873986560081e-41, 4.8130715755729514e+36, 4.072873986560081e-41, 1550.3515625, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 4.276196193364292e+36, 4.072873986560081e-41, 1876.568359375, 4.072873986560081e-41, 4.2459246970308416e+36, 4.072873986560081e-41, 1.0166547672625598e+37, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 4.2459246970308416e+36, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 4.2459246970308416e+36, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 1551.294921875, 4.072873986560081e-41, 7.946637941505923e+36, 4.072873986560081e-41, 4.420287501791034e+36, 4.072873986560081e-41, 7.946637941505923e+36, 4.072873986560081e-41, 7.946637941505923e+36, 4.072873986560081e-41, 1551.21875, 4.072873986560081e-41, 8.913581536950412e+36, 4.072873986560081e-41, 4.276196193364292e+36, 4.072873986560081e-41, 0.0, 0.0, 9.10844001811131e-44, 0.0, 3.5748036475435896e-12, 3.2931915210097526e-41, 1.425190160342673e+37, 4.072873986560081e-41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.174648137343064e-43, 0.0, 2.780176153220437e-42, 0.0, 0.0, 0.0, -6.044944005260339e+35, 3.29305139116332e-41, 2.6862891561106743e-42, 0.0, nan, nan, 3.194960498660583e-43, 0.0, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 6.792110083058292e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 8.895038568559888e-15, 2.7603642276376897e+20, 1.4328903369374592e-19, 2.0108239825872136e-19, 3170.010498046875, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 12691.8427734375, 0.0032389953266829252, 6.646346445936972e-33, 1.3563156426940112e-19, 1.1578380784113246e+27, 1.6676381918920442e+19, 4.9171690175937894e+33, 0.013943285681307316, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 223.25900268554688, 865096192.0, 3.0027241543911787e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 239651504128.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 1.4864516498717671e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 245527325179904.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 1.400123274514609e+19, 14249442304.0, 3.0031717130479807e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 1.5300222170479722e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 245553296310272.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 785.0205078125, 1.4361496526079918e+19, 1.170372808069421e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 773.2557983398438, 52809.265625, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298307595397904e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3253.9560546875, 51722568.0, 808069.9375, 3.0167133981823246e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14634063.0, 3301.141845703125, 882164.75, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14985280512.0, 836852.9375, 3835896004608.0, 2.8039985697919656e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 13.956130027770996, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 8.888750195959472e-15, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 6.2090808306983485e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 2.6447895466691317e+20, 7.156120728699916e+22, 2.6448006297463397e+20, 7.156120728699916e+22, 234038768.0, 6.451841121074237e+28, 6.914624536135793e+28, 3.048128113421378e+32, 3.9162642855201935e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 10250.5673828125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 3631340322816.0, 202659104.0, 1.8917654862266218e+23, 1.7751997780891114e+28, 3.031376270124142e+32, 7.7782809489959315e+31, 6.793872341592482e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 7.873816070105814e+31, 2.170740716611165e-18, 0.002580789616331458, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.1431658257577701e+33, 7.774188493311372e+31, 1.9368016799321393e+31, 7.31620560934271e+28, 1.0572354386536535e-14, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3745664512.0, 14316288868352.0, 8.297171039297452e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 228689.328125, 204069.078125, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 14250483384320.0, 882165.25, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 12691.8427734375, 3.016549466813845e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 1.4167034451460096e+16, 1.170370223130007e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 3746578688.0, 3380.39208984375, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 959124144128.0, 2.8045502118573262e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 861509.1875, 8.294526177008102e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 2.3677763001830605e+20, 7.406419809684859e+28, 3.0344099969329157e+32, 7.7782809489959315e+31, 8.29059635245651e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 1.1703712571057726e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 2.737577596819939e+20, 744.913330078125, 2.8572841821150455e+32, 0.00258567463606596, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.0996337309183355e+27, 1.2737084302582354e-14, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 9.011490303617355e-33, 1.3563127992606555e-19, 1.7728632692125496e+28, 1.1093918953717347e-32, 1.3563156426940112e-19, 6.653328882380856e-33, 1.2754205139829522e+19, 2.780176153220437e-42, 0.0, 1.884746434516879e-42, 0.0, 3.785687041624186e-12, 3.2931915210097526e-41, 4.041059153969684e-12, 3.2931915210097526e-41, 0.0, 0.0, 0.0, 0.0, 1551.84033203125, 4.072873986560081e-41, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 1.098312206172895e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 1.4939362661438726e-19, 1.9848806511142385e+23, 7.1443279863152655e+31, 3.0979603668382307e+27, 5.69952342700103e-13, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 14250522181632.0, 3664702865408.0, 3744489216.0, 3380.39208984375, 6.655616688261144e-33, 1.3555848803216089e-19, 4.1528322667931175e+21, 2.840936087877394e+20, 1.8523600588218255e+28, 4.7418032899659543e+30, 1.7884540591926476e+22, 12.766414642333984, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 51.59309768676758, 3320303058944.0, 1.170369706142124e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 51150976.0, 865588.0625, 211834470400.0, 12.766448020935059, 12884.8310546875, 1.515159678570673e+19, 3365.9501953125, 13.958324432373047, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3.101367854591673e+21, 1.9282594100907423e+31, 6.888753277821998e+22, 1.0995075551888714e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 57139.37109375, 1.7108441610124788e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 1.0983123537468476e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 3365.958251953125, 50662732.0, 4.4254777929264924e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 160.1651153564453, 907333599232.0, 3220.392822265625, 51215688.0, 865588.0625, 211834470400.0, 239664087040.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 227982950400.0, 1.7385771295049327e-19, 7.122052594949249e+28, 1.3233649744613663e-14, 7.77811750222512e+31, 1.9368016799321393e+31, 2.7253615828306965e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 1.7859880630426323e+31, 1.7409431772977156e+25, 2.081010990195864e-07, 1.1089319967361296e+27, 3.034411737786096e+32, 7.7782809489959315e+31, 5.520268162362513e+31, 2.30862377825769e-12, 3.3492807700068108e-18, 1.1708629125823588e-19, 1.3563156426940112e-19, 1.2686448208222805e+31, 3849740544.0, 3.048128113421378e+32, 2.2248365825721957e+23, 7.1443279863152655e+31, 1.1702369695032034e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 160.12548828125, 907333599232.0, 3220.392822265625 - | <span class="ansi-red-intense-fg ansi-bold">^~~</span> - -<span class="ansi-bold">data/feature_feature_0_Conv_input_0.h:4:2069:</span> <span class="ansi-red-intense-fg ansi-bold">error: </span>‘<span class="ansi-bold">nan</span>’ was not declared in this scope - 4 | 339e+35, 3.29305139116332e-41, 2.6862891561106743e-42, 0.0, <span class="ansi-red-intense-fg ansi-bold">nan</span>, nan, 3.194960498660583e-43, 0.0, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 6.792110083058292e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 8.895038568559888e-15, 2.7603642276376897e+20, 1.4328903369374592e-19, 2.0108239825872136e-19, 3170.010498046875, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 12691.8427734375, 0.0032389953266829252, 6.646346445936972e-33, 1.3563156426940112e-19, 1.1578380784113246e+27, 1.6676381918920442e+19, 4.9171690175937894e+33, 0.013943285681307316, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 223.25900268554688, 865096192.0, 3.0027241543911787e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 239651504128.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 1.4864516498717671e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 245527325179904.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 1.400123274514609e+19, 14249442304.0, 3.0031717130479807e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 1.5300222170479722e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 245553296310272.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 785.0205078125, 1.4361496526079918e+19, 1.170372808069421e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 773.2557983398438, 52809.265625, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298307595397904e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3253.9560546875, 51722568.0, 808069.9375, 3.0167133981823246e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14634063.0, 3301.141845703125, 882164.75, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14985280512.0, 836852.9375, 3835896004608.0, 2.8039985697919656e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 13.956130027770996, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 8.888750195959472e-15, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 6.2090808306983485e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 2.6447895466691317e+20, 7.156120728699916e+22, 2.6448006297463397e+20, 7.156120728699916e+22, 234038768.0, 6.451841121074237e+28, 6.914624536135793e+28, 3.048128113421378e+32, 3.9162642855201935e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 10250.5673828125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 3631340322816.0, 202659104.0, 1.8917654862266218e+23, 1.7751997780891114e+28, 3.031376270124142e+32, 7.7782809489959315e+31, 6.793872341592482e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 7.873816070105814e+31, 2.170740716611165e-18, 0.002580789616331458, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.1431658257577701e+33, 7.774188493311372e+31, 1.9368016799321393e+31, 7.31620560934271e+28, 1.0572354386536535e-14, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3745664512.0, 14316288868352.0, 8.297171039297452e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 228689.328125, 204069.078125, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 14250483384320.0, 882165.25, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 12691.8427734375, 3.016549466813845e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 1.4167034451460096e+16, 1.170370223130007e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 3746578688.0, 3380.39208984375, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 959124144128.0, 2.8045502118573262e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 861509.1875, 8.294526177008102e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 2.3677763001830605e+20, 7.406419809684859e+28, 3.0344099969329157e+32, 7.7782809489959315e+31, 8.29059635245651e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 1.1703712571057726e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 2.737577596819939e+20, 744.913330078125, 2.8572841821150455e+32, 0.00258567463606596, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.0996337309183355e+27, 1.2737084302582354e-14, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 9.011490303617355e-33, 1.3563127992606555e-19, 1.7728632692125496e+28, 1.1093918953717347e-32, 1.3563156426940112e-19, 6.653328882380856e-33, 1.2754205139829522e+19, 2.780176153220437e-42, 0.0, 1.884746434516879e-42, 0.0, 3.785687041624186e-12, 3.2931915210097526e-41, 4.041059153969684e-12, 3.2931915210097526e-41, 0.0, 0.0, 0.0, 0.0, 1551.84033203125, 4.072873986560081e-41, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 1.098312206172895e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 1.4939362661438726e-19, 1.9848806511142385e+23, 7.1443279863152655e+31, 3.0979603668382307e+27, 5.69952342700103e-13, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 14250522181632.0, 3664702865408.0, 3744489216.0, 3380.39208984375, 6.655616688261144e-33, 1.3555848803216089e-19, 4.1528322667931175e+21, 2.840936087877394e+20, 1.8523600588218255e+28, 4.7418032899659543e+30, 1.7884540591926476e+22, 12.766414642333984, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 51.59309768676758, 3320303058944.0, 1.170369706142124e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 51150976.0, 865588.0625, 211834470400.0, 12.766448020935059, 12884.8310546875, 1.515159678570673e+19, 3365.9501953125, 13.958324432373047, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3.101367854591673e+21, 1.9282594100907423e+31, 6.888753277821998e+22, 1.0995075551888714e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 57139.37109375, 1.7108441610124788e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 1.0983123537468476e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 3365.958251953125, 50662732.0, 4.4254777929264924e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 160.1651153564453, 907333599232.0, 3220.392822265625, 51215688.0, 865588.0625, 211834470400.0, 239664087040.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 227982950400.0, 1.7385771295049327e-19, 7.122052594949249e+28, 1.3233649744613663e-14, 7.77811750222512e+31, 1.9368016799321393e+31, 2.7253615828306965e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 1.7859880630426323e+31, 1.7409431772977156e+25, 2.081010990195864e-07, 1.1089319967361296e+27, 3.034411737786096e+32, 7.7782809489959315e+31, 5.520268162362513e+31, 2.30862377825769e-12, 3.3492807700068108e-18, 1.1708629125823588e-19, 1.3563156426940112e-19, 1.2686448208222805e+31, 3849740544.0, 3.048128113421378e+32, 2.2248365825721957e+23, 7.1443279863152655e+31, 1.1702369695032034e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 160.12548828125, 907333599232.0, 3220.392822265625 - | <span class="ansi-red-intense-fg ansi-bold">^~~</span> - -<span class="ansi-bold">data/feature_feature_0_Conv_input_0.h:4:2074:</span> <span class="ansi-red-intense-fg ansi-bold">error: </span>‘<span class="ansi-bold">nan</span>’ was not declared in this scope - 4 | 35, 3.29305139116332e-41, 2.6862891561106743e-42, 0.0, nan, <span class="ansi-red-intense-fg ansi-bold">nan</span>, 3.194960498660583e-43, 0.0, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 6.792110083058292e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 8.895038568559888e-15, 2.7603642276376897e+20, 1.4328903369374592e-19, 2.0108239825872136e-19, 3170.010498046875, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 12691.8427734375, 0.0032389953266829252, 6.646346445936972e-33, 1.3563156426940112e-19, 1.1578380784113246e+27, 1.6676381918920442e+19, 4.9171690175937894e+33, 0.013943285681307316, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 223.25900268554688, 865096192.0, 3.0027241543911787e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 239651504128.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 1.4864516498717671e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 245527325179904.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 1.400123274514609e+19, 14249442304.0, 3.0031717130479807e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 1.5300222170479722e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 245553296310272.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 785.0205078125, 1.4361496526079918e+19, 1.170372808069421e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 773.2557983398438, 52809.265625, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298307595397904e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3253.9560546875, 51722568.0, 808069.9375, 3.0167133981823246e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14634063.0, 3301.141845703125, 882164.75, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14985280512.0, 836852.9375, 3835896004608.0, 2.8039985697919656e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 13.956130027770996, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 8.888750195959472e-15, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 6.2090808306983485e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 2.6447895466691317e+20, 7.156120728699916e+22, 2.6448006297463397e+20, 7.156120728699916e+22, 234038768.0, 6.451841121074237e+28, 6.914624536135793e+28, 3.048128113421378e+32, 3.9162642855201935e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 10250.5673828125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 3631340322816.0, 202659104.0, 1.8917654862266218e+23, 1.7751997780891114e+28, 3.031376270124142e+32, 7.7782809489959315e+31, 6.793872341592482e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 7.873816070105814e+31, 2.170740716611165e-18, 0.002580789616331458, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.1431658257577701e+33, 7.774188493311372e+31, 1.9368016799321393e+31, 7.31620560934271e+28, 1.0572354386536535e-14, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3745664512.0, 14316288868352.0, 8.297171039297452e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 228689.328125, 204069.078125, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 14250483384320.0, 882165.25, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 12691.8427734375, 3.016549466813845e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 1.4167034451460096e+16, 1.170370223130007e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 3746578688.0, 3380.39208984375, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 959124144128.0, 2.8045502118573262e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 861509.1875, 8.294526177008102e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 2.3677763001830605e+20, 7.406419809684859e+28, 3.0344099969329157e+32, 7.7782809489959315e+31, 8.29059635245651e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 1.1703712571057726e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 2.737577596819939e+20, 744.913330078125, 2.8572841821150455e+32, 0.00258567463606596, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.0996337309183355e+27, 1.2737084302582354e-14, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 9.011490303617355e-33, 1.3563127992606555e-19, 1.7728632692125496e+28, 1.1093918953717347e-32, 1.3563156426940112e-19, 6.653328882380856e-33, 1.2754205139829522e+19, 2.780176153220437e-42, 0.0, 1.884746434516879e-42, 0.0, 3.785687041624186e-12, 3.2931915210097526e-41, 4.041059153969684e-12, 3.2931915210097526e-41, 0.0, 0.0, 0.0, 0.0, 1551.84033203125, 4.072873986560081e-41, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 1.098312206172895e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 1.4939362661438726e-19, 1.9848806511142385e+23, 7.1443279863152655e+31, 3.0979603668382307e+27, 5.69952342700103e-13, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 14250522181632.0, 3664702865408.0, 3744489216.0, 3380.39208984375, 6.655616688261144e-33, 1.3555848803216089e-19, 4.1528322667931175e+21, 2.840936087877394e+20, 1.8523600588218255e+28, 4.7418032899659543e+30, 1.7884540591926476e+22, 12.766414642333984, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 51.59309768676758, 3320303058944.0, 1.170369706142124e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 51150976.0, 865588.0625, 211834470400.0, 12.766448020935059, 12884.8310546875, 1.515159678570673e+19, 3365.9501953125, 13.958324432373047, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3.101367854591673e+21, 1.9282594100907423e+31, 6.888753277821998e+22, 1.0995075551888714e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 57139.37109375, 1.7108441610124788e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 1.0983123537468476e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 3365.958251953125, 50662732.0, 4.4254777929264924e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 160.1651153564453, 907333599232.0, 3220.392822265625, 51215688.0, 865588.0625, 211834470400.0, 239664087040.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 227982950400.0, 1.7385771295049327e-19, 7.122052594949249e+28, 1.3233649744613663e-14, 7.77811750222512e+31, 1.9368016799321393e+31, 2.7253615828306965e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 1.7859880630426323e+31, 1.7409431772977156e+25, 2.081010990195864e-07, 1.1089319967361296e+27, 3.034411737786096e+32, 7.7782809489959315e+31, 5.520268162362513e+31, 2.30862377825769e-12, 3.3492807700068108e-18, 1.1708629125823588e-19, 1.3563156426940112e-19, 1.2686448208222805e+31, 3849740544.0, 3.048128113421378e+32, 2.2248365825721957e+23, 7.1443279863152655e+31, 1.1702369695032034e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 160.12548828125, 907333599232.0, 3220.392822265625 - | <span class="ansi-red-intense-fg ansi-bold">^~~</span> - -make[1]: *** [Makefile:23: build/./main.o] Error 1 +g++ -O2 -Wall -Wextra -MMD -fopenmp -I. -I./dnn -I./dnn/include -I./dnn/layers -I./dnn/parameters -c dnn/src/forward.cpp -o build/./dnn/src/forward.o +In file included from <span class="ansi-bold">./dnn/include/kernels/fullyconnected.hpp:5</span>, + from <span class="ansi-bold">dnn/src/forward.cpp:16</span>: +<span class="ansi-bold">./dnn/include/network/rescaling_utils.hpp:11:16:</span> <span class="ansi-magenta-intense-fg ansi-bold">warning: </span>‘<span class="ansi-bold">int64_t smlal(int32_t, int32_t, uint32_t, uint32_t)</span>’ defined but not used [<span class="ansi-magenta-intense-fg ansi-bold">]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-function-Wunused-function]8;;</span>] + 11 | static int64_t <span class="ansi-magenta-intense-fg ansi-bold">smlal</span>(int32_t lhs, int32_t rhs, + | <span class="ansi-magenta-intense-fg ansi-bold">^~~~~</span> +g++ build/./dnn/src/forward.o -fopenmp -o bin/run_export +/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o: in function `_start': +(.text+0x1b): undefined reference to `main' +collect2: error: ld returned 1 exit status +make[1]: *** [Makefile:19: build] Error 1 make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32' </pre></div></div> </div> @@ -750,7 +747,7 @@ make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial </pre></div></div> </div> <script type="application/vnd.jupyter.widget-state+json"> -{"state": {"4844bdbba9b04f56bc42e25bbdbca74e": {"model_name": "CanvasManagerModel", "model_module": "ipycanvas", "model_module_version": "^0.13", "state": {"_model_module": "ipycanvas", "_model_module_version": "^0.13", "_model_name": "CanvasManagerModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null}}, "f4b921933e1942f797e95099977c42df": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "6e2797c1af5d43afb7abb8d906112889": {"model_name": "RoughCanvasModel", "model_module": "ipycanvas", "model_module_version": "^0.13", "state": {"_canvas_manager": "IPY_MODEL_4844bdbba9b04f56bc42e25bbdbca74e", "_dom_classes": [], "_model_module": "ipycanvas", "_model_module_version": "^0.13", "_model_name": "RoughCanvasModel", "_send_client_ready_event": true, "_view_count": null, "_view_module": "ipycanvas", "_view_module_version": "^0.13", "_view_name": "CanvasView", "height": 28, "image_data": null, "layout": "IPY_MODEL_f4b921933e1942f797e95099977c42df", "sync_image_data": true, "tabbable": null, "tooltip": null, "width": 28}}, "47c2b64028af4c9783ecc7f67f86aa9a": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "ac49bdb9ed7d4658bbfac9a664efd0fa": {"model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null}}, "8f98ec525f254b2ba716ef5603f00e1a": {"model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "", "description": "Generate PNG", "disabled": false, "icon": "", "layout": "IPY_MODEL_47c2b64028af4c9783ecc7f67f86aa9a", "style": "IPY_MODEL_ac49bdb9ed7d4658bbfac9a664efd0fa", "tabbable": null, "tooltip": null}}, "cd185cf741fa46889a9fe191d3ef6d3d": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "2fbdec33a15648e0923012c8d2ea778b": {"model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null}}, "3ea4b9ad78754973b741562a077d73c5": {"model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "", "description": "Clear", "disabled": false, "icon": "", "layout": "IPY_MODEL_cd185cf741fa46889a9fe191d3ef6d3d", "style": "IPY_MODEL_2fbdec33a15648e0923012c8d2ea778b", "tabbable": null, "tooltip": null}}, "42572276135644a69e11d945c339463c": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "26c41596eacd435b996e0edc0da387fe": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_8f98ec525f254b2ba716ef5603f00e1a", "IPY_MODEL_3ea4b9ad78754973b741562a077d73c5"], "layout": "IPY_MODEL_42572276135644a69e11d945c339463c", "tabbable": null, "tooltip": null}}, "3a95385e564f4e218265dad660909928": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": "auto", "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "300px"}}, "44dd172846d746d787387796b29867aa": {"model_name": "VBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "VBoxView", "box_style": "", "children": ["IPY_MODEL_6e2797c1af5d43afb7abb8d906112889", "IPY_MODEL_26c41596eacd435b996e0edc0da387fe"], "layout": "IPY_MODEL_3a95385e564f4e218265dad660909928", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0} +{"state": {"8d182b3f098c4561a9fb2663ca08746b": {"model_name": "CanvasManagerModel", "model_module": "ipycanvas", "model_module_version": "^0.13", "state": {"_model_module": "ipycanvas", "_model_module_version": "^0.13", "_model_name": "CanvasManagerModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null}}, "5fea29daefab4368a478fd02a570f514": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "c85fb2bb0f49435484a23d795bdbfaf0": {"model_name": "RoughCanvasModel", "model_module": "ipycanvas", "model_module_version": "^0.13", "state": {"_canvas_manager": "IPY_MODEL_8d182b3f098c4561a9fb2663ca08746b", "_dom_classes": [], "_model_module": "ipycanvas", "_model_module_version": "^0.13", "_model_name": "RoughCanvasModel", "_send_client_ready_event": true, "_view_count": null, "_view_module": "ipycanvas", "_view_module_version": "^0.13", "_view_name": "CanvasView", "height": 28, "image_data": null, "layout": "IPY_MODEL_5fea29daefab4368a478fd02a570f514", "sync_image_data": true, "tabbable": null, "tooltip": null, "width": 28}}, "ae63052964eb4452a512fbc579e0c3b2": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "9e1993e7b513461bac55cd4b1fcf5a90": {"model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null}}, "3a3c5f3c51c242abaa7dbbe034d13617": {"model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "", "description": "Generate PNG", "disabled": false, "icon": "", "layout": "IPY_MODEL_ae63052964eb4452a512fbc579e0c3b2", "style": "IPY_MODEL_9e1993e7b513461bac55cd4b1fcf5a90", "tabbable": null, "tooltip": null}}, "7cf1bcefe6fa48949d2e2248a642ebe4": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "ff271f40b47a498788c39b774153150a": {"model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null}}, "6812b6691b07470bb8ecbe93c0b7838f": {"model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "", "description": "Clear", "disabled": false, "icon": "", "layout": "IPY_MODEL_7cf1bcefe6fa48949d2e2248a642ebe4", "style": "IPY_MODEL_ff271f40b47a498788c39b774153150a", "tabbable": null, "tooltip": null}}, "cbde1e32a4ae4f6f9f7b711c70c4094e": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "d46354a5c3db4b72869a11baeb9153d3": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_3a3c5f3c51c242abaa7dbbe034d13617", "IPY_MODEL_6812b6691b07470bb8ecbe93c0b7838f"], "layout": "IPY_MODEL_cbde1e32a4ae4f6f9f7b711c70c4094e", "tabbable": null, "tooltip": null}}, "3bc9a3d9e39b41b4a0119c31c3568d2b": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": "auto", "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "300px"}}, "a6d4edc48ab74af9a004a0b7d66dbd77": {"model_name": "VBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "VBoxView", "box_style": "", "children": ["IPY_MODEL_c85fb2bb0f49435484a23d795bdbfaf0", "IPY_MODEL_d46354a5c3db4b72869a11baeb9153d3"], "layout": "IPY_MODEL_3bc9a3d9e39b41b4a0119c31c3568d2b", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0} </script></section> </section> </section> @@ -775,11 +772,11 @@ make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial </div> </a> <a class="right-next" - href="../API/index.html" + href="export_cpp_quant.html" title="next page"> <div class="prev-next-info"> <p class="prev-next-subtitle">next</p> - <p class="prev-next-title">API</p> + <p class="prev-next-title">Quantized model C++ export</p> </div> <i class="fa-solid fa-angle-right"></i> </a> diff --git a/source/Tutorial/export_cpp.ipynb b/source/Tutorial/export_cpp.ipynb index c46e4b120d16ff0e6017f8323872e56a1807bc7a..12c59968c064a6589f825fcea10e45244e05e591 100644 --- a/source/Tutorial/export_cpp.ipynb +++ b/source/Tutorial/export_cpp.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Export a MNIST model to a CPP standalone project" + "# Export 101" ] }, { @@ -12,10 +12,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:46.339852Z", - "iopub.status.busy": "2025-05-11T15:21:46.339603Z", - "iopub.status.idle": "2025-05-11T15:21:47.326474Z", - "shell.execute_reply": "2025-05-11T15:21:47.326082Z" + "iopub.execute_input": "2025-05-19T10:05:12.331886Z", + "iopub.status.busy": "2025-05-19T10:05:12.331789Z", + "iopub.status.idle": "2025-05-19T10:05:13.736670Z", + "shell.execute_reply": "2025-05-19T10:05:13.736256Z" } }, "outputs": [ @@ -24,7 +24,7 @@ "output_type": "stream", "text": [ "Requirement already satisfied: requests in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.32.3)\r\n", - "Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.2.5)\r\n" + "Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.2.6)\r\n" ] }, { @@ -46,14 +46,26 @@ "name": "stdout", "output_type": "stream", "text": [ - " Downloading ipycanvas-0.13.3-py2.py3-none-any.whl.metadata (6.3 kB)\r\n", + " Downloading ipycanvas-0.13.3-py2.py3-none-any.whl.metadata (6.3 kB)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Requirement already satisfied: charset-normalizer<4,>=2 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (3.4.2)\r\n", "Requirement already satisfied: idna<4,>=2.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (3.10)\r\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (2.4.0)\r\n", "Requirement already satisfied: certifi>=2017.4.17 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (2025.4.26)\r\n", "Requirement already satisfied: comm>=0.1.3 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (0.2.2)\r\n", "Requirement already satisfied: ipython>=6.1.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (8.36.0)\r\n", - "Requirement already satisfied: traitlets>=4.3.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (5.14.3)\r\n", + "Requirement already satisfied: traitlets>=4.3.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (5.14.3)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Collecting widgetsnbextension~=4.0.14 (from ipywidgets)\r\n" ] }, @@ -61,8 +73,20 @@ "name": "stdout", "output_type": "stream", "text": [ - " Downloading widgetsnbextension-4.0.14-py3-none-any.whl.metadata (1.6 kB)\r\n", - "Collecting jupyterlab_widgets~=3.0.15 (from ipywidgets)\r\n", + " Downloading widgetsnbextension-4.0.14-py3-none-any.whl.metadata (1.6 kB)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting jupyterlab_widgets~=3.0.15 (from ipywidgets)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ " Downloading jupyterlab_widgets-3.0.15-py3-none-any.whl.metadata (20 kB)\r\n" ] }, @@ -85,7 +109,13 @@ "Requirement already satisfied: ptyprocess>=0.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\r\n", "Requirement already satisfied: executing>=1.2.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (2.2.0)\r\n", "Requirement already satisfied: asttokens>=2.1.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (3.0.0)\r\n", - "Requirement already satisfied: pure-eval in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (0.2.3)\r\n", + "Requirement already satisfied: pure-eval in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (0.2.3)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Downloading ipywidgets-8.1.7-py3-none-any.whl (139 kB)\r\n" ] }, @@ -101,8 +131,15 @@ "output_type": "stream", "text": [ "Downloading widgetsnbextension-4.0.14-py3-none-any.whl (2.2 MB)\r\n", - "\u001b[?25l \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0.0/2.2 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r", - "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m2.2/2.2 MB\u001b[0m \u001b[31m53.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", + "\u001b[?25l \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0.0/2.2 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m2.2/2.2 MB\u001b[0m \u001b[31m34.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25h" ] }, @@ -155,48 +192,43 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.327663Z", - "iopub.status.busy": "2025-05-11T15:21:47.327514Z", - "iopub.status.idle": "2025-05-11T15:21:47.374054Z", - "shell.execute_reply": "2025-05-11T15:21:47.373739Z" - } - }, - "outputs": [], - "source": [ - "import os\n", - "import requests" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.375738Z", - "iopub.status.busy": "2025-05-11T15:21:47.375612Z", - "iopub.status.idle": "2025-05-11T15:21:47.563707Z", - "shell.execute_reply": "2025-05-11T15:21:47.563422Z" + "iopub.execute_input": "2025-05-19T10:05:13.737867Z", + "iopub.status.busy": "2025-05-19T10:05:13.737741Z", + "iopub.status.idle": "2025-05-19T10:05:15.033964Z", + "shell.execute_reply": "2025-05-19T10:05:15.033577Z" } }, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "ONNX model downloaded successfully.\n" + "\r", + "lenet_mnist.onnx: 0%| | 0.00/349k [00:00<?, ?B/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "lenet_mnist.onnx: 100%|██████████| 349k/349k [00:00<00:00, 8.07MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" ] } ], "source": [ - "# Download onnx file if it has not been done before\n", - "if not os.path.isfile(\"./lenet_mnist.onnx\"):\n", - " response = requests.get(\"https://huggingface.co/vtemplier/LeNet_MNIST/resolve/main/lenet_mnist.onnx?download=true\")\n", - " if response.status_code == 200:\n", - " with open(\"lenet_mnist.onnx\", 'wb') as f:\n", - " f.write(response.content)\n", - " print(\"ONNX model downloaded successfully.\")\n", - " else:\n", - " print(\"Failed to download ONNX model. Status code:\", response.status_code)" + "import aidge_core\n", + "\n", + "file_url = \"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true\"\n", + "file_path = \"lenet_mnist.onnx\"\n", + "aidge_core.utils.download_file(file_path, file_url)" ] }, { @@ -208,18 +240,17 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.564688Z", - "iopub.status.busy": "2025-05-11T15:21:47.564564Z", - "iopub.status.idle": "2025-05-11T15:21:47.800291Z", - "shell.execute_reply": "2025-05-11T15:21:47.799914Z" + "iopub.execute_input": "2025-05-19T10:05:15.035338Z", + "iopub.status.busy": "2025-05-19T10:05:15.035030Z", + "iopub.status.idle": "2025-05-19T10:05:15.125348Z", + "shell.execute_reply": "2025-05-19T10:05:15.125035Z" } }, "outputs": [], "source": [ - "import aidge_core\n", "import aidge_backend_cpu\n", "import aidge_onnx\n", "import aidge_export_cpp" @@ -227,13 +258,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.801825Z", - "iopub.status.busy": "2025-05-11T15:21:47.801616Z", - "iopub.status.idle": "2025-05-11T15:21:47.836605Z", - "shell.execute_reply": "2025-05-11T15:21:47.836327Z" + "iopub.execute_input": "2025-05-19T10:05:15.126701Z", + "iopub.status.busy": "2025-05-19T10:05:15.126554Z", + "iopub.status.idle": "2025-05-19T10:05:15.136686Z", + "shell.execute_reply": "2025-05-19T10:05:15.136414Z" } }, "outputs": [], @@ -243,13 +274,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.837721Z", - "iopub.status.busy": "2025-05-11T15:21:47.837620Z", - "iopub.status.idle": "2025-05-11T15:21:47.839570Z", - "shell.execute_reply": "2025-05-11T15:21:47.839359Z" + "iopub.execute_input": "2025-05-19T10:05:15.137553Z", + "iopub.status.busy": "2025-05-19T10:05:15.137435Z", + "iopub.status.idle": "2025-05-19T10:05:15.139346Z", + "shell.execute_reply": "2025-05-19T10:05:15.139111Z" } }, "outputs": [], @@ -263,13 +294,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.840388Z", - "iopub.status.busy": "2025-05-11T15:21:47.840304Z", - "iopub.status.idle": "2025-05-11T15:21:47.952715Z", - "shell.execute_reply": "2025-05-11T15:21:47.952351Z" + "iopub.execute_input": "2025-05-19T10:05:15.140229Z", + "iopub.status.busy": "2025-05-19T10:05:15.140080Z", + "iopub.status.idle": "2025-05-19T10:05:15.254889Z", + "shell.execute_reply": "2025-05-19T10:05:15.254389Z" } }, "outputs": [], @@ -279,13 +310,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.954033Z", - "iopub.status.busy": "2025-05-11T15:21:47.953876Z", - "iopub.status.idle": "2025-05-11T15:21:47.955927Z", - "shell.execute_reply": "2025-05-11T15:21:47.955713Z" + "iopub.execute_input": "2025-05-19T10:05:15.256280Z", + "iopub.status.busy": "2025-05-19T10:05:15.256165Z", + "iopub.status.idle": "2025-05-19T10:05:15.258455Z", + "shell.execute_reply": "2025-05-19T10:05:15.258184Z" } }, "outputs": [], @@ -304,24 +335,16 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:47.956797Z", - "iopub.status.busy": "2025-05-11T15:21:47.956710Z", - "iopub.status.idle": "2025-05-11T15:21:48.272305Z", - "shell.execute_reply": "2025-05-11T15:21:48.272020Z" + "iopub.execute_input": "2025-05-19T10:05:15.259349Z", + "iopub.status.busy": "2025-05-19T10:05:15.259134Z", + "iopub.status.idle": "2025-05-19T10:05:15.585679Z", + "shell.execute_reply": "2025-05-19T10:05:15.585286Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gen : lenet_export_fp32/data/feature_feature_0_Conv_input_0.h\n" - ] - } - ], + "outputs": [], "source": [ "export_folder = \"lenet_export_fp32\"\n", "\n", @@ -331,9 +354,7 @@ " aidge_export_cpp.ExportLibCpp,\n", " memory_manager=aidge_core.mem_info.generate_optimized_memory_info,\n", " memory_manager_args={\"stats_folder\": f\"{export_folder}/stats\", \"wrapping\": False }\n", - ")\n", - "\n", - "aidge_core.export_utils.generate_main_cpp(export_folder, model)" + ")" ] }, { @@ -345,20 +366,20 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:48.273415Z", - "iopub.status.busy": "2025-05-11T15:21:48.273273Z", - "iopub.status.idle": "2025-05-11T15:21:48.306393Z", - "shell.execute_reply": "2025-05-11T15:21:48.306173Z" + "iopub.execute_input": "2025-05-19T10:05:15.587306Z", + "iopub.status.busy": "2025-05-19T10:05:15.587020Z", + "iopub.status.idle": "2025-05-19T10:05:15.622348Z", + "shell.execute_reply": "2025-05-19T10:05:15.621962Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "44dd172846d746d787387796b29867aa", + "model_id": "a6d4edc48ab74af9a004a0b7d66dbd77", "version_major": 2, "version_minor": 0 }, @@ -366,7 +387,7 @@ "VBox(children=(RoughCanvas(height=28, sync_image_data=True, width=28), HBox(children=(Button(description='Gene…" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -453,13 +474,13 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:48.307919Z", - "iopub.status.busy": "2025-05-11T15:21:48.307702Z", - "iopub.status.idle": "2025-05-11T15:21:48.309921Z", - "shell.execute_reply": "2025-05-11T15:21:48.309710Z" + "iopub.execute_input": "2025-05-19T10:05:15.624038Z", + "iopub.status.busy": "2025-05-19T10:05:15.623832Z", + "iopub.status.idle": "2025-05-19T10:05:15.625949Z", + "shell.execute_reply": "2025-05-19T10:05:15.625718Z" } }, "outputs": [ @@ -472,18 +493,51 @@ } ], "source": [ + "aidge_tensor = None\n", "try:\n", " number_np = canvas.get_image_data()\n", " # We got a numpy array with the shape of (28,28,4)\n", " # Transform it to (28,28)\n", " x = number_np[:, :, 3].astype(\"float32\")\n", - " # Convert from [0, 255] to [0, 1] and export it\n", - " aidge_core.export_utils.generate_input_file(export_folder=\"lenet_export_fp32\", array_name=\"feature_feature_0_Conv_input_0\", tensor=aidge_core.Tensor(x / 255))\n", - "\n", + " aidge_tensor = aidge_core.Tensor(x / 255)\n", "except:\n", " print(\"Please draw a number in the previous cell before running this one.\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate a main that will do an inference on the drawing." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:15.626927Z", + "iopub.status.busy": "2025-05-19T10:05:15.626750Z", + "iopub.status.idle": "2025-05-19T10:05:15.628702Z", + "shell.execute_reply": "2025-05-19T10:05:15.628459Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please draw a number before generating the export.\n" + ] + } + ], + "source": [ + "if aidge_tensor:\n", + " aidge_core.export_utils.generate_main_cpp(export_folder, model, inputs_tensor=aidge_tensor)\n", + "else:\n", + " print(\"Please draw a number before generating the export.\")" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -496,10 +550,10 @@ "execution_count": 12, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:48.310799Z", - "iopub.status.busy": "2025-05-11T15:21:48.310665Z", - "iopub.status.idle": "2025-05-11T15:21:48.559205Z", - "shell.execute_reply": "2025-05-11T15:21:48.558801Z" + "iopub.execute_input": "2025-05-19T10:05:15.629665Z", + "iopub.status.busy": "2025-05-19T10:05:15.629503Z", + "iopub.status.idle": "2025-05-19T10:05:16.138491Z", + "shell.execute_reply": "2025-05-19T10:05:16.138058Z" } }, "outputs": [ @@ -508,27 +562,29 @@ "output_type": "stream", "text": [ "make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32'\r\n", - "g++ -O2 -Wall -Wextra -MMD -fopenmp -I. -I./dnn -I./dnn/include -I./dnn/layers -I./dnn/parameters -c main.cpp -o build/./main.o \r\n" + "g++ -O2 -Wall -Wextra -MMD -fopenmp -I. -I./dnn -I./dnn/include -I./dnn/layers -I./dnn/parameters -c dnn/src/forward.cpp -o build/./dnn/src/forward.o \r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "In file included from \u001b[01m\u001b[Kmain.cpp:4\u001b[m\u001b[K:\r\n", - "\u001b[01m\u001b[Kdata/feature_feature_0_Conv_input_0.h:4:393:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[K‘\u001b[01m\u001b[Knan\u001b[m\u001b[K’ was not declared in this scope\r\n", - " 4 | 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.6624670822171524e-44, \u001b[01;31m\u001b[Knan\u001b[m\u001b[K, 1.6815581571897805e-44, 2.942726775082116e-44, 1.0089348943138683e-43, 0.0, 4.273960316190692e-43, 0.0, 1.425184075619792e+37, 4.072873986560081e-41, 1.425184075619792e+37, 4.072873986560081e-41, 1.0166547672625598e+37, 4.072873986560081e-41, 1.0166547672625598e+37, 4.072873986560081e-41, 1551.88671875, 4.072873986560081e-41, 4.8130715755729514e+36, 4.072873986560081e-41, 4.420287501791034e+36, 4.072873986560081e-41, 4.8130715755729514e+36, 4.072873986560081e-41, 4.8130715755729514e+36, 4.072873986560081e-41, 1550.3515625, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 4.276196193364292e+36, 4.072873986560081e-41, 1876.568359375, 4.072873986560081e-41, 4.2459246970308416e+36, 4.072873986560081e-41, 1.0166547672625598e+37, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 4.2459246970308416e+36, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 4.2459246970308416e+36, 4.072873986560081e-41, 7.948017145358971e+36, 4.072873986560081e-41, 1551.294921875, 4.072873986560081e-41, 7.946637941505923e+36, 4.072873986560081e-41, 4.420287501791034e+36, 4.072873986560081e-41, 7.946637941505923e+36, 4.072873986560081e-41, 7.946637941505923e+36, 4.072873986560081e-41, 1551.21875, 4.072873986560081e-41, 8.913581536950412e+36, 4.072873986560081e-41, 4.276196193364292e+36, 4.072873986560081e-41, 0.0, 0.0, 9.10844001811131e-44, 0.0, 3.5748036475435896e-12, 3.2931915210097526e-41, 1.425190160342673e+37, 4.072873986560081e-41, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.174648137343064e-43, 0.0, 2.780176153220437e-42, 0.0, 0.0, 0.0, -6.044944005260339e+35, 3.29305139116332e-41, 2.6862891561106743e-42, 0.0, nan, nan, 3.194960498660583e-43, 0.0, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 6.792110083058292e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 8.895038568559888e-15, 2.7603642276376897e+20, 1.4328903369374592e-19, 2.0108239825872136e-19, 3170.010498046875, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 12691.8427734375, 0.0032389953266829252, 6.646346445936972e-33, 1.3563156426940112e-19, 1.1578380784113246e+27, 1.6676381918920442e+19, 4.9171690175937894e+33, 0.013943285681307316, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 223.25900268554688, 865096192.0, 3.0027241543911787e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 239651504128.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 1.4864516498717671e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 245527325179904.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 1.400123274514609e+19, 14249442304.0, 3.0031717130479807e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 1.5300222170479722e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 245553296310272.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 785.0205078125, 1.4361496526079918e+19, 1.170372808069421e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 773.2557983398438, 52809.265625, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298307595397904e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3253.9560546875, 51722568.0, 808069.9375, 3.0167133981823246e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14634063.0, 3301.141845703125, 882164.75, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14985280512.0, 836852.9375, 3835896004608.0, 2.8039985697919656e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 13.956130027770996, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 8.888750195959472e-15, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 6.2090808306983485e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 2.6447895466691317e+20, 7.156120728699916e+22, 2.6448006297463397e+20, 7.156120728699916e+22, 234038768.0, 6.451841121074237e+28, 6.914624536135793e+28, 3.048128113421378e+32, 3.9162642855201935e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 10250.5673828125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 3631340322816.0, 202659104.0, 1.8917654862266218e+23, 1.7751997780891114e+28, 3.031376270124142e+32, 7.7782809489959315e+31, 6.793872341592482e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 7.873816070105814e+31, 2.170740716611165e-18, 0.002580789616331458, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.1431658257577701e+33, 7.774188493311372e+31, 1.9368016799321393e+31, 7.31620560934271e+28, 1.0572354386536535e-14, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3745664512.0, 14316288868352.0, 8.297171039297452e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 228689.328125, 204069.078125, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 14250483384320.0, 882165.25, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 12691.8427734375, 3.016549466813845e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 1.4167034451460096e+16, 1.170370223130007e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 3746578688.0, 3380.39208984375, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 959124144128.0, 2.8045502118573262e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 861509.1875, 8.294526177008102e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 2.3677763001830605e+20, 7.406419809684859e+28, 3.0344099969329157e+32, 7.7782809489959315e+31, 8.29059635245651e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 1.1703712571057726e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 2.737577596819939e+20, 744.913330078125, 2.8572841821150455e+32, 0.00258567463606596, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.0996337309183355e+27, 1.2737084302582354e-14, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 9.011490303617355e-33, 1.3563127992606555e-19, 1.7728632692125496e+28, 1.1093918953717347e-32, 1.3563156426940112e-19, 6.653328882380856e-33, 1.2754205139829522e+19, 2.780176153220437e-42, 0.0, 1.884746434516879e-42, 0.0, 3.785687041624186e-12, 3.2931915210097526e-41, 4.041059153969684e-12, 3.2931915210097526e-41, 0.0, 0.0, 0.0, 0.0, 1551.84033203125, 4.072873986560081e-41, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 1.098312206172895e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 1.4939362661438726e-19, 1.9848806511142385e+23, 7.1443279863152655e+31, 3.0979603668382307e+27, 5.69952342700103e-13, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 14250522181632.0, 3664702865408.0, 3744489216.0, 3380.39208984375, 6.655616688261144e-33, 1.3555848803216089e-19, 4.1528322667931175e+21, 2.840936087877394e+20, 1.8523600588218255e+28, 4.7418032899659543e+30, 1.7884540591926476e+22, 12.766414642333984, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 51.59309768676758, 3320303058944.0, 1.170369706142124e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 51150976.0, 865588.0625, 211834470400.0, 12.766448020935059, 12884.8310546875, 1.515159678570673e+19, 3365.9501953125, 13.958324432373047, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3.101367854591673e+21, 1.9282594100907423e+31, 6.888753277821998e+22, 1.0995075551888714e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 57139.37109375, 1.7108441610124788e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 1.0983123537468476e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 3365.958251953125, 50662732.0, 4.4254777929264924e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 160.1651153564453, 907333599232.0, 3220.392822265625, 51215688.0, 865588.0625, 211834470400.0, 239664087040.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 227982950400.0, 1.7385771295049327e-19, 7.122052594949249e+28, 1.3233649744613663e-14, 7.77811750222512e+31, 1.9368016799321393e+31, 2.7253615828306965e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 1.7859880630426323e+31, 1.7409431772977156e+25, 2.081010990195864e-07, 1.1089319967361296e+27, 3.034411737786096e+32, 7.7782809489959315e+31, 5.520268162362513e+31, 2.30862377825769e-12, 3.3492807700068108e-18, 1.1708629125823588e-19, 1.3563156426940112e-19, 1.2686448208222805e+31, 3849740544.0, 3.048128113421378e+32, 2.2248365825721957e+23, 7.1443279863152655e+31, 1.1702369695032034e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 160.12548828125, 907333599232.0, 3220.392822265625\r\n", - " | \u001b[01;31m\u001b[K^~~\u001b[m\u001b[K\r\n", - "\r\n", - "\u001b[01m\u001b[Kdata/feature_feature_0_Conv_input_0.h:4:2069:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[K‘\u001b[01m\u001b[Knan\u001b[m\u001b[K’ was not declared in this scope\r\n", - " 4 | 339e+35, 3.29305139116332e-41, 2.6862891561106743e-42, 0.0, \u001b[01;31m\u001b[Knan\u001b[m\u001b[K, nan, 3.194960498660583e-43, 0.0, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 6.792110083058292e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 8.895038568559888e-15, 2.7603642276376897e+20, 1.4328903369374592e-19, 2.0108239825872136e-19, 3170.010498046875, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 12691.8427734375, 0.0032389953266829252, 6.646346445936972e-33, 1.3563156426940112e-19, 1.1578380784113246e+27, 1.6676381918920442e+19, 4.9171690175937894e+33, 0.013943285681307316, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 223.25900268554688, 865096192.0, 3.0027241543911787e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 239651504128.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 1.4864516498717671e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 245527325179904.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 1.400123274514609e+19, 14249442304.0, 3.0031717130479807e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 1.5300222170479722e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 245553296310272.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 785.0205078125, 1.4361496526079918e+19, 1.170372808069421e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 773.2557983398438, 52809.265625, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298307595397904e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3253.9560546875, 51722568.0, 808069.9375, 3.0167133981823246e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14634063.0, 3301.141845703125, 882164.75, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14985280512.0, 836852.9375, 3835896004608.0, 2.8039985697919656e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 13.956130027770996, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 8.888750195959472e-15, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 6.2090808306983485e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 2.6447895466691317e+20, 7.156120728699916e+22, 2.6448006297463397e+20, 7.156120728699916e+22, 234038768.0, 6.451841121074237e+28, 6.914624536135793e+28, 3.048128113421378e+32, 3.9162642855201935e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 10250.5673828125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 3631340322816.0, 202659104.0, 1.8917654862266218e+23, 1.7751997780891114e+28, 3.031376270124142e+32, 7.7782809489959315e+31, 6.793872341592482e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 7.873816070105814e+31, 2.170740716611165e-18, 0.002580789616331458, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.1431658257577701e+33, 7.774188493311372e+31, 1.9368016799321393e+31, 7.31620560934271e+28, 1.0572354386536535e-14, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3745664512.0, 14316288868352.0, 8.297171039297452e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 228689.328125, 204069.078125, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 14250483384320.0, 882165.25, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 12691.8427734375, 3.016549466813845e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 1.4167034451460096e+16, 1.170370223130007e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 3746578688.0, 3380.39208984375, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 959124144128.0, 2.8045502118573262e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 861509.1875, 8.294526177008102e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 2.3677763001830605e+20, 7.406419809684859e+28, 3.0344099969329157e+32, 7.7782809489959315e+31, 8.29059635245651e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 1.1703712571057726e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 2.737577596819939e+20, 744.913330078125, 2.8572841821150455e+32, 0.00258567463606596, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.0996337309183355e+27, 1.2737084302582354e-14, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 9.011490303617355e-33, 1.3563127992606555e-19, 1.7728632692125496e+28, 1.1093918953717347e-32, 1.3563156426940112e-19, 6.653328882380856e-33, 1.2754205139829522e+19, 2.780176153220437e-42, 0.0, 1.884746434516879e-42, 0.0, 3.785687041624186e-12, 3.2931915210097526e-41, 4.041059153969684e-12, 3.2931915210097526e-41, 0.0, 0.0, 0.0, 0.0, 1551.84033203125, 4.072873986560081e-41, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 1.098312206172895e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 1.4939362661438726e-19, 1.9848806511142385e+23, 7.1443279863152655e+31, 3.0979603668382307e+27, 5.69952342700103e-13, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 14250522181632.0, 3664702865408.0, 3744489216.0, 3380.39208984375, 6.655616688261144e-33, 1.3555848803216089e-19, 4.1528322667931175e+21, 2.840936087877394e+20, 1.8523600588218255e+28, 4.7418032899659543e+30, 1.7884540591926476e+22, 12.766414642333984, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 51.59309768676758, 3320303058944.0, 1.170369706142124e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 51150976.0, 865588.0625, 211834470400.0, 12.766448020935059, 12884.8310546875, 1.515159678570673e+19, 3365.9501953125, 13.958324432373047, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3.101367854591673e+21, 1.9282594100907423e+31, 6.888753277821998e+22, 1.0995075551888714e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 57139.37109375, 1.7108441610124788e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 1.0983123537468476e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 3365.958251953125, 50662732.0, 4.4254777929264924e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 160.1651153564453, 907333599232.0, 3220.392822265625, 51215688.0, 865588.0625, 211834470400.0, 239664087040.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 227982950400.0, 1.7385771295049327e-19, 7.122052594949249e+28, 1.3233649744613663e-14, 7.77811750222512e+31, 1.9368016799321393e+31, 2.7253615828306965e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 1.7859880630426323e+31, 1.7409431772977156e+25, 2.081010990195864e-07, 1.1089319967361296e+27, 3.034411737786096e+32, 7.7782809489959315e+31, 5.520268162362513e+31, 2.30862377825769e-12, 3.3492807700068108e-18, 1.1708629125823588e-19, 1.3563156426940112e-19, 1.2686448208222805e+31, 3849740544.0, 3.048128113421378e+32, 2.2248365825721957e+23, 7.1443279863152655e+31, 1.1702369695032034e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 160.12548828125, 907333599232.0, 3220.392822265625\r\n", - " | \u001b[01;31m\u001b[K^~~\u001b[m\u001b[K\r\n", - "\r\n", - "\u001b[01m\u001b[Kdata/feature_feature_0_Conv_input_0.h:4:2074:\u001b[m\u001b[K \u001b[01;31m\u001b[Kerror: \u001b[m\u001b[K‘\u001b[01m\u001b[Knan\u001b[m\u001b[K’ was not declared in this scope\r\n", - " 4 | 35, 3.29305139116332e-41, 2.6862891561106743e-42, 0.0, nan, \u001b[01;31m\u001b[Knan\u001b[m\u001b[K, 3.194960498660583e-43, 0.0, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 6.792110083058292e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 8.895038568559888e-15, 2.7603642276376897e+20, 1.4328903369374592e-19, 2.0108239825872136e-19, 3170.010498046875, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 12691.8427734375, 0.0032389953266829252, 6.646346445936972e-33, 1.3563156426940112e-19, 1.1578380784113246e+27, 1.6676381918920442e+19, 4.9171690175937894e+33, 0.013943285681307316, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 223.25900268554688, 865096192.0, 3.0027241543911787e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 239651504128.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 1.4864516498717671e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 3365.949462890625, 3746909184.0, 14316288868352.0, 1.2708969032439562e+19, 245527325179904.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 14249442304.0, 8.124677042253836e-10, 1.400123274514609e+19, 14249442304.0, 3.0031717130479807e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 1.5300222170479722e+19, 51525.28125, 8.297350302185953e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 245553296310272.0, 217361.140625, 1.355589274718613e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3170.0078125, 229060395008.0, 3173.954345703125, 229060395008.0, 1.2853067727841001e+19, 14512632832.0, 1.4722072568316035e+19, 785.0205078125, 1.4361496526079918e+19, 1.170372808069421e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 773.2557983398438, 52809.265625, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298307595397904e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3631347662848.0, 3140.58251953125, 8.298119516301772e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 3253.9560546875, 51722568.0, 808069.9375, 3.0167133981823246e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14634063.0, 3301.141845703125, 882164.75, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 14985280512.0, 836852.9375, 3835896004608.0, 2.8039985697919656e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 13.956130027770996, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 8.888750195959472e-15, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 6.2090808306983485e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 2.6447895466691317e+20, 7.156120728699916e+22, 2.6448006297463397e+20, 7.156120728699916e+22, 234038768.0, 6.451841121074237e+28, 6.914624536135793e+28, 3.048128113421378e+32, 3.9162642855201935e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 10250.5673828125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 3631340322816.0, 202659104.0, 1.8917654862266218e+23, 1.7751997780891114e+28, 3.031376270124142e+32, 7.7782809489959315e+31, 6.793872341592482e+22, 4.8617293357346353e+30, 6.7994000597751165e+22, 4.8617293357346353e+30, 1.285310291221309e+19, 16668505088.0, 1.7036957961156559e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 7.873816070105814e+31, 2.170740716611165e-18, 0.002580789616331458, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.1431658257577701e+33, 7.774188493311372e+31, 1.9368016799321393e+31, 7.31620560934271e+28, 1.0572354386536535e-14, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3745664512.0, 14316288868352.0, 8.297171039297452e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 3744489216.0, 228689.328125, 204069.078125, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 14250483384320.0, 882165.25, 2.8468486248933722e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 12691.8427734375, 3.016549466813845e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 3544372215808.0, 1.4167034451460096e+16, 1.170370223130007e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 3746578688.0, 3380.39208984375, 1.1703721618345676e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 14586049724416.0, 14289.330078125, 14586049724416.0, 1.299606999793923e-08, 850152201912320.0, 54345024.0, 3664638640128.0, 1.530022326999135e+19, 231253737472.0, 959124144128.0, 2.8045502118573262e-12, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 12.329620361328125, 3365.3330078125, 12.329680442810059, 3365.3330078125, 234038768.0, 3495444736.0, 3746320128.0, 14316288868352.0, 1.2708969032439562e+19, 861509.1875, 8.294526177008102e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 7.143087144854013e+31, 1.6533405824890962e+19, 7.143087144854013e+31, 1.6533405824890962e+19, 2.3677763001830605e+20, 7.406419809684859e+28, 3.0344099969329157e+32, 7.7782809489959315e+31, 8.29059635245651e-33, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 1.1703712571057726e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 10248.03125, 2.737577596819939e+20, 744.913330078125, 2.8572841821150455e+32, 0.00258567463606596, 1.3563127992606555e-19, 1.3563156426940112e-19, 1.0996337309183355e+27, 1.2737084302582354e-14, 3320363614208.0, 1.4218520432050438e+19, 3320363614208.0, 1.4218520432050438e+19, 12.83574104309082, 3478149120.0, 14250512744448.0, 3664702865408.0, 958589239296.0, 12.332599639892578, 9.011490303617355e-33, 1.3563127992606555e-19, 1.7728632692125496e+28, 1.1093918953717347e-32, 1.3563156426940112e-19, 6.653328882380856e-33, 1.2754205139829522e+19, 2.780176153220437e-42, 0.0, 1.884746434516879e-42, 0.0, 3.785687041624186e-12, 3.2931915210097526e-41, 4.041059153969684e-12, 3.2931915210097526e-41, 0.0, 0.0, 0.0, 0.0, 1551.84033203125, 4.072873986560081e-41, 0.0, 0.0, 1.1692376319256628e-19, 1.3563156426940112e-19, 1.890428097281278e+23, 7.1443279863152655e+31, 1.098312206172895e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 1.4939362661438726e-19, 1.9848806511142385e+23, 7.1443279863152655e+31, 3.0979603668382307e+27, 5.69952342700103e-13, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 14250522181632.0, 3664702865408.0, 3744489216.0, 3380.39208984375, 6.655616688261144e-33, 1.3555848803216089e-19, 4.1528322667931175e+21, 2.840936087877394e+20, 1.8523600588218255e+28, 4.7418032899659543e+30, 1.7884540591926476e+22, 12.766414642333984, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 51.59309768676758, 3320303058944.0, 1.170369706142124e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 51150976.0, 865588.0625, 211834470400.0, 12.766448020935059, 12884.8310546875, 1.515159678570673e+19, 3365.9501953125, 13.958324432373047, 55340934627328.0, 3377742080.0, 1.1709669563937815e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 3.101367854591673e+21, 1.9282594100907423e+31, 6.888753277821998e+22, 1.0995075551888714e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 57139.37109375, 1.7108441610124788e+19, 3.0262524359993083e+29, 8.129242279331095e-10, 1.0983123537468476e+27, 1.8394614727878753e+25, 4.543967113057844e+30, 2.725370027079998e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 6.209082181778237e+22, 6.915711152663501e+28, 3.048128113421378e+32, 2.506409142732924e-12, 12.766387939453125, 12884.8310546875, 1.515159678570673e+19, 830208147456.0, 812181.1875, 2.0798422895040858e-07, 51726716.0, 3365.958251953125, 50662732.0, 4.4254777929264924e-14, 1.3555912134231737e-19, 1.5554267943085343e-13, 1.3563127992606555e-19, 2.752398330985541e+23, 1.9515305130566762e-19, 3428.082763671875, 3664638640128.0, 911964372992.0, 1.3563127992606555e-19, 52762752.0, 160.1651153564453, 907333599232.0, 3220.392822265625, 51215688.0, 865588.0625, 211834470400.0, 239664087040.0, 1.5369735494610977e+19, 14249442304.0, 8.124677042253836e-10, 227982950400.0, 1.7385771295049327e-19, 7.122052594949249e+28, 1.3233649744613663e-14, 7.77811750222512e+31, 1.9368016799321393e+31, 2.7253615828306965e+20, 2.7561026317510457e+23, 1.7466482178547253e+19, 1.7859880630426323e+31, 1.7409431772977156e+25, 2.081010990195864e-07, 1.1089319967361296e+27, 3.034411737786096e+32, 7.7782809489959315e+31, 5.520268162362513e+31, 2.30862377825769e-12, 3.3492807700068108e-18, 1.1708629125823588e-19, 1.3563156426940112e-19, 1.2686448208222805e+31, 3849740544.0, 3.048128113421378e+32, 2.2248365825721957e+23, 7.1443279863152655e+31, 1.1702369695032034e-19, 1.3563156426940112e-19, 1.3563156426940112e-19, 160.12548828125, 907333599232.0, 3220.392822265625\r\n", - " | \u001b[01;31m\u001b[K^~~\u001b[m\u001b[K\r\n", - "\r\n", - "make[1]: *** [Makefile:23: build/./main.o] Error 1\r\n", + "In file included from \u001b[01m\u001b[K./dnn/include/kernels/fullyconnected.hpp:5\u001b[m\u001b[K,\r\n", + " from \u001b[01m\u001b[Kdnn/src/forward.cpp:16\u001b[m\u001b[K:\r\n", + "\u001b[01m\u001b[K./dnn/include/network/rescaling_utils.hpp:11:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[K‘\u001b[01m\u001b[Kint64_t smlal(int32_t, int32_t, uint32_t, uint32_t)\u001b[m\u001b[K’ defined but not used [\u001b[01;35m\u001b[K\u001b]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-function\u0007-Wunused-function\u001b]8;;\u0007\u001b[m\u001b[K]\r\n", + " 11 | static int64_t \u001b[01;35m\u001b[Ksmlal\u001b[m\u001b[K(int32_t lhs, int32_t rhs,\r\n", + " | \u001b[01;35m\u001b[K^~~~~\u001b[m\u001b[K\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g++ build/./dnn/src/forward.o -fopenmp -o bin/run_export\r\n", + "/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':\r\n", + "(.text+0x1b): undefined reference to `main'\r\n", + "collect2: error: ld returned 1 exit status\r\n", + "make[1]: *** [Makefile:19: build] Error 1\r\n", "make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32'\r\n" ] } @@ -542,10 +598,10 @@ "execution_count": 13, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:48.560996Z", - "iopub.status.busy": "2025-05-11T15:21:48.560828Z", - "iopub.status.idle": "2025-05-11T15:21:48.674669Z", - "shell.execute_reply": "2025-05-11T15:21:48.674319Z" + "iopub.execute_input": "2025-05-19T10:05:16.140693Z", + "iopub.status.busy": "2025-05-19T10:05:16.140247Z", + "iopub.status.idle": "2025-05-19T10:05:16.255339Z", + "shell.execute_reply": "2025-05-19T10:05:16.254901Z" } }, "outputs": [ @@ -583,52 +639,30 @@ "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { - "26c41596eacd435b996e0edc0da387fe": { + "3a3c5f3c51c242abaa7dbbe034d13617": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "ButtonModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_8f98ec525f254b2ba716ef5603f00e1a", - "IPY_MODEL_3ea4b9ad78754973b741562a077d73c5" - ], - "layout": "IPY_MODEL_42572276135644a69e11d945c339463c", + "_view_name": "ButtonView", + "button_style": "", + "description": "Generate PNG", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_ae63052964eb4452a512fbc579e0c3b2", + "style": "IPY_MODEL_9e1993e7b513461bac55cd4b1fcf5a90", "tabbable": null, "tooltip": null } }, - "2fbdec33a15648e0923012c8d2ea778b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ButtonStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ButtonStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "button_color": null, - "font_family": null, - "font_size": null, - "font_style": null, - "font_variant": null, - "font_weight": null, - "text_color": null, - "text_decoration": null - } - }, - "3a95385e564f4e218265dad660909928": { + "3bc9a3d9e39b41b4a0119c31c3568d2b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -681,30 +715,7 @@ "width": "300px" } }, - "3ea4b9ad78754973b741562a077d73c5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ButtonModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ButtonModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "Clear", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_cd185cf741fa46889a9fe191d3ef6d3d", - "style": "IPY_MODEL_2fbdec33a15648e0923012c8d2ea778b", - "tabbable": null, - "tooltip": null - } - }, - "42572276135644a69e11d945c339463c": { + "5fea29daefab4368a478fd02a570f514": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -757,30 +768,30 @@ "width": null } }, - "44dd172846d746d787387796b29867aa": { + "6812b6691b07470bb8ecbe93c0b7838f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "VBoxModel", + "model_name": "ButtonModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "VBoxModel", + "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "VBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_6e2797c1af5d43afb7abb8d906112889", - "IPY_MODEL_26c41596eacd435b996e0edc0da387fe" - ], - "layout": "IPY_MODEL_3a95385e564f4e218265dad660909928", + "_view_name": "ButtonView", + "button_style": "", + "description": "Clear", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_7cf1bcefe6fa48949d2e2248a642ebe4", + "style": "IPY_MODEL_ff271f40b47a498788c39b774153150a", "tabbable": null, "tooltip": null } }, - "47c2b64028af4c9783ecc7f67f86aa9a": { + "7cf1bcefe6fa48949d2e2248a642ebe4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -833,7 +844,7 @@ "width": null } }, - "4844bdbba9b04f56bc42e25bbdbca74e": { + "8d182b3f098c4561a9fb2663ca08746b": { "model_module": "ipycanvas", "model_module_version": "^0.13", "model_name": "CanvasManagerModel", @@ -847,54 +858,7 @@ "_view_name": null } }, - "6e2797c1af5d43afb7abb8d906112889": { - "model_module": "ipycanvas", - "model_module_version": "^0.13", - "model_name": "RoughCanvasModel", - "state": { - "_canvas_manager": "IPY_MODEL_4844bdbba9b04f56bc42e25bbdbca74e", - "_dom_classes": [], - "_model_module": "ipycanvas", - "_model_module_version": "^0.13", - "_model_name": "RoughCanvasModel", - "_send_client_ready_event": true, - "_view_count": null, - "_view_module": "ipycanvas", - "_view_module_version": "^0.13", - "_view_name": "CanvasView", - "height": 28, - "image_data": null, - "layout": "IPY_MODEL_f4b921933e1942f797e95099977c42df", - "sync_image_data": true, - "tabbable": null, - "tooltip": null, - "width": 28 - } - }, - "8f98ec525f254b2ba716ef5603f00e1a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ButtonModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ButtonModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "Generate PNG", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_47c2b64028af4c9783ecc7f67f86aa9a", - "style": "IPY_MODEL_ac49bdb9ed7d4658bbfac9a664efd0fa", - "tabbable": null, - "tooltip": null - } - }, - "ac49bdb9ed7d4658bbfac9a664efd0fa": { + "9e1993e7b513461bac55cd4b1fcf5a90": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", @@ -916,7 +880,30 @@ "text_decoration": null } }, - "cd185cf741fa46889a9fe191d3ef6d3d": { + "a6d4edc48ab74af9a004a0b7d66dbd77": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c85fb2bb0f49435484a23d795bdbfaf0", + "IPY_MODEL_d46354a5c3db4b72869a11baeb9153d3" + ], + "layout": "IPY_MODEL_3bc9a3d9e39b41b4a0119c31c3568d2b", + "tabbable": null, + "tooltip": null + } + }, + "ae63052964eb4452a512fbc579e0c3b2": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -969,7 +956,31 @@ "width": null } }, - "f4b921933e1942f797e95099977c42df": { + "c85fb2bb0f49435484a23d795bdbfaf0": { + "model_module": "ipycanvas", + "model_module_version": "^0.13", + "model_name": "RoughCanvasModel", + "state": { + "_canvas_manager": "IPY_MODEL_8d182b3f098c4561a9fb2663ca08746b", + "_dom_classes": [], + "_model_module": "ipycanvas", + "_model_module_version": "^0.13", + "_model_name": "RoughCanvasModel", + "_send_client_ready_event": true, + "_view_count": null, + "_view_module": "ipycanvas", + "_view_module_version": "^0.13", + "_view_name": "CanvasView", + "height": 28, + "image_data": null, + "layout": "IPY_MODEL_5fea29daefab4368a478fd02a570f514", + "sync_image_data": true, + "tabbable": null, + "tooltip": null, + "width": 28 + } + }, + "cbde1e32a4ae4f6f9f7b711c70c4094e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1021,6 +1032,51 @@ "visibility": null, "width": null } + }, + "d46354a5c3db4b72869a11baeb9153d3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3a3c5f3c51c242abaa7dbbe034d13617", + "IPY_MODEL_6812b6691b07470bb8ecbe93c0b7838f" + ], + "layout": "IPY_MODEL_cbde1e32a4ae4f6f9f7b711c70c4094e", + "tabbable": null, + "tooltip": null + } + }, + "ff271f40b47a498788c39b774153150a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "button_color": null, + "font_family": null, + "font_size": null, + "font_style": null, + "font_variant": null, + "font_weight": null, + "text_color": null, + "text_decoration": null + } } }, "version_major": 2, diff --git a/source/Tutorial/export_cpp_add_impl.html b/source/Tutorial/export_cpp_add_impl.html new file mode 100644 index 0000000000000000000000000000000000000000..b8d2fbc1ad1fac0ca51b6fc7009c88b012d5cdcf --- /dev/null +++ b/source/Tutorial/export_cpp_add_impl.html @@ -0,0 +1,915 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Add a custom operator to the C++ export — Eclipse Aidge documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> + <link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v=d2d258e8" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=abb81387" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/id.css?v=5eddeb79" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> + <script src="../../_static/copybutton.js?v=f281be69"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'source/Tutorial/export_cpp_add_impl';</script> + <script src="../../_static/js/mermaid.min.js"></script> + <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="TensorRT export" href="export_trt.html" /> + <link rel="prev" title="Quantized model C++ export" href="export_cpp_quant.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="0.6.1" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + <button type="button" class="btn rounded-pill" id="pst-back-to-top"> + <i class="fa-solid fa-arrow-up"></i>Back to top</button> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + + + + + <img src="../../_static/Isotype-aidge.png" class="logo__image only-light" alt=""/> + <img src="../../_static/Isotype-aidge.png" class="logo__image only-dark pst-js-only" alt=""/> + + + <p class="title logo__title">Eclipse Aidge</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> +<li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> +<li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> +<li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> +<li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Add a custom operator to the C++ export</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="Add-a-custom-operator-to-the-C++-export"> +<h1>Add a custom operator to the C++ export<a class="headerlink" href="#Add-a-custom-operator-to-the-C++-export" title="Link to this heading">#</a></h1> +<p>The main objective of this tutorial is to demonstrate the toolchain to <strong>detect unsupported operators</strong> and <strong>add them</strong> in an export module. For this tutorial, we use the CPP export module <code class="docutils literal notranslate"><span class="pre">aidge_export_cpp</span></code> to demonstrate the toolchain.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[1]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># First import some utility methods used in the tutorial:</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span><span class="o">,</span><span class="w"> </span><span class="nn">os</span> +<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s1">'../../..'</span><span class="p">)))</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">tuto_utils</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">ModuleNotFoundError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[1], line 4</span> +<span class="ansi-green-intense-fg ansi-bold"> 2</span> <span class="ansi-bold" style="color: rgb(0,135,0)">import</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">sys</span><span style="color: rgb(98,98,98)">,</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">os</span> +<span class="ansi-green-intense-fg ansi-bold"> 3</span> sys<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>append(os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>abspath(os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>join(<span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)">../../..</span><span style="color: rgb(175,0,0)">'</span>))) +<span class="ansi-green-fg">----> 4</span> <span class="ansi-bold" style="color: rgb(0,135,0)">import</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">tuto_utils</span> + +<span class="ansi-red-fg">ModuleNotFoundError</span>: No module named 'tuto_utils' +</pre></div></div> +</div> +<section id="Import-Aidge"> +<h2>Import Aidge<a class="headerlink" href="#Import-Aidge" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cpu</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_export_cpp</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_onnx</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">requests</span> +</pre></div> +</div> +</div> +</section> +<section id="Load-ONNX-model"> +<h2>Load ONNX model<a class="headerlink" href="#Load-ONNX-model" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">file_url</span> <span class="o">=</span> <span class="s2">"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true"</span> +<span class="n">file_path</span> <span class="o">=</span> <span class="s2">"lenet_mnist.onnx"</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">download_file</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">file_url</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">load_onnx</span><span class="p">(</span><span class="s2">"lenet_mnist.onnx"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Remove Flatten node, useless in the CPP export</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">remove_flatten</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + +<span class="n">digit</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">"digit.npy"</span><span class="p">)</span> + +<span class="c1"># Create Producer Node for the Graph</span> +<span class="c1"># Note: This means the graph will have no input!</span> +<span class="n">input_node</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Producer</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">digit</span><span class="p">),</span> <span class="s2">"input"</span><span class="p">)</span> +<span class="n">input_node</span><span class="o">.</span><span class="n">add_child</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">input_node</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">FileNotFoundError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[5], line 4</span> +<span class="ansi-green-intense-fg ansi-bold"> 1</span> <span style="color: rgb(95,135,135)"># Remove Flatten node, useless in the CPP export</span> +<span class="ansi-green-intense-fg ansi-bold"> 2</span> aidge_core<span style="color: rgb(98,98,98)">.</span>remove_flatten(model) +<span class="ansi-green-fg">----> 4</span> digit <span style="color: rgb(98,98,98)">=</span> <span class="ansi-yellow-bg">np</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">load</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">digit.npy</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 6</span> <span style="color: rgb(95,135,135)"># Create Producer Node for the Graph</span> +<span class="ansi-green-intense-fg ansi-bold"> 7</span> <span style="color: rgb(95,135,135)"># Note: This means the graph will have no input!</span> +<span class="ansi-green-intense-fg ansi-bold"> 8</span> input_node <span style="color: rgb(98,98,98)">=</span> aidge_core<span style="color: rgb(98,98,98)">.</span>Producer(aidge_core<span style="color: rgb(98,98,98)">.</span>Tensor(digit), <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">input</span><span style="color: rgb(175,0,0)">"</span>) + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/numpy/lib/_npyio_impl.py:451</span>, in <span class="ansi-cyan-fg">load</span><span class="ansi-blue-fg">(file, mmap_mode, allow_pickle, fix_imports, encoding, max_header_size)</span> +<span class="ansi-green-intense-fg ansi-bold"> 449</span> own_fid <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">False</span> +<span class="ansi-green-intense-fg ansi-bold"> 450</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: +<span class="ansi-green-fg">--> 451</span> fid <span style="color: rgb(98,98,98)">=</span> stack<span style="color: rgb(98,98,98)">.</span>enter_context(<span class="ansi-yellow-bg" style="color: rgb(0,135,0)">open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">os</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">fspath</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">file</span><span class="ansi-yellow-bg">)</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">rb</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span>) +<span class="ansi-green-intense-fg ansi-bold"> 452</span> own_fid <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">True</span> +<span class="ansi-green-intense-fg ansi-bold"> 454</span> <span style="color: rgb(95,135,135)"># Code to distinguish from NumPy binary files and pickles.</span> + +<span class="ansi-red-fg">FileNotFoundError</span>: [Errno 2] No such file or directory: 'digit.npy' +</pre></div></div> +</div> +</section> +<section id="Replace-ReLU-operators-by-Swish-operators"> +<h2>Replace ReLU operators by Swish operators<a class="headerlink" href="#Replace-ReLU-operators-by-Swish-operators" title="Link to this heading">#</a></h2> +<p>Let’s say you want to replace ReLU with another activation like Switch.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Forward the dimensions in the graph in order to get the size for the beta vector of the Swish</span> +<span class="n">model</span><span class="o">.</span><span class="n">forward_dims</span><span class="p">()</span> + +<span class="c1"># Use GraphMatching to replace ReLU with Swish</span> +<span class="n">matches</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SinglePassGraphMatching</span><span class="p">(</span><span class="n">model</span><span class="p">)</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="s2">"ReLU"</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="s1">'Number of match : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">matches</span><span class="p">))</span> + +<span class="n">switch_id</span> <span class="o">=</span> <span class="mi">0</span> +<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">match</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">matches</span><span class="p">):</span> + <span class="nb">print</span><span class="p">(</span><span class="s1">'Match '</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span> + <span class="n">node_ReLU</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">root_node</span><span class="p">()</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'Replacing '</span><span class="p">,</span> <span class="n">node_ReLU</span><span class="o">.</span><span class="n">type</span><span class="p">(),</span> <span class="s1">' : '</span><span class="p">,</span> <span class="n">node_ReLU</span><span class="o">.</span><span class="n">name</span><span class="p">())</span> + + <span class="c1"># We instanciate Swish as a generic operator</span> + <span class="n">node_swish</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">GenericOperator</span><span class="p">(</span><span class="s2">"Swish"</span><span class="p">,</span> <span class="n">nb_data</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">nb_param</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">nb_out</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"swish_</span><span class="si">{</span><span class="n">switch_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> + <span class="n">node_swish</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">attr</span><span class="o">.</span><span class="n">betas</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.0</span><span class="p">]</span><span class="o">*</span><span class="n">node_ReLU</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">get_input</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">dims</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span> + + <span class="nb">print</span><span class="p">(</span><span class="s1">'Replacing '</span><span class="p">,</span> <span class="n">node_ReLU</span><span class="o">.</span><span class="n">type</span><span class="p">(),</span> <span class="s1">' : '</span><span class="p">,</span> <span class="n">node_ReLU</span><span class="o">.</span><span class="n">name</span><span class="p">(),</span> <span class="s1">' with '</span> <span class="p">,</span> <span class="n">node_swish</span><span class="o">.</span><span class="n">name</span><span class="p">())</span> + <span class="n">aidge_core</span><span class="o">.</span><span class="n">GraphView</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">node_ReLU</span><span class="p">]),</span> <span class="nb">set</span><span class="p">([</span><span class="n">node_swish</span><span class="p">]))</span> + + <span class="n">switch_id</span><span class="o">+=</span><span class="mi">1</span> +</pre></div> +</div> +</div> +<div class="nboutput docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Number of match : 4 +Match 0 +Replacing ReLU : data_1_Relu +</pre></div></div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">IndexError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[6], line 17</span> +<span class="ansi-green-intense-fg ansi-bold"> 15</span> <span style="color: rgb(95,135,135)"># We instanciate Swish as a generic operator</span> +<span class="ansi-green-intense-fg ansi-bold"> 16</span> node_swish <span style="color: rgb(98,98,98)">=</span> aidge_core<span style="color: rgb(98,98,98)">.</span>GenericOperator(<span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">Swish</span><span style="color: rgb(175,0,0)">"</span>, nb_data<span style="color: rgb(98,98,98)">=</span><span style="color: rgb(98,98,98)">1</span>, nb_param<span style="color: rgb(98,98,98)">=</span><span style="color: rgb(98,98,98)">0</span>, nb_out<span style="color: rgb(98,98,98)">=</span><span style="color: rgb(98,98,98)">1</span>, name<span style="color: rgb(98,98,98)">=</span><span style="color: rgb(175,0,0)">f</span><span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">swish_</span><span class="ansi-bold" style="color: rgb(175,95,135)">{</span>switch_id<span class="ansi-bold" style="color: rgb(175,95,135)">}</span><span style="color: rgb(175,0,0)">"</span>) +<span class="ansi-green-fg">---> 17</span> node_swish<span style="color: rgb(98,98,98)">.</span>get_operator()<span style="color: rgb(98,98,98)">.</span>attr<span style="color: rgb(98,98,98)">.</span>betas <span style="color: rgb(98,98,98)">=</span> [<span style="color: rgb(98,98,98)">1.0</span>]<span style="color: rgb(98,98,98)">*</span><span class="ansi-yellow-bg">node_ReLU</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">get_operator</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">)</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">get_input</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">0</span><span class="ansi-yellow-bg">)</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">dims</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">)</span><span class="ansi-yellow-bg">[</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">1</span><span class="ansi-yellow-bg">]</span> +<span class="ansi-green-intense-fg ansi-bold"> 19</span> <span style="color: rgb(0,135,0)">print</span>(<span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)">Replacing </span><span style="color: rgb(175,0,0)">'</span>, node_ReLU<span style="color: rgb(98,98,98)">.</span>type(), <span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)"> : </span><span style="color: rgb(175,0,0)">'</span>, node_ReLU<span style="color: rgb(98,98,98)">.</span>name(), <span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)"> with </span><span style="color: rgb(175,0,0)">'</span> , node_swish<span style="color: rgb(98,98,98)">.</span>name()) +<span class="ansi-green-intense-fg ansi-bold"> 20</span> aidge_core<span style="color: rgb(98,98,98)">.</span>GraphView<span style="color: rgb(98,98,98)">.</span>replace(<span style="color: rgb(0,135,0)">set</span>([node_ReLU]), <span style="color: rgb(0,135,0)">set</span>([node_swish])) + +<span class="ansi-red-fg">IndexError</span>: list index out of range +</pre></div></div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="s2">"myModel"</span><span class="p">)</span> +<span class="n">tuto_utils</span><span class="o">.</span><span class="n">visualize_mmd</span><span class="p">(</span><span class="s2">"myModel.mmd"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">NameError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[7], line 2</span> +<span class="ansi-green-intense-fg ansi-bold"> 1</span> model<span style="color: rgb(98,98,98)">.</span>save(<span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">myModel</span><span style="color: rgb(175,0,0)">"</span>) +<span class="ansi-green-fg">----> 2</span> <span class="ansi-yellow-bg">tuto_utils</span><span style="color: rgb(98,98,98)">.</span>visualize_mmd(<span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">myModel.mmd</span><span style="color: rgb(175,0,0)">"</span>) + +<span class="ansi-red-fg">NameError</span>: name 'tuto_utils' is not defined +</pre></div></div> +</div> +</section> +<section id="Schedule-the-graph"> +<h2>Schedule the graph<a class="headerlink" href="#Schedule-the-graph" title="Link to this heading">#</a></h2> +<p>Add the function to specify how Swish activation transforms the dimensions. This <code class="docutils literal notranslate"><span class="pre">forward_dims</span></code> function is required to perform a sequential scheduling.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">GenericImpl</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">OperatorImpl</span><span class="p">):</span> <span class="c1"># Inherit OperatorImpl to interface with Aidge !</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Operator</span><span class="p">):</span> + <span class="n">aidge_core</span><span class="o">.</span><span class="n">OperatorImpl</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">,</span> <span class="s1">'cpu'</span><span class="p">)</span> + <span class="c1"># no need to define forward() function in python as we do not intend to run a scheduler on the model</span> + +<span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">get_nodes</span><span class="p">():</span> + <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"Swish"</span><span class="p">:</span> + <span class="n">node</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">set_forward_dims</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">)</span> <span class="c1"># to propagate dimensions in the model</span> + +<span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">get_nodes</span><span class="p">():</span> + <span class="n">node</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">set_impl</span><span class="p">(</span><span class="n">GenericImpl</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()))</span> <span class="c1"># Setting implementation</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">scheduler</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SequentialScheduler</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">dims</span><span class="o">=</span><span class="p">[[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">]])</span> +<span class="n">scheduler</span><span class="o">.</span><span class="n">generate_scheduling</span><span class="p">()</span> +<span class="n">s</span> <span class="o">=</span> <span class="n">scheduler</span><span class="o">.</span><span class="n">get_sequential_static_scheduling</span><span class="p">()</span> +</pre></div> +</div> +</div> +</section> +<section id="Add-Swish-to-the-CPP-export-support"> +<h2>Add Swish to the CPP export support<a class="headerlink" href="#Add-Swish-to-the-CPP-export-support" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Note: we register a GenericOperator so we need to use ``register_generic``.</span> +<span class="c1"># For registering an existing operator use ``register``</span> +<span class="c1"># For registering a MetaOperator use ``register_metaop``</span> +<span class="nd">@aidge_export_cpp</span><span class="o">.</span><span class="n">ExportLibCpp</span><span class="o">.</span><span class="n">register_generic</span><span class="p">(</span><span class="s2">"Swish"</span><span class="p">,</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">ImplSpec</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">IOSpec</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)))</span> +<span class="k">class</span><span class="w"> </span><span class="nc">SwishCPP</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">ExportNodeCpp</span><span class="p">):</span> + <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">mem_info</span><span class="p">):</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">mem_info</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">config_template</span> <span class="o">=</span> <span class="s2">"swish_export_files/swish_config.jinja"</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">forward_template</span> <span class="o">=</span> <span class="s2">"swish_export_files/swish_forward.jinja"</span> + <span class="bp">self</span><span class="o">.</span><span class="n">include_list</span> <span class="o">=</span> <span class="p">[]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">kernels_to_copy</span> <span class="o">=</span> <span class="p">[</span> + <span class="s2">"swish_export_files/swish_kernel.hpp"</span><span class="p">,</span> + <span class="p">]</span> +<br/></pre></div> +</div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">scheduler_export</span><span class="p">(</span> + <span class="n">scheduler</span><span class="p">,</span> + <span class="s2">"myexport"</span><span class="p">,</span> + <span class="n">aidge_export_cpp</span><span class="o">.</span><span class="n">ExportLibCpp</span><span class="p">,</span> + <span class="n">memory_manager</span><span class="o">=</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">mem_info</span><span class="o">.</span><span class="n">generate_optimized_memory_info</span><span class="p">,</span> + <span class="n">memory_manager_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"stats_folder"</span><span class="p">:</span> <span class="s2">"myexport/stats"</span><span class="p">,</span> <span class="s2">"wrapping"</span><span class="p">:</span> <span class="kc">False</span> <span class="p">}</span> +<span class="p">)</span> + +<span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">generate_main_cpp</span><span class="p">(</span><span class="s2">"myexport"</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +gen : myexport/data/data_0_Conv_input_0.h +</pre></div></div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">RuntimeError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[11], line 9</span> +<span class="ansi-green-intense-fg ansi-bold"> 1</span> aidge_core<span style="color: rgb(98,98,98)">.</span>export_utils<span style="color: rgb(98,98,98)">.</span>scheduler_export( +<span class="ansi-green-intense-fg ansi-bold"> 2</span> scheduler, +<span class="ansi-green-intense-fg ansi-bold"> 3</span> <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">myexport</span><span style="color: rgb(175,0,0)">"</span>, +<span class="ansi-green-fg"> (...)</span> +<span class="ansi-green-intense-fg ansi-bold"> 6</span> memory_manager_args<span style="color: rgb(98,98,98)">=</span>{<span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">stats_folder</span><span style="color: rgb(175,0,0)">"</span>: <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">myexport/stats</span><span style="color: rgb(175,0,0)">"</span>, <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">wrapping</span><span style="color: rgb(175,0,0)">"</span>: <span class="ansi-bold" style="color: rgb(0,135,0)">False</span> } +<span class="ansi-green-intense-fg ansi-bold"> 7</span> ) +<span class="ansi-green-fg">----> 9</span> <span class="ansi-yellow-bg">aidge_core</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">export_utils</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">generate_main_cpp</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">myexport</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">model</span><span class="ansi-yellow-bg">)</span> + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_core/export_utils/generate_main.py:54</span>, in <span class="ansi-cyan-fg">generate_main_cpp</span><span class="ansi-blue-fg">(export_folder, graph_view, inputs_tensor, labels)</span> +<span class="ansi-green-intense-fg ansi-bold"> 52</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: +<span class="ansi-green-intense-fg ansi-bold"> 53</span> inputs_name<span style="color: rgb(98,98,98)">.</span>append(in_name) +<span class="ansi-green-fg">---> 54</span> <span class="ansi-yellow-bg">generate_input_file</span><span class="ansi-yellow-bg">(</span> +<span class="ansi-green-intense-fg ansi-bold"> 55</span> <span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">export_folder</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">=</span><span class="ansi-yellow-bg" style="color: rgb(0,135,0)">str</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">Path</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">export_folder</span><span class="ansi-yellow-bg">)</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">/</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">data</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span> +<span class="ansi-green-intense-fg ansi-bold"> 56</span> <span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">array_name</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">=</span><span class="ansi-yellow-bg">in_name</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span> +<span class="ansi-green-intense-fg ansi-bold"> 57</span> <span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">tensor</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">=</span><span class="ansi-yellow-bg">inputs_tensor</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 59</span> <span style="color: rgb(95,135,135)"># Generate labels file</span> +<span class="ansi-green-intense-fg ansi-bold"> 60</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> labels <span class="ansi-bold" style="color: rgb(175,0,255)">is</span> <span class="ansi-bold" style="color: rgb(175,0,255)">not</span> <span class="ansi-bold" style="color: rgb(0,135,0)">None</span>: + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_core/export_utils/tensor_export.py:38</span>, in <span class="ansi-cyan-fg">generate_input_file</span><span class="ansi-blue-fg">(export_folder, array_name, tensor)</span> +<span class="ansi-green-intense-fg ansi-bold"> 30</span> <span style="color: rgb(0,135,0)">print</span>(<span style="color: rgb(175,0,0)">f</span><span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">gen : </span><span class="ansi-bold" style="color: rgb(175,95,135)">{</span>export_folder<span class="ansi-bold" style="color: rgb(175,95,135)">}</span><span style="color: rgb(175,0,0)">/</span><span class="ansi-bold" style="color: rgb(175,95,135)">{</span>array_name<span class="ansi-bold" style="color: rgb(175,95,135)">}</span><span style="color: rgb(175,0,0)">.h</span><span style="color: rgb(175,0,0)">"</span>) +<span class="ansi-green-intense-fg ansi-bold"> 31</span> ROOT <span style="color: rgb(98,98,98)">=</span> Path(<span style="color: rgb(0,0,135)">__file__</span>)<span style="color: rgb(98,98,98)">.</span>resolve()<span style="color: rgb(98,98,98)">.</span>parents[<span style="color: rgb(98,98,98)">0</span>] +<span class="ansi-green-intense-fg ansi-bold"> 32</span> generate_file( +<span class="ansi-green-intense-fg ansi-bold"> 33</span> file_path<span style="color: rgb(98,98,98)">=</span><span style="color: rgb(175,0,0)">f</span><span style="color: rgb(175,0,0)">"</span><span class="ansi-bold" style="color: rgb(175,95,135)">{</span>export_folder<span class="ansi-bold" style="color: rgb(175,95,135)">}</span><span style="color: rgb(175,0,0)">/</span><span class="ansi-bold" style="color: rgb(175,95,135)">{</span>array_name<span class="ansi-bold" style="color: rgb(175,95,135)">}</span><span style="color: rgb(175,0,0)">.h</span><span style="color: rgb(175,0,0)">"</span>, +<span class="ansi-green-intense-fg ansi-bold"> 34</span> template_path<span style="color: rgb(98,98,98)">=</span><span style="color: rgb(0,135,0)">str</span>(ROOT <span style="color: rgb(98,98,98)">/</span> <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">templates</span><span style="color: rgb(175,0,0)">"</span> <span style="color: rgb(98,98,98)">/</span> <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">c_data.jinja</span><span style="color: rgb(175,0,0)">"</span>), +<span class="ansi-green-intense-fg ansi-bold"> 35</span> dims <span style="color: rgb(98,98,98)">=</span> tensor<span style="color: rgb(98,98,98)">.</span>dims(), +<span class="ansi-green-intense-fg ansi-bold"> 36</span> data_t <span style="color: rgb(98,98,98)">=</span> aidge2c(tensor<span style="color: rgb(98,98,98)">.</span>dtype()), +<span class="ansi-green-intense-fg ansi-bold"> 37</span> name <span style="color: rgb(98,98,98)">=</span> array_name, +<span class="ansi-green-fg">---> 38</span> values <span style="color: rgb(98,98,98)">=</span> <span class="ansi-yellow-bg" style="color: rgb(0,135,0)">list</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">tensor</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 39</span> ) + +<span class="ansi-red-fg">RuntimeError</span>: Tensor::get<>(0): can only be used for backends providing a valid host pointer. +</pre></div></div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[12]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span>tree<span class="w"> </span>myexport +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +/usr/bin/sh: 1: tree: not found +</pre></div></div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[13]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span><span class="nb">cd</span><span class="w"> </span>myexport<span class="w"> </span><span class="o">&&</span><span class="w"> </span>make +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/myexport' +g++ -O2 -Wall -Wextra -MMD -fopenmp -I. -I./dnn -I./dnn/include -I./dnn/layers -I./dnn/parameters -c dnn/src/forward.cpp -o build/./dnn/src/forward.o +In file included from <span class="ansi-bold">./dnn/include/layers/data_11_Gemm.h:3</span>, + from <span class="ansi-bold">dnn/src/forward.cpp:17</span>: +<span class="ansi-bold">./dnn/include/network/rescaling_utils.hpp:11:16:</span> <span class="ansi-magenta-intense-fg ansi-bold">warning: </span>‘<span class="ansi-bold">int64_t smlal(int32_t, int32_t, uint32_t, uint32_t)</span>’ defined but not used [<span class="ansi-magenta-intense-fg ansi-bold">]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-function-Wunused-function]8;;</span>] + 11 | static int64_t <span class="ansi-magenta-intense-fg ansi-bold">smlal</span>(int32_t lhs, int32_t rhs, + | <span class="ansi-magenta-intense-fg ansi-bold">^~~~~</span> +g++ build/./dnn/src/forward.o -fopenmp -o bin/run_export +/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o: in function `_start': +(.text+0x1b): undefined reference to `main' +collect2: error: ld returned 1 exit status +make[1]: *** [Makefile:19: build] Error 1 +make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/myexport' +</pre></div></div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[14]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span>./myexport/bin/run_export +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +/usr/bin/sh: 1: ./myexport/bin/run_export: not found +</pre></div></div> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="export_cpp_quant.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Quantized model C++ export</p> + </div> + </a> + <a class="right-next" + href="export_trt.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">TensorRT export</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Import-Aidge">Import Aidge</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Load-ONNX-model">Load ONNX model</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Replace-ReLU-operators-by-Swish-operators">Replace ReLU operators by Swish operators</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Schedule-the-graph">Schedule the graph</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Add-Swish-to-the-CPP-export-support">Add Swish to the CPP export support</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/source/Tutorial/export_cpp_add_impl.nblink.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright 2023, CEA LIST. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/source/Tutorial/export_cpp_add_impl.ipynb b/source/Tutorial/export_cpp_add_impl.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..8b6d7cb321973d367d37baf86506453c9fcb966d --- /dev/null +++ b/source/Tutorial/export_cpp_add_impl.ipynb @@ -0,0 +1,518 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Add a custom operator to the C++ export" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The main objective of this tutorial is to demonstrate the toolchain to **detect unsupported operators** and **add them** in an export module. <br>\n", + "For this tutorial, we use the CPP export module ``aidge_export_cpp`` to demonstrate the toolchain." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:17.658957Z", + "iopub.status.busy": "2025-05-19T10:05:17.658811Z", + "iopub.status.idle": "2025-05-19T10:05:17.788299Z", + "shell.execute_reply": "2025-05-19T10:05:17.788030Z" + } + }, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'tuto_utils'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msys\u001b[39;00m\u001b[38;5;241m,\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mos\u001b[39;00m\n\u001b[1;32m 3\u001b[0m sys\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mappend(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mabspath(os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m../../..\u001b[39m\u001b[38;5;124m'\u001b[39m)))\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtuto_utils\u001b[39;00m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'tuto_utils'" + ] + } + ], + "source": [ + "# First import some utility methods used in the tutorial:\n", + "import sys, os\n", + "sys.path.append(os.path.abspath(os.path.join('../../..')))\n", + "import tuto_utils" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import Aidge\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:17.790028Z", + "iopub.status.busy": "2025-05-19T10:05:17.789892Z", + "iopub.status.idle": "2025-05-19T10:05:18.091112Z", + "shell.execute_reply": "2025-05-19T10:05:18.090746Z" + } + }, + "outputs": [], + "source": [ + "import aidge_core\n", + "import aidge_backend_cpu\n", + "import aidge_export_cpp\n", + "import aidge_onnx\n", + "import numpy as np\n", + "import os\n", + "import requests" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load ONNX model\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.092833Z", + "iopub.status.busy": "2025-05-19T10:05:18.092685Z", + "iopub.status.idle": "2025-05-19T10:05:18.094561Z", + "shell.execute_reply": "2025-05-19T10:05:18.094340Z" + } + }, + "outputs": [], + "source": [ + "file_url = \"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true\"\n", + "file_path = \"lenet_mnist.onnx\"\n", + "aidge_core.utils.download_file(file_path, file_url)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.095505Z", + "iopub.status.busy": "2025-05-19T10:05:18.095314Z", + "iopub.status.idle": "2025-05-19T10:05:18.105347Z", + "shell.execute_reply": "2025-05-19T10:05:18.105099Z" + } + }, + "outputs": [], + "source": [ + "model = aidge_onnx.load_onnx(\"lenet_mnist.onnx\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.106654Z", + "iopub.status.busy": "2025-05-19T10:05:18.106533Z", + "iopub.status.idle": "2025-05-19T10:05:18.205334Z", + "shell.execute_reply": "2025-05-19T10:05:18.204801Z" + } + }, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'digit.npy'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Remove Flatten node, useless in the CPP export\u001b[39;00m\n\u001b[1;32m 2\u001b[0m aidge_core\u001b[38;5;241m.\u001b[39mremove_flatten(model)\n\u001b[0;32m----> 4\u001b[0m digit \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdigit.npy\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# Create Producer Node for the Graph\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# Note: This means the graph will have no input!\u001b[39;00m\n\u001b[1;32m 8\u001b[0m input_node \u001b[38;5;241m=\u001b[39m aidge_core\u001b[38;5;241m.\u001b[39mProducer(aidge_core\u001b[38;5;241m.\u001b[39mTensor(digit), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minput\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/numpy/lib/_npyio_impl.py:451\u001b[0m, in \u001b[0;36mload\u001b[0;34m(file, mmap_mode, allow_pickle, fix_imports, encoding, max_header_size)\u001b[0m\n\u001b[1;32m 449\u001b[0m own_fid \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 450\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 451\u001b[0m fid \u001b[38;5;241m=\u001b[39m stack\u001b[38;5;241m.\u001b[39menter_context(\u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfspath\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 452\u001b[0m own_fid \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 454\u001b[0m \u001b[38;5;66;03m# Code to distinguish from NumPy binary files and pickles.\u001b[39;00m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'digit.npy'" + ] + } + ], + "source": [ + "# Remove Flatten node, useless in the CPP export\n", + "aidge_core.remove_flatten(model)\n", + "\n", + "digit = np.load(\"digit.npy\")\n", + "\n", + "# Create Producer Node for the Graph\n", + "# Note: This means the graph will have no input!\n", + "input_node = aidge_core.Producer(aidge_core.Tensor(digit), \"input\")\n", + "input_node.add_child(model)\n", + "model.add(input_node)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Replace ReLU operators by Swish operators\n", + "\n", + "Let's say you want to replace ReLU with another activation like Switch." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.207227Z", + "iopub.status.busy": "2025-05-19T10:05:18.207067Z", + "iopub.status.idle": "2025-05-19T10:05:18.220248Z", + "shell.execute_reply": "2025-05-19T10:05:18.219964Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of match : 4\n", + "Match 0\n", + "Replacing ReLU : data_1_Relu\n" + ] + }, + { + "ename": "IndexError", + "evalue": "list index out of range", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[6], line 17\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# We instanciate Swish as a generic operator\u001b[39;00m\n\u001b[1;32m 16\u001b[0m node_swish \u001b[38;5;241m=\u001b[39m aidge_core\u001b[38;5;241m.\u001b[39mGenericOperator(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSwish\u001b[39m\u001b[38;5;124m\"\u001b[39m, nb_data\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, nb_param\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m, nb_out\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mswish_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mswitch_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 17\u001b[0m node_swish\u001b[38;5;241m.\u001b[39mget_operator()\u001b[38;5;241m.\u001b[39mattr\u001b[38;5;241m.\u001b[39mbetas \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m1.0\u001b[39m]\u001b[38;5;241m*\u001b[39m\u001b[43mnode_ReLU\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_operator\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_input\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdims\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mReplacing \u001b[39m\u001b[38;5;124m'\u001b[39m, node_ReLU\u001b[38;5;241m.\u001b[39mtype(), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m : \u001b[39m\u001b[38;5;124m'\u001b[39m, node_ReLU\u001b[38;5;241m.\u001b[39mname(), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m with \u001b[39m\u001b[38;5;124m'\u001b[39m , node_swish\u001b[38;5;241m.\u001b[39mname())\n\u001b[1;32m 20\u001b[0m aidge_core\u001b[38;5;241m.\u001b[39mGraphView\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;28mset\u001b[39m([node_ReLU]), \u001b[38;5;28mset\u001b[39m([node_swish]))\n", + "\u001b[0;31mIndexError\u001b[0m: list index out of range" + ] + } + ], + "source": [ + "# Forward the dimensions in the graph in order to get the size for the beta vector of the Swish\n", + "model.forward_dims()\n", + "\n", + "# Use GraphMatching to replace ReLU with Swish\n", + "matches = aidge_core.SinglePassGraphMatching(model).match(\"ReLU\")\n", + "print('Number of match : ', len(matches))\n", + "\n", + "switch_id = 0\n", + "for i, match in enumerate(matches):\n", + " print('Match ', i)\n", + " node_ReLU = match.graph.root_node()\n", + "\n", + " print('Replacing ', node_ReLU.type(), ' : ', node_ReLU.name())\n", + "\n", + " # We instanciate Swish as a generic operator\n", + " node_swish = aidge_core.GenericOperator(\"Swish\", nb_data=1, nb_param=0, nb_out=1, name=f\"swish_{switch_id}\")\n", + " node_swish.get_operator().attr.betas = [1.0]*node_ReLU.get_operator().get_input(0).dims()[1]\n", + "\n", + " print('Replacing ', node_ReLU.type(), ' : ', node_ReLU.name(), ' with ' , node_swish.name())\n", + " aidge_core.GraphView.replace(set([node_ReLU]), set([node_swish]))\n", + "\n", + " switch_id+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.221433Z", + "iopub.status.busy": "2025-05-19T10:05:18.221195Z", + "iopub.status.idle": "2025-05-19T10:05:18.229024Z", + "shell.execute_reply": "2025-05-19T10:05:18.228634Z" + } + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'tuto_utils' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[7], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m model\u001b[38;5;241m.\u001b[39msave(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmyModel\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 2\u001b[0m \u001b[43mtuto_utils\u001b[49m\u001b[38;5;241m.\u001b[39mvisualize_mmd(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmyModel.mmd\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[0;31mNameError\u001b[0m: name 'tuto_utils' is not defined" + ] + } + ], + "source": [ + "model.save(\"myModel\")\n", + "tuto_utils.visualize_mmd(\"myModel.mmd\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Schedule the graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add the function to specify how Swish activation transforms the dimensions. <br>\n", + "This `forward_dims` function is required to perform a sequential scheduling." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.230866Z", + "iopub.status.busy": "2025-05-19T10:05:18.230767Z", + "iopub.status.idle": "2025-05-19T10:05:18.235524Z", + "shell.execute_reply": "2025-05-19T10:05:18.235270Z" + } + }, + "outputs": [], + "source": [ + "class GenericImpl(aidge_core.OperatorImpl): # Inherit OperatorImpl to interface with Aidge !\n", + " def __init__(self, op: aidge_core.Operator):\n", + " aidge_core.OperatorImpl.__init__(self, op, 'cpu')\n", + " # no need to define forward() function in python as we do not intend to run a scheduler on the model\n", + "\n", + "for node in model.get_nodes():\n", + " if node.type() == \"Swish\":\n", + " node.get_operator().set_forward_dims(lambda x: x) # to propagate dimensions in the model\n", + "\n", + "for node in model.get_nodes():\n", + " node.get_operator().set_impl(GenericImpl(node.get_operator())) # Setting implementation" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.236781Z", + "iopub.status.busy": "2025-05-19T10:05:18.236564Z", + "iopub.status.idle": "2025-05-19T10:05:18.238932Z", + "shell.execute_reply": "2025-05-19T10:05:18.238689Z" + } + }, + "outputs": [], + "source": [ + "scheduler = aidge_core.SequentialScheduler(model)\n", + "model.compile(\"cpu\", aidge_core.dtype.float32, dims=[[1, 1, 28, 28]])\n", + "scheduler.generate_scheduling()\n", + "s = scheduler.get_sequential_static_scheduling()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add Swish to the CPP export support" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.240175Z", + "iopub.status.busy": "2025-05-19T10:05:18.239992Z", + "iopub.status.idle": "2025-05-19T10:05:18.242568Z", + "shell.execute_reply": "2025-05-19T10:05:18.242282Z" + } + }, + "outputs": [], + "source": [ + "# Note: we register a GenericOperator so we need to use ``register_generic``.\n", + "# For registering an existing operator use ``register``\n", + "# For registering a MetaOperator use ``register_metaop``\n", + "@aidge_export_cpp.ExportLibCpp.register_generic(\"Swish\", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32)))\n", + "class SwishCPP(aidge_core.export_utils.ExportNodeCpp):\n", + " def __init__(self, node, mem_info):\n", + " super().__init__(node, mem_info)\n", + " self.config_template = \"swish_export_files/swish_config.jinja\"\n", + "\n", + " self.forward_template = \"swish_export_files/swish_forward.jinja\"\n", + " self.include_list = []\n", + " self.kernels_to_copy = [\n", + " \"swish_export_files/swish_kernel.hpp\",\n", + " ]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.243618Z", + "iopub.status.busy": "2025-05-19T10:05:18.243493Z", + "iopub.status.idle": "2025-05-19T10:05:18.610026Z", + "shell.execute_reply": "2025-05-19T10:05:18.609717Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gen : myexport/data/data_0_Conv_input_0.h\n" + ] + }, + { + "ename": "RuntimeError", + "evalue": "Tensor::get<>(0): can only be used for backends providing a valid host pointer.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[11], line 9\u001b[0m\n\u001b[1;32m 1\u001b[0m aidge_core\u001b[38;5;241m.\u001b[39mexport_utils\u001b[38;5;241m.\u001b[39mscheduler_export(\n\u001b[1;32m 2\u001b[0m scheduler,\n\u001b[1;32m 3\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmyexport\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 6\u001b[0m memory_manager_args\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstats_folder\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmyexport/stats\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwrapping\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;28;01mFalse\u001b[39;00m }\n\u001b[1;32m 7\u001b[0m )\n\u001b[0;32m----> 9\u001b[0m \u001b[43maidge_core\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexport_utils\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgenerate_main_cpp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmyexport\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_core/export_utils/generate_main.py:54\u001b[0m, in \u001b[0;36mgenerate_main_cpp\u001b[0;34m(export_folder, graph_view, inputs_tensor, labels)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m inputs_name\u001b[38;5;241m.\u001b[39mappend(in_name)\n\u001b[0;32m---> 54\u001b[0m \u001b[43mgenerate_input_file\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[43m \u001b[49m\u001b[43mexport_folder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mPath\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexport_folder\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 56\u001b[0m \u001b[43m \u001b[49m\u001b[43marray_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43min_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 57\u001b[0m \u001b[43m \u001b[49m\u001b[43mtensor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_tensor\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;66;03m# Generate labels file\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m labels \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_core/export_utils/tensor_export.py:38\u001b[0m, in \u001b[0;36mgenerate_input_file\u001b[0;34m(export_folder, array_name, tensor)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgen : \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexport_folder\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00marray_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.h\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 31\u001b[0m ROOT \u001b[38;5;241m=\u001b[39m Path(\u001b[38;5;18m__file__\u001b[39m)\u001b[38;5;241m.\u001b[39mresolve()\u001b[38;5;241m.\u001b[39mparents[\u001b[38;5;241m0\u001b[39m]\n\u001b[1;32m 32\u001b[0m generate_file(\n\u001b[1;32m 33\u001b[0m file_path\u001b[38;5;241m=\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mexport_folder\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00marray_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.h\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 34\u001b[0m template_path\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mstr\u001b[39m(ROOT \u001b[38;5;241m/\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtemplates\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m/\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mc_data.jinja\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[1;32m 35\u001b[0m dims \u001b[38;5;241m=\u001b[39m tensor\u001b[38;5;241m.\u001b[39mdims(),\n\u001b[1;32m 36\u001b[0m data_t \u001b[38;5;241m=\u001b[39m aidge2c(tensor\u001b[38;5;241m.\u001b[39mdtype()),\n\u001b[1;32m 37\u001b[0m name \u001b[38;5;241m=\u001b[39m array_name,\n\u001b[0;32m---> 38\u001b[0m values \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtensor\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 39\u001b[0m )\n", + "\u001b[0;31mRuntimeError\u001b[0m: Tensor::get<>(0): can only be used for backends providing a valid host pointer." + ] + } + ], + "source": [ + "aidge_core.export_utils.scheduler_export(\n", + " scheduler,\n", + " \"myexport\",\n", + " aidge_export_cpp.ExportLibCpp,\n", + " memory_manager=aidge_core.mem_info.generate_optimized_memory_info,\n", + " memory_manager_args={\"stats_folder\": \"myexport/stats\", \"wrapping\": False }\n", + ")\n", + "\n", + "aidge_core.export_utils.generate_main_cpp(\"myexport\", model)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.611094Z", + "iopub.status.busy": "2025-05-19T10:05:18.610964Z", + "iopub.status.idle": "2025-05-19T10:05:18.727283Z", + "shell.execute_reply": "2025-05-19T10:05:18.726732Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/usr/bin/sh: 1: tree: not found\r\n" + ] + } + ], + "source": [ + "!tree myexport" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:18.728827Z", + "iopub.status.busy": "2025-05-19T10:05:18.728635Z", + "iopub.status.idle": "2025-05-19T10:05:19.251140Z", + "shell.execute_reply": "2025-05-19T10:05:19.250690Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/myexport'\r\n", + "g++ -O2 -Wall -Wextra -MMD -fopenmp -I. -I./dnn -I./dnn/include -I./dnn/layers -I./dnn/parameters -c dnn/src/forward.cpp -o build/./dnn/src/forward.o \r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "In file included from \u001b[01m\u001b[K./dnn/include/layers/data_11_Gemm.h:3\u001b[m\u001b[K,\r\n", + " from \u001b[01m\u001b[Kdnn/src/forward.cpp:17\u001b[m\u001b[K:\r\n", + "\u001b[01m\u001b[K./dnn/include/network/rescaling_utils.hpp:11:16:\u001b[m\u001b[K \u001b[01;35m\u001b[Kwarning: \u001b[m\u001b[K‘\u001b[01m\u001b[Kint64_t smlal(int32_t, int32_t, uint32_t, uint32_t)\u001b[m\u001b[K’ defined but not used [\u001b[01;35m\u001b[K\u001b]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-function\u0007-Wunused-function\u001b]8;;\u0007\u001b[m\u001b[K]\r\n", + " 11 | static int64_t \u001b[01;35m\u001b[Ksmlal\u001b[m\u001b[K(int32_t lhs, int32_t rhs,\r\n", + " | \u001b[01;35m\u001b[K^~~~~\u001b[m\u001b[K\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g++ build/./dnn/src/forward.o -fopenmp -o bin/run_export\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':\r\n", + "(.text+0x1b): undefined reference to `main'\r\n", + "collect2: error: ld returned 1 exit status\r\n", + "make[1]: *** [Makefile:19: build] Error 1\r\n", + "make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/myexport'\r\n" + ] + } + ], + "source": [ + "!cd myexport && make" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:19.252608Z", + "iopub.status.busy": "2025-05-19T10:05:19.252455Z", + "iopub.status.idle": "2025-05-19T10:05:19.364790Z", + "shell.execute_reply": "2025-05-19T10:05:19.364355Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/usr/bin/sh: 1: ./myexport/bin/run_export: not found\r\n" + ] + } + ], + "source": [ + "!./myexport/bin/run_export" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "aidge", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/source/Tutorial/export_cpp_quant.html b/source/Tutorial/export_cpp_quant.html new file mode 100644 index 0000000000000000000000000000000000000000..f7bdb907d35555bcf07e98cd81ec75703acd4c19 --- /dev/null +++ b/source/Tutorial/export_cpp_quant.html @@ -0,0 +1,827 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Quantized model C++ export — Eclipse Aidge documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> + <link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v=d2d258e8" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=abb81387" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/id.css?v=5eddeb79" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> + <script src="../../_static/copybutton.js?v=f281be69"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'source/Tutorial/export_cpp_quant';</script> + <script src="../../_static/js/mermaid.min.js"></script> + <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="Add a custom operator to the C++ export" href="export_cpp_add_impl.html" /> + <link rel="prev" title="Export 101" href="export_cpp.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="0.6.1" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + <button type="button" class="btn rounded-pill" id="pst-back-to-top"> + <i class="fa-solid fa-arrow-up"></i>Back to top</button> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + + + + + <img src="../../_static/Isotype-aidge.png" class="logo__image only-light" alt=""/> + <img src="../../_static/Isotype-aidge.png" class="logo__image only-dark pst-js-only" alt=""/> + + + <p class="title logo__title">Eclipse Aidge</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> +<li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> +<li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> +<li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> +<li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Quantized model C++ export</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="Quantized-model-C++-export"> +<h1>Quantized model C++ export<a class="headerlink" href="#Quantized-model-C++-export" title="Link to this heading">#</a></h1> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">%</span><span class="k">pip</span> install requests numpy ipywidgets ipycanvas +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Aidge modules imports</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cpu</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_onnx</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_export_cpp</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_quantization</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">aidge_export_cpp.export_utils</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> + <span class="n">cpp_fuse_to_metaops</span><span class="p">,</span> + <span class="n">set_nodes_names</span><span class="p">,</span> + <span class="n">set_nodes_datatypes</span><span class="p">,</span> + <span class="n">exclude_unwanted_producers</span><span class="p">)</span> + +<span class="kn">from</span><span class="w"> </span><span class="nn">aidge_core.export_utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">remove_optional_inputs</span> +<span class="c1"># For database</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">torchvision</span><span class="w"> </span><span class="kn">import</span> <span class="n">transforms</span><span class="p">,</span> <span class="n">datasets</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Global variables</span> +<span class="n">USE_CUDA</span> <span class="o">=</span> <span class="kc">False</span> +<span class="k">if</span> <span class="n">USE_CUDA</span><span class="p">:</span> + <span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cuda</span> +<span class="n">BACKEND</span> <span class="o">=</span> <span class="s2">"cuda"</span> <span class="k">if</span> <span class="n">USE_CUDA</span> <span class="k">else</span> <span class="s2">"cpu"</span> +<span class="n">MODEL_NAME</span> <span class="o">=</span> <span class="s2">"lenet"</span> +<span class="n">EXPORT_FOLDER</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">MODEL_NAME</span><span class="si">}</span><span class="s2">_export_int8"</span> + +<span class="c1">## PTQ Variables</span> +<span class="n">NB_TEST</span> <span class="o">=</span> <span class="mi">10</span> +<span class="n">NB_CALIB</span> <span class="o">=</span> <span class="mi">20</span> +<span class="n">NB_BITS</span> <span class="o">=</span> <span class="mi">8</span> +<span class="n">TARGET_TYPE</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">int32</span> +<span class="n">OPTIM_SIGN</span> <span class="o">=</span> <span class="kc">False</span> +<span class="n">CLIPPING</span> <span class="o">=</span> <span class="n">aidge_quantization</span><span class="o">.</span><span class="n">Clipping</span><span class="o">.</span><span class="n">MSE</span> <span class="c1"># 'MAX'</span> +<span class="n">SINGLE_SHIFT</span> <span class="o">=</span> <span class="kc">True</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">propagate</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">scheduler</span><span class="p">,</span> <span class="n">tensor</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""</span> +<span class="sd"> Propagate the given tensor into the model and return the</span> +<span class="sd"> output tensor.</span> +<span class="sd"> """</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Propagate: </span><span class="si">{</span><span class="n">tensor</span><span class="o">.</span><span class="n">backend</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> + <span class="c1"># Run the inference</span> + <span class="n">scheduler</span><span class="o">.</span><span class="n">forward</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="p">[</span><span class="n">tensor</span><span class="p">])</span> + <span class="c1"># Gather the results</span> + <span class="n">output_node</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_output_nodes</span><span class="p">()</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> + <span class="n">output_tensor</span> <span class="o">=</span> <span class="n">output_node</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">get_output</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + <span class="n">output_tensor</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">)</span> + <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">output_tensor</span><span class="p">)</span> +</pre></div> +</div> +</div> +<section id="Download-the-model"> +<h2>Download the model<a class="headerlink" href="#Download-the-model" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">file_url</span> <span class="o">=</span> <span class="s2">"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true"</span> +<span class="n">file_path</span> <span class="o">=</span> <span class="n">MODEL_NAME</span> <span class="o">+</span> <span class="s2">"_mnist.onnx"</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">download_file</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">file_url</span><span class="p">)</span> +</pre></div> +</div> +</div> +</section> +<section id="Create-database-to-quantize-model"> +<h2>Create database to quantize model<a class="headerlink" href="#Create-database-to-quantize-model" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">transform</span> <span class="o">=</span> <span class="n">transforms</span><span class="o">.</span><span class="n">ToTensor</span><span class="p">()</span> +<span class="n">test_set</span> <span class="o">=</span> <span class="n">datasets</span><span class="o">.</span><span class="n">MNIST</span><span class="p">(</span><span class="n">root</span><span class="o">=</span><span class="s1">'./data'</span><span class="p">,</span> <span class="n">train</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">transform</span><span class="p">,</span> <span class="n">download</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + +<span class="n">tensors</span> <span class="o">=</span> <span class="p">[]</span> +<span class="n">labels</span> <span class="o">=</span> <span class="p">[]</span> +<span class="n">index</span> <span class="o">=</span> <span class="mi">0</span> +<span class="k">for</span> <span class="n">in_tensor</span><span class="p">,</span> <span class="n">label</span> <span class="ow">in</span> <span class="n">test_set</span><span class="p">:</span> + <span class="n">array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">in_tensor</span><span class="p">)</span> + <span class="n">array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">array</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">))</span> + <span class="n">tensor</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">array</span><span class="p">)</span> + <span class="n">tensor</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="n">BACKEND</span><span class="p">)</span> + <span class="n">tensor</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> + <span class="n">tensors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tensor</span><span class="p">)</span> + <span class="n">labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">label</span><span class="p">)</span> + <span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="nb">max</span><span class="p">(</span><span class="n">NB_TEST</span><span class="p">,</span> <span class="n">NB_CALIB</span><span class="p">)):</span> + <span class="k">break</span> +</pre></div> +</div> +</div> +</section> +<section id="Load-the-model-in-Aidge-and-manipulate-it"> +<h2>Load the model in Aidge and manipulate it<a class="headerlink" href="#Load-the-model-in-Aidge-and-manipulate-it" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">load_onnx</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">remove_flatten</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">fuse_batchnorm</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">expand_metaops</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">model</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> +<span class="n">model</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="n">BACKEND</span><span class="p">)</span> +<span class="n">model</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="s2">"imported_model"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<p>Checking accuracy:</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">scheduler</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SequentialScheduler</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1"> EXAMPLE INFERENCES :'</span><span class="p">)</span> +<span class="n">nb_valid</span> <span class="o">=</span> <span class="mi">0</span> +<span class="n">base_values</span> <span class="o">=</span> <span class="p">[]</span> +<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">NB_TEST</span><span class="p">):</span> + <span class="n">output_array</span> <span class="o">=</span> <span class="n">propagate</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">scheduler</span><span class="p">,</span> <span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="nb">print</span><span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="s1">' VS '</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">output_array</span><span class="p">),</span> <span class="s1">' -> '</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">output_array</span><span class="p">))</span> + <span class="n">base_values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">output_array</span><span class="p">))</span> + <span class="k">if</span> <span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">output_array</span><span class="p">)):</span> + <span class="n">nb_valid</span> <span class="o">+=</span> <span class="mi">1</span> +<span class="n">accuracy</span> <span class="o">=</span> <span class="n">nb_valid</span> <span class="o">/</span> <span class="n">NB_TEST</span> +<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1"> MODEL ACCURACY = '</span><span class="p">,</span> <span class="n">accuracy</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span> <span class="s1">'%'</span><span class="p">)</span> +</pre></div> +</div> +</div> +</section> +<section id="Quantize-the-model-to-int8"> +<h2>Quantize the model to int8<a class="headerlink" href="#Quantize-the-model-to-int8" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">aidge_quantization</span><span class="o">.</span><span class="n">quantize_network</span><span class="p">(</span> + <span class="n">network</span> <span class="o">=</span> <span class="n">model</span><span class="p">,</span> + <span class="n">nb_bits</span> <span class="o">=</span> <span class="n">NB_BITS</span><span class="p">,</span> + <span class="n">calibration_set</span> <span class="o">=</span> <span class="n">tensors</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">NB_CALIB</span><span class="p">],</span> + <span class="n">clipping_mode</span> <span class="o">=</span> <span class="n">CLIPPING</span><span class="p">,</span> + <span class="n">target_type</span> <span class="o">=</span> <span class="n">TARGET_TYPE</span><span class="p">,</span> + <span class="n">no_quant</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">optimize_signs</span> <span class="o">=</span> <span class="n">OPTIM_SIGN</span><span class="p">,</span> + <span class="n">single_shift</span> <span class="o">=</span> <span class="n">SINGLE_SHIFT</span><span class="p">,</span> + <span class="n">use_cuda</span> <span class="o">=</span> <span class="n">USE_CUDA</span><span class="p">,</span> + <span class="n">fold_graph</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> +<br/><br/></pre></div> +</div> +</div> +<p>Once the quantization is done, the graph now only accepts integer inputs. So we need to rescale the dataset for the data to be within [0, 255]. Also, tensors should be casted to be the same type as TARGET_TYPE.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">rescaling</span> <span class="o">=</span> <span class="mi">2</span><span class="o">**</span><span class="p">(</span><span class="n">NB_BITS</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span> +<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">NB_TEST</span><span class="p">):</span> + <span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">)</span> + <span class="n">array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">*</span> <span class="n">rescaling</span> + <span class="n">array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">array</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span> + <span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">array</span><span class="p">)</span> + <span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">TARGET_TYPE</span><span class="p">)</span> + <span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">)</span> +<span class="c1"># Setting model to CPU for export</span> +<span class="n">model</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<p>Each time the graph has been change, it has to be reset. Here some Quantizer and Cast nodes have been added.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">input_node</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">get_ordered_inputs</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> +<span class="n">input_node</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get_operator</span><span class="p">()</span><span class="o">.</span><span class="n">set_input</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tensors</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +<span class="n">scheduler</span><span class="o">.</span><span class="n">reset_scheduling</span><span class="p">()</span> +</pre></div> +</div> +</div> +<p>And now we can assess the new performances after quantization:</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1"> QUANTIZED EXAMPLE INFERENCES:'</span><span class="p">)</span> +<span class="n">nb_valid</span> <span class="o">=</span> <span class="mi">0</span> +<span class="n">post_values</span> <span class="o">=</span> <span class="p">[]</span> +<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">NB_TEST</span><span class="p">):</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"QEI: </span><span class="si">{</span><span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">backend</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> + <span class="n">output_array</span> <span class="o">=</span> <span class="n">propagate</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">scheduler</span><span class="p">,</span> <span class="n">tensors</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> + <span class="nb">print</span><span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="s1">' VS '</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">output_array</span><span class="p">),</span> <span class="s1">' -> '</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">output_array</span><span class="p">))</span> + <span class="n">post_values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">output_array</span><span class="p">))</span> + <span class="k">if</span> <span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">output_array</span><span class="p">)):</span> + <span class="n">nb_valid</span> <span class="o">+=</span> <span class="mi">1</span> +<span class="n">quant_accuracy</span> <span class="o">=</span> <span class="n">nb_valid</span> <span class="o">/</span> <span class="n">NB_TEST</span> +<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1"> MODEL ACCURACY = '</span><span class="p">,</span> <span class="n">accuracy</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span> <span class="s1">'%'</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1"> QUANTIZED ACCURACY = '</span><span class="p">,</span> <span class="n">quant_accuracy</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span> <span class="s1">'%'</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">exclude_unwanted_producers</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + +<span class="c1"># Fuse nodes</span> +<span class="n">cpp_fuse_to_metaops</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">remove_optional_inputs</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">scheduler</span><span class="o">.</span><span class="n">reset_scheduling</span><span class="p">()</span> +<span class="n">scheduler</span><span class="o">.</span><span class="n">generate_scheduling</span><span class="p">()</span> <span class="c1"># Scheduler needs to be generated as it has just been reset</span> +<span class="n">set_nodes_names</span><span class="p">(</span><span class="n">scheduler</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">output_array</span> <span class="o">=</span> <span class="n">propagate</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">scheduler</span><span class="p">,</span> <span class="n">tensors</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + +<span class="nb">print</span><span class="p">(</span><span class="s2">"### Exported Sample ###"</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="s2">"Aidge prediction :"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">output_array</span><span class="p">),</span> <span class="s2">"("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">output_array</span><span class="p">))</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="s2">"Label :"</span><span class="p">,</span> <span class="n">labels</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +<span class="n">set_nodes_datatypes</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[31]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">aidge_export_cpp</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">EXPORT_FOLDER</span><span class="p">,</span> + <span class="n">model</span><span class="p">,</span> + <span class="n">scheduler</span><span class="p">,</span> + <span class="n">labels</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">labels</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> + <span class="n">dev_mode</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> + <span class="n">aidge_cmp</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">subprocess</span><span class="w"> </span><span class="kn">import</span> <span class="n">CalledProcessError</span> + +<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">### Compiling the export ###"</span><span class="p">)</span> +<span class="k">try</span><span class="p">:</span> + <span class="k">for</span> <span class="n">std_line</span> <span class="ow">in</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">run_command</span><span class="p">([</span><span class="s2">"make"</span><span class="p">],</span> <span class="n">cwd</span><span class="o">=</span><span class="n">EXPORT_FOLDER</span><span class="p">):</span> + <span class="nb">print</span><span class="p">(</span><span class="n">std_line</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +<span class="k">except</span> <span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"An error occurred, failed to build export."</span><span class="p">)</span> <span class="kn">from</span><span class="w"> </span><span class="nn">e</span> +<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">### Running the export ###"</span><span class="p">)</span> +<span class="k">try</span><span class="p">:</span> + <span class="k">for</span> <span class="n">std_line</span> <span class="ow">in</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">run_command</span><span class="p">([</span><span class="s2">"./bin/run_export"</span><span class="p">],</span> <span class="n">cwd</span><span class="o">=</span><span class="n">EXPORT_FOLDER</span><span class="p">):</span> + <span class="nb">print</span><span class="p">(</span><span class="n">std_line</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +<span class="k">except</span> <span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"An error occurred, failed to run export."</span><span class="p">)</span> <span class="kn">from</span><span class="w"> </span><span class="nn">e</span> +</pre></div> +</div> +</div> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="export_cpp.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Export 101</p> + </div> + </a> + <a class="right-next" + href="export_cpp_add_impl.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Add a custom operator to the C++ export</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Download-the-model">Download the model</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Create-database-to-quantize-model">Create database to quantize model</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Load-the-model-in-Aidge-and-manipulate-it">Load the model in Aidge and manipulate it</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Quantize-the-model-to-int8">Quantize the model to int8</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/source/Tutorial/export_cpp_quant.nblink.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright 2023, CEA LIST. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/source/Tutorial/export_cpp_quant.ipynb b/source/Tutorial/export_cpp_quant.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..889b790354338aaa71b87e661a316362f45af5d0 --- /dev/null +++ b/source/Tutorial/export_cpp_quant.ipynb @@ -0,0 +1,377 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantized model C++ export" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install requests numpy ipywidgets ipycanvas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Aidge modules imports\n", + "import aidge_core\n", + "import aidge_backend_cpu\n", + "import aidge_onnx\n", + "import aidge_export_cpp\n", + "import aidge_quantization\n", + "from aidge_export_cpp.export_utils import (\n", + " cpp_fuse_to_metaops,\n", + " set_nodes_names,\n", + " set_nodes_datatypes,\n", + " exclude_unwanted_producers)\n", + "\n", + "from aidge_core.export_utils import remove_optional_inputs\n", + "# For database\n", + "from torchvision import transforms, datasets\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Global variables\n", + "USE_CUDA = False\n", + "if USE_CUDA:\n", + " import aidge_backend_cuda\n", + "BACKEND = \"cuda\" if USE_CUDA else \"cpu\"\n", + "MODEL_NAME = \"lenet\"\n", + "EXPORT_FOLDER = f\"{MODEL_NAME}_export_int8\"\n", + "\n", + "## PTQ Variables\n", + "NB_TEST = 10\n", + "NB_CALIB = 20\n", + "NB_BITS = 8\n", + "TARGET_TYPE = aidge_core.dtype.int32\n", + "OPTIM_SIGN = False\n", + "CLIPPING = aidge_quantization.Clipping.MSE # 'MAX'\n", + "SINGLE_SHIFT = True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def propagate(model, scheduler, tensor):\n", + " \"\"\"\n", + " Propagate the given tensor into the model and return the\n", + " output tensor.\n", + " \"\"\"\n", + " print(f\"Propagate: {tensor.backend()}\")\n", + " # Run the inference\n", + " scheduler.forward(True, [tensor])\n", + " # Gather the results\n", + " output_node = model.get_output_nodes().pop()\n", + " output_tensor = output_node.get_operator().get_output(0).clone()\n", + " output_tensor.set_backend(\"cpu\")\n", + " return np.array(output_tensor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "file_url = \"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true\"\n", + "file_path = MODEL_NAME + \"_mnist.onnx\"\n", + "aidge_core.utils.download_file(file_path, file_url)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create database to quantize model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "transform = transforms.ToTensor()\n", + "test_set = datasets.MNIST(root='./data', train=False, transform=transform, download=True)\n", + "\n", + "tensors = []\n", + "labels = []\n", + "index = 0\n", + "for in_tensor, label in test_set:\n", + " array = np.array(in_tensor)\n", + " array = np.reshape(array, (1, 1, 28, 28))\n", + " tensor = aidge_core.Tensor(array)\n", + " tensor.set_backend(BACKEND)\n", + " tensor.set_datatype(aidge_core.dtype.float32)\n", + " tensors.append(tensor)\n", + " labels.append(label)\n", + " index += 1\n", + " if (index == max(NB_TEST, NB_CALIB)):\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load the model in Aidge and manipulate it" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = aidge_onnx.load_onnx(file_path, verbose=False)\n", + "aidge_core.remove_flatten(model)\n", + "aidge_core.fuse_batchnorm(model)\n", + "aidge_core.expand_metaops(model)\n", + "model.set_datatype(aidge_core.dtype.float32)\n", + "model.set_backend(BACKEND)\n", + "model.save(\"imported_model\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Checking accuracy:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "scheduler = aidge_core.SequentialScheduler(model)\n", + "\n", + "print('\\n EXAMPLE INFERENCES :')\n", + "nb_valid = 0\n", + "base_values = []\n", + "for i in range(NB_TEST):\n", + " output_array = propagate(model, scheduler, tensors[i])\n", + " print(labels[i], ' VS ', np.argmax(output_array), ' -> ', np.max(output_array))\n", + " base_values.append(np.max(output_array))\n", + " if (labels[i] == np.argmax(output_array)):\n", + " nb_valid += 1\n", + "accuracy = nb_valid / NB_TEST\n", + "print('\\n MODEL ACCURACY = ', accuracy * 100, '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quantize the model to int8" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "aidge_quantization.quantize_network(\n", + " network = model,\n", + " nb_bits = NB_BITS,\n", + " calibration_set = tensors[0:NB_CALIB],\n", + " clipping_mode = CLIPPING,\n", + " target_type = TARGET_TYPE,\n", + " no_quant = False,\n", + " optimize_signs = OPTIM_SIGN,\n", + " single_shift = SINGLE_SHIFT,\n", + " use_cuda = USE_CUDA,\n", + " fold_graph = True)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the quantization is done, the graph now only accepts integer inputs.\n", + "So we need to rescale the dataset for the data to be within [0, 255].\n", + "Also, tensors should be casted to be the same type as TARGET_TYPE." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rescaling = 2**(NB_BITS-1)-1\n", + "for i in range(NB_TEST):\n", + " tensors[i].set_backend(\"cpu\")\n", + " array = np.array(tensors[i]) * rescaling\n", + " array = np.round(array).astype(int)\n", + " tensors[i] = aidge_core.Tensor(array)\n", + " tensors[i].set_datatype(TARGET_TYPE)\n", + " tensors[i].set_backend(\"cpu\")\n", + "# Setting model to CPU for export\n", + "model.set_backend(\"cpu\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each time the graph has been change, it has to be reset.\n", + "Here some Quantizer and Cast nodes have been added." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "input_node = model.get_ordered_inputs()[0]\n", + "input_node[0].get_operator().set_input(0, tensors[0])\n", + "scheduler.reset_scheduling()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now we can assess the new performances after quantization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('\\n QUANTIZED EXAMPLE INFERENCES:')\n", + "nb_valid = 0\n", + "post_values = []\n", + "for i in range(NB_TEST):\n", + " print(f\"QEI: {tensors[i].backend()}\")\n", + " output_array = propagate(model, scheduler, tensors[i])\n", + " print(labels[i], ' VS ', np.argmax(output_array), ' -> ', np.max(output_array))\n", + " post_values.append(np.max(output_array))\n", + " if (labels[i] == np.argmax(output_array)):\n", + " nb_valid += 1\n", + "quant_accuracy = nb_valid / NB_TEST\n", + "print('\\n MODEL ACCURACY = ', accuracy * 100, '%')\n", + "print('\\n QUANTIZED ACCURACY = ', quant_accuracy * 100, '%')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "exclude_unwanted_producers(model)\n", + "\n", + "# Fuse nodes\n", + "cpp_fuse_to_metaops(model)\n", + "remove_optional_inputs(model)\n", + "scheduler.reset_scheduling()\n", + "scheduler.generate_scheduling() # Scheduler needs to be generated as it has just been reset\n", + "set_nodes_names(scheduler)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "output_array = propagate(model, scheduler, tensors[0])\n", + "\n", + "print(\"### Exported Sample ###\")\n", + "print(\"Aidge prediction :\", np.argmax(output_array), \"(\" + str(np.max(output_array)) + \")\")\n", + "print(\"Label :\", labels[0])\n", + "set_nodes_datatypes(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "aidge_export_cpp.export(EXPORT_FOLDER,\n", + " model,\n", + " scheduler,\n", + " labels = aidge_core.Tensor(labels[0]),\n", + " dev_mode = False,\n", + " aidge_cmp = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from subprocess import CalledProcessError\n", + "\n", + "print(\"\\n### Compiling the export ###\")\n", + "try:\n", + " for std_line in aidge_core.utils.run_command([\"make\"], cwd=EXPORT_FOLDER):\n", + " print(std_line, end=\"\")\n", + "except CalledProcessError as e:\n", + " raise RuntimeError(0, f\"An error occurred, failed to build export.\") from e\n", + "print(\"\\n### Running the export ###\")\n", + "try:\n", + " for std_line in aidge_core.utils.run_command([\"./bin/run_export\"], cwd=EXPORT_FOLDER):\n", + " print(std_line, end=\"\")\n", + "except CalledProcessError as e:\n", + " raise RuntimeError(0, f\"An error occurred, failed to run export.\") from e" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "aidge", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/source/Tutorial/export_stm32.html b/source/Tutorial/export_stm32.html new file mode 100644 index 0000000000000000000000000000000000000000..ca08a6a6670e90988ab5c0e313d4861740ddd82a --- /dev/null +++ b/source/Tutorial/export_stm32.html @@ -0,0 +1,823 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>STM32 export — Eclipse Aidge documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> + <link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v=d2d258e8" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=abb81387" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/id.css?v=5eddeb79" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> + <script src="../../_static/copybutton.js?v=f281be69"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'source/Tutorial/export_stm32';</script> + <script src="../../_static/js/mermaid.min.js"></script> + <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="API" href="../API/index.html" /> + <link rel="prev" title="TensorRT export" href="export_trt.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="0.6.1" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + <button type="button" class="btn rounded-pill" id="pst-back-to-top"> + <i class="fa-solid fa-arrow-up"></i>Back to top</button> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + + + + + <img src="../../_static/Isotype-aidge.png" class="logo__image only-light" alt=""/> + <img src="../../_static/Isotype-aidge.png" class="logo__image only-dark pst-js-only" alt=""/> + + + <p class="title logo__title">Eclipse Aidge</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> +<li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> +<li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> +<li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> +<li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">STM32 export</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">STM32 export</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="STM32-export"> +<h1>STM32 export<a class="headerlink" href="#STM32-export" title="Link to this heading">#</a></h1> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[1]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">%</span><span class="k">pip</span> install requests numpy ipywidgets ipycanvas +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Requirement already satisfied: requests in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.32.3) +Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.2.6) +Requirement already satisfied: ipywidgets in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (8.1.7) +Requirement already satisfied: ipycanvas in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (0.13.3) +Requirement already satisfied: charset-normalizer<4,>=2 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (3.4.2) +Requirement already satisfied: idna<4,>=2.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (3.10) +Requirement already satisfied: urllib3<3,>=1.21.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (2.4.0) +Requirement already satisfied: certifi>=2017.4.17 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (2025.4.26) +Requirement already satisfied: comm>=0.1.3 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (0.2.2) +Requirement already satisfied: ipython>=6.1.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (8.36.0) +Requirement already satisfied: traitlets>=4.3.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (5.14.3) +Requirement already satisfied: widgetsnbextension~=4.0.14 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (4.0.14) +Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (3.0.15) +Requirement already satisfied: pillow>=6.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipycanvas) (11.2.1) +Requirement already satisfied: decorator in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (5.2.1) +Requirement already satisfied: exceptiongroup in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (1.3.0) +Requirement already satisfied: jedi>=0.16 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.2) +Requirement already satisfied: matplotlib-inline in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.7) +Requirement already satisfied: pexpect>4.3 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0) +Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.51) +Requirement already satisfied: pygments>=2.4.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (2.19.1) +Requirement already satisfied: stack_data in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3) +Requirement already satisfied: typing_extensions>=4.6 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (4.13.2) +Requirement already satisfied: wcwidth in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13) +Requirement already satisfied: parso<0.9.0,>=0.8.4 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.4) +Requirement already satisfied: ptyprocess>=0.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0) +Requirement already satisfied: executing>=1.2.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (2.2.0) +Requirement already satisfied: asttokens>=2.1.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (3.0.0) +Requirement already satisfied: pure-eval in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (0.2.3) +Note: you may need to restart the kernel to use updated packages. +</pre></div></div> +</div> +<section id="Download-the-model"> +<h2>Download the model<a class="headerlink" href="#Download-the-model" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">requests</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> + +<span class="n">file_url</span> <span class="o">=</span> <span class="s2">"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true"</span> +<span class="n">file_path</span> <span class="o">=</span> <span class="s2">"lenet_mnist.onnx"</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">download_file</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">file_url</span><span class="p">)</span> +</pre></div> +</div> +</div> +</section> +<section id="Load-the-model-in-Aidge-and-manipulate-it"> +<h2>Load the model in Aidge and manipulate it<a class="headerlink" href="#Load-the-model-in-Aidge-and-manipulate-it" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cpu</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_onnx</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_export_cpp</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_export_arm_cortexm</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">model</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">load_onnx</span><span class="p">(</span><span class="s2">"lenet_mnist.onnx"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Remove Flatten node, useless in the CPP export</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">remove_flatten</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> + +<span class="c1"># Configuration for the model + forward dimensions</span> +<span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">dims</span><span class="o">=</span><span class="p">[[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">]])</span> +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Generate scheduling of the model</span> +<span class="n">scheduler</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SequentialScheduler</span><span class="p">(</span><span class="n">model</span><span class="p">)</span> +<span class="n">scheduler</span><span class="o">.</span><span class="n">generate_scheduling</span><span class="p">()</span> +</pre></div> +</div> +</div> +</section> +<section id="Export-the-model"> +<h2>Export the model<a class="headerlink" href="#Export-the-model" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">scheduler_export</span><span class="p">(</span> + <span class="n">scheduler</span><span class="p">,</span> + <span class="s2">"lenet_export_fp32"</span><span class="p">,</span> + <span class="n">aidge_export_arm_cortexm</span><span class="o">.</span><span class="n">ExportLibAidgeARM</span><span class="p">,</span> + <span class="n">memory_manager</span><span class="o">=</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">mem_info</span><span class="o">.</span><span class="n">generate_optimized_memory_info</span><span class="p">,</span> + <span class="n">memory_manager_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"stats_folder"</span><span class="p">:</span> <span class="s2">"lenet_export_fp32/stats"</span><span class="p">,</span> <span class="s2">"wrapping"</span><span class="p">:</span> <span class="kc">False</span> <span class="p">}</span> +<span class="p">)</span> +<br/></pre></div> +</div> +</div> +<p>Now that we have generated the dnn folder, we can generate the utils files that will help with compilation:</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">aidge_export_arm_cortexm</span><span class="o">.</span><span class="n">gen_board_files</span><span class="p">(</span><span class="s2">"lenet_export_fp32"</span><span class="p">,</span> <span class="s2">"stm32h7"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<section id="Draw-your-own-number"> +<h3>Draw your own number<a class="headerlink" href="#Draw-your-own-number" title="Link to this heading">#</a></h3> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">ipywidgets</span><span class="w"> </span><span class="kn">import</span> <span class="n">HBox</span><span class="p">,</span> <span class="n">VBox</span><span class="p">,</span> <span class="n">Button</span><span class="p">,</span> <span class="n">Layout</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">ipycanvas</span><span class="w"> </span><span class="kn">import</span> <span class="n">RoughCanvas</span><span class="p">,</span> <span class="n">hold_canvas</span> + +<span class="n">img_name</span> <span class="o">=</span> <span class="s2">"my_number.png"</span> + +<span class="n">canvas</span> <span class="o">=</span> <span class="n">RoughCanvas</span><span class="p">(</span><span class="n">width</span><span class="o">=</span><span class="mi">28</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">28</span><span class="p">,</span> <span class="n">sync_image_data</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + +<span class="n">button_gen</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">"Generate PNG"</span><span class="p">)</span> +<span class="n">button_clear</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s2">"Clear"</span><span class="p">)</span> + +<span class="n">drawing</span> <span class="o">=</span> <span class="kc">False</span> +<span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> +<span class="n">shape</span> <span class="o">=</span> <span class="p">[]</span> + +<span class="k">def</span><span class="w"> </span><span class="nf">on_erase_button_clicked</span><span class="p">(</span><span class="n">b</span><span class="p">):</span> + <span class="n">canvas</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span> + +<span class="k">def</span><span class="w"> </span><span class="nf">on_generate_button_clicked</span><span class="p">(</span><span class="n">b</span><span class="p">):</span> + <span class="k">try</span><span class="p">:</span> + <span class="n">canvas</span><span class="o">.</span><span class="n">to_file</span><span class="p">(</span><span class="n">img_name</span><span class="p">)</span> + <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Image generated to </span><span class="si">{</span><span class="n">img_name</span><span class="si">}</span><span class="s2"> !"</span><span class="p">)</span> + <span class="k">except</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Draw a number before generating the image."</span><span class="p">)</span> + +<span class="n">button_clear</span><span class="o">.</span><span class="n">on_click</span><span class="p">(</span><span class="n">on_erase_button_clicked</span><span class="p">)</span> +<span class="n">button_gen</span><span class="o">.</span><span class="n">on_click</span><span class="p">(</span><span class="n">on_generate_button_clicked</span><span class="p">)</span> + +<span class="k">def</span><span class="w"> </span><span class="nf">on_mouse_down</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span> + <span class="k">global</span> <span class="n">drawing</span> + <span class="k">global</span> <span class="n">position</span> + <span class="k">global</span> <span class="n">shape</span> + + <span class="n">drawing</span> <span class="o">=</span> <span class="kc">True</span> + <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="n">position</span><span class="p">]</span> + +<span class="k">def</span><span class="w"> </span><span class="nf">on_mouse_move</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span> + <span class="k">global</span> <span class="n">drawing</span> + <span class="k">global</span> <span class="n">position</span> + <span class="k">global</span> <span class="n">shape</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">drawing</span><span class="p">:</span> + <span class="k">return</span> + + <span class="k">with</span> <span class="n">hold_canvas</span><span class="p">():</span> + <span class="n">canvas</span><span class="o">.</span><span class="n">stroke_line</span><span class="p">(</span><span class="n">position</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">position</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + <span class="n">position</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + + <span class="n">shape</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">position</span><span class="p">)</span> + +<span class="k">def</span><span class="w"> </span><span class="nf">on_mouse_up</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span> + <span class="k">global</span> <span class="n">drawing</span> + <span class="k">global</span> <span class="n">position</span> + <span class="k">global</span> <span class="n">shape</span> + + <span class="n">drawing</span> <span class="o">=</span> <span class="kc">False</span> + + <span class="k">with</span> <span class="n">hold_canvas</span><span class="p">():</span> + <span class="n">canvas</span><span class="o">.</span><span class="n">stroke_line</span><span class="p">(</span><span class="n">position</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">position</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + + <span class="n">shape</span> <span class="o">=</span> <span class="p">[]</span> + +<span class="n">canvas</span><span class="o">.</span><span class="n">on_mouse_down</span><span class="p">(</span><span class="n">on_mouse_down</span><span class="p">)</span> +<span class="n">canvas</span><span class="o">.</span><span class="n">on_mouse_move</span><span class="p">(</span><span class="n">on_mouse_move</span><span class="p">)</span> +<span class="n">canvas</span><span class="o">.</span><span class="n">on_mouse_up</span><span class="p">(</span><span class="n">on_mouse_up</span><span class="p">)</span> + +<span class="n">canvas</span><span class="o">.</span><span class="n">stroke_style</span> <span class="o">=</span> <span class="s2">"#000000"</span> + +<span class="n">VBox</span><span class="p">((</span><span class="n">canvas</span><span class="p">,</span> <span class="n">HBox</span><span class="p">((</span><span class="n">button_gen</span><span class="p">,</span> <span class="n">button_clear</span><span class="p">))),</span> + <span class="n">layout</span><span class="o">=</span><span class="n">Layout</span><span class="p">(</span><span class="n">height</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="s2">"300px"</span><span class="p">))</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +</pre></div> +</div> +<div class="output_area docutils container"> +<script type="application/vnd.jupyter.widget-view+json">{"version_major": 2, "version_minor": 0, "model_id": "69b5f11b80a143ed9dd579f61c69e147"}</script></div> +</div> +</section> +<section id="Generate-inputs-for-testing-the-model-from-your-drawing"> +<h3>Generate inputs for testing the model from your drawing<a class="headerlink" href="#Generate-inputs-for-testing-the-model-from-your-drawing" title="Link to this heading">#</a></h3> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">try</span><span class="p">:</span> + <span class="n">number_np</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">get_image_data</span><span class="p">()</span> + <span class="c1"># We got a numpy array with the shape of (28,28,4)</span> + <span class="c1"># Transform it to (28,28)</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">number_np</span><span class="p">[:,</span> <span class="p">:,</span> <span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="s2">"float32"</span><span class="p">)</span> + <span class="c1"># Convert from [0, 255] to [0, 1] and export it</span> + <span class="n">aidge_core</span><span class="o">.</span><span class="n">export_utils</span><span class="o">.</span><span class="n">generate_input_file</span><span class="p">(</span><span class="n">export_folder</span><span class="o">=</span><span class="s2">"lenet_export_fp32"</span><span class="p">,</span> <span class="n">array_name</span><span class="o">=</span><span class="s2">"feature_feature_0_Conv_input_0"</span><span class="p">,</span> <span class="n">tensor</span><span class="o">=</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">Tensor</span><span class="p">(</span><span class="n">x</span> <span class="o">/</span> <span class="mi">255</span><span class="p">))</span> +<span class="k">except</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"Please draw a number in the previous cell before running this one."</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Please draw a number in the previous cell before running this one. +</pre></div></div> +</div> +</section> +<section id="Compile-the-export-and-test-it"> +<h3>Compile the export and test it<a class="headerlink" href="#Compile-the-export-and-test-it" title="Link to this heading">#</a></h3> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[12]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span><span class="nb">cd</span><span class="w"> </span>lenet_export_fp32<span class="w"> </span><span class="o">&&</span><span class="w"> </span>make<span class="w"> </span>build_image_docker<span class="w"> </span><span class="o">&&</span><span class="w"> </span>make<span class="w"> </span>build_export_docker +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32' +/bin/sh: 1: docker: not found +make[1]: *** [Makefile:102: build_image_docker] Error 127 +make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32' +</pre></div></div> +</div> +<script type="application/vnd.jupyter.widget-state+json"> +{"state": {"9a178b53bd9b4f20aca130ca37451830": {"model_name": "CanvasManagerModel", "model_module": "ipycanvas", "model_module_version": "^0.13", "state": {"_model_module": "ipycanvas", "_model_module_version": "^0.13", "_model_name": "CanvasManagerModel", "_view_count": null, "_view_module": null, "_view_module_version": "", "_view_name": null}}, "de9c51891c5c44b9be93afad2e557a00": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "f78c2c6813b44057b3b9fd1eda4cd10b": {"model_name": "RoughCanvasModel", "model_module": "ipycanvas", "model_module_version": "^0.13", "state": {"_canvas_manager": "IPY_MODEL_9a178b53bd9b4f20aca130ca37451830", "_dom_classes": [], "_model_module": "ipycanvas", "_model_module_version": "^0.13", "_model_name": "RoughCanvasModel", "_send_client_ready_event": true, "_view_count": null, "_view_module": "ipycanvas", "_view_module_version": "^0.13", "_view_name": "CanvasView", "height": 28, "image_data": null, "layout": "IPY_MODEL_de9c51891c5c44b9be93afad2e557a00", "sync_image_data": true, "tabbable": null, "tooltip": null, "width": 28}}, "63a601b0507e41699d08bcb845eb97a1": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "ed8133f3aa3f4eb9a8aa24f304ca9f7a": {"model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null}}, "09cba4ceca2241ee83c6a1ae1a414ca6": {"model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "", "description": "Generate PNG", "disabled": false, "icon": "", "layout": "IPY_MODEL_63a601b0507e41699d08bcb845eb97a1", "style": "IPY_MODEL_ed8133f3aa3f4eb9a8aa24f304ca9f7a", "tabbable": null, "tooltip": null}}, "8a3461715da04cd6a063d7ade111a24b": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "cfdb9e290e054f33b4f64f20fb7a60cc": {"model_name": "ButtonStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "button_color": null, "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null}}, "695849e5fb4e4e7eafce7225a1215d2c": {"model_name": "ButtonModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ButtonModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ButtonView", "button_style": "", "description": "Clear", "disabled": false, "icon": "", "layout": "IPY_MODEL_8a3461715da04cd6a063d7ade111a24b", "style": "IPY_MODEL_cfdb9e290e054f33b4f64f20fb7a60cc", "tabbable": null, "tooltip": null}}, "632441b58bd34e01bd2c357d2953daff": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "0e9c60234cd540b1a0e253cfce83bbf8": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_09cba4ceca2241ee83c6a1ae1a414ca6", "IPY_MODEL_695849e5fb4e4e7eafce7225a1215d2c"], "layout": "IPY_MODEL_632441b58bd34e01bd2c357d2953daff", "tabbable": null, "tooltip": null}}, "22d8473599e34ee696c9a610f31097f7": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": "auto", "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "300px"}}, "69b5f11b80a143ed9dd579f61c69e147": {"model_name": "VBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "VBoxView", "box_style": "", "children": ["IPY_MODEL_f78c2c6813b44057b3b9fd1eda4cd10b", "IPY_MODEL_0e9c60234cd540b1a0e253cfce83bbf8"], "layout": "IPY_MODEL_22d8473599e34ee696c9a610f31097f7", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0} +</script></section> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="export_trt.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">TensorRT export</p> + </div> + </a> + <a class="right-next" + href="../API/index.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">API</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Download-the-model">Download the model</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Load-the-model-in-Aidge-and-manipulate-it">Load the model in Aidge and manipulate it</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Export-the-model">Export the model</a><ul class="visible nav section-nav flex-column"> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#Draw-your-own-number">Draw your own number</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#Generate-inputs-for-testing-the-model-from-your-drawing">Generate inputs for testing the model from your drawing</a></li> +<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#Compile-the-export-and-test-it">Compile the export and test it</a></li> +</ul> +</li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/source/Tutorial/export_stm32.nblink.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright 2023, CEA LIST. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/source/Tutorial/export_stm32.ipynb b/source/Tutorial/export_stm32.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..3f8235770622b727408ba15a6de6fcecf9ca3782 --- /dev/null +++ b/source/Tutorial/export_stm32.ipynb @@ -0,0 +1,895 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# STM32 export" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:21.188717Z", + "iopub.status.busy": "2025-05-19T10:05:21.188517Z", + "iopub.status.idle": "2025-05-19T10:05:21.726432Z", + "shell.execute_reply": "2025-05-19T10:05:21.726013Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: requests in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.32.3)\r\n", + "Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (2.2.6)\r\n", + "Requirement already satisfied: ipywidgets in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (8.1.7)\r\n", + "Requirement already satisfied: ipycanvas in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (0.13.3)\r\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (3.4.2)\r\n", + "Requirement already satisfied: idna<4,>=2.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (3.10)\r\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (2.4.0)\r\n", + "Requirement already satisfied: certifi>=2017.4.17 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests) (2025.4.26)\r\n", + "Requirement already satisfied: comm>=0.1.3 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (0.2.2)\r\n", + "Requirement already satisfied: ipython>=6.1.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (8.36.0)\r\n", + "Requirement already satisfied: traitlets>=4.3.1 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (5.14.3)\r\n", + "Requirement already satisfied: widgetsnbextension~=4.0.14 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (4.0.14)\r\n", + "Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipywidgets) (3.0.15)\r\n", + "Requirement already satisfied: pillow>=6.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipycanvas) (11.2.1)\r\n", + "Requirement already satisfied: decorator in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (5.2.1)\r\n", + "Requirement already satisfied: exceptiongroup in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (1.3.0)\r\n", + "Requirement already satisfied: jedi>=0.16 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.2)\r\n", + "Requirement already satisfied: matplotlib-inline in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.7)\r\n", + "Requirement already satisfied: pexpect>4.3 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\r\n", + "Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.51)\r\n", + "Requirement already satisfied: pygments>=2.4.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (2.19.1)\r\n", + "Requirement already satisfied: stack_data in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\r\n", + "Requirement already satisfied: typing_extensions>=4.6 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from ipython>=6.1.0->ipywidgets) (4.13.2)\r\n", + "Requirement already satisfied: wcwidth in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets) (0.2.13)\r\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.4 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.4)\r\n", + "Requirement already satisfied: ptyprocess>=0.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\r\n", + "Requirement already satisfied: executing>=1.2.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (2.2.0)\r\n", + "Requirement already satisfied: asttokens>=2.1.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (3.0.0)\r\n", + "Requirement already satisfied: pure-eval in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (0.2.3)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install requests numpy ipywidgets ipycanvas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:21.727647Z", + "iopub.status.busy": "2025-05-19T10:05:21.727533Z", + "iopub.status.idle": "2025-05-19T10:05:21.768248Z", + "shell.execute_reply": "2025-05-19T10:05:21.767874Z" + } + }, + "outputs": [], + "source": [ + "import os\n", + "import requests" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:21.769650Z", + "iopub.status.busy": "2025-05-19T10:05:21.769547Z", + "iopub.status.idle": "2025-05-19T10:05:21.990787Z", + "shell.execute_reply": "2025-05-19T10:05:21.990421Z" + } + }, + "outputs": [], + "source": [ + "import aidge_core\n", + "\n", + "file_url = \"https://huggingface.co/EclipseAidge/LeNet/resolve/main/lenet_mnist.onnx?download=true\"\n", + "file_path = \"lenet_mnist.onnx\"\n", + "aidge_core.utils.download_file(file_path, file_url)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load the model in Aidge and manipulate it" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:21.992288Z", + "iopub.status.busy": "2025-05-19T10:05:21.992089Z", + "iopub.status.idle": "2025-05-19T10:05:22.221148Z", + "shell.execute_reply": "2025-05-19T10:05:22.220840Z" + } + }, + "outputs": [], + "source": [ + "import aidge_backend_cpu\n", + "import aidge_onnx\n", + "import aidge_export_cpp\n", + "import aidge_export_arm_cortexm" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.222543Z", + "iopub.status.busy": "2025-05-19T10:05:22.222306Z", + "iopub.status.idle": "2025-05-19T10:05:22.232345Z", + "shell.execute_reply": "2025-05-19T10:05:22.232008Z" + } + }, + "outputs": [], + "source": [ + "model = aidge_onnx.load_onnx(\"lenet_mnist.onnx\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.233279Z", + "iopub.status.busy": "2025-05-19T10:05:22.233107Z", + "iopub.status.idle": "2025-05-19T10:05:22.234983Z", + "shell.execute_reply": "2025-05-19T10:05:22.234769Z" + } + }, + "outputs": [], + "source": [ + "# Remove Flatten node, useless in the CPP export\n", + "aidge_core.remove_flatten(model)\n", + "\n", + "# Configuration for the model + forward dimensions\n", + "model.compile(\"cpu\", aidge_core.dtype.float32, dims=[[1, 1, 28, 28]])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.236035Z", + "iopub.status.busy": "2025-05-19T10:05:22.235866Z", + "iopub.status.idle": "2025-05-19T10:05:22.237635Z", + "shell.execute_reply": "2025-05-19T10:05:22.237398Z" + } + }, + "outputs": [], + "source": [ + "# Generate scheduling of the model\n", + "scheduler = aidge_core.SequentialScheduler(model)\n", + "scheduler.generate_scheduling()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export the model" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.238524Z", + "iopub.status.busy": "2025-05-19T10:05:22.238342Z", + "iopub.status.idle": "2025-05-19T10:05:22.566824Z", + "shell.execute_reply": "2025-05-19T10:05:22.566387Z" + } + }, + "outputs": [], + "source": [ + "aidge_core.export_utils.scheduler_export(\n", + " scheduler,\n", + " \"lenet_export_fp32\",\n", + " aidge_export_arm_cortexm.ExportLibAidgeARM,\n", + " memory_manager=aidge_core.mem_info.generate_optimized_memory_info,\n", + " memory_manager_args={\"stats_folder\": \"lenet_export_fp32/stats\", \"wrapping\": False }\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have generated the dnn folder, we can generate the utils files that will help with compilation:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.568351Z", + "iopub.status.busy": "2025-05-19T10:05:22.568195Z", + "iopub.status.idle": "2025-05-19T10:05:22.579042Z", + "shell.execute_reply": "2025-05-19T10:05:22.578686Z" + } + }, + "outputs": [], + "source": [ + "aidge_export_arm_cortexm.gen_board_files(\"lenet_export_fp32\", \"stm32h7\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Draw your own number" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.580063Z", + "iopub.status.busy": "2025-05-19T10:05:22.579933Z", + "iopub.status.idle": "2025-05-19T10:05:22.669610Z", + "shell.execute_reply": "2025-05-19T10:05:22.669353Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "69b5f11b80a143ed9dd579f61c69e147", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(RoughCanvas(height=28, sync_image_data=True, width=28), HBox(children=(Button(description='Gene…" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from ipywidgets import HBox, VBox, Button, Layout\n", + "from ipycanvas import RoughCanvas, hold_canvas\n", + "\n", + "img_name = \"my_number.png\"\n", + "\n", + "canvas = RoughCanvas(width=28, height=28, sync_image_data=True)\n", + "\n", + "button_gen = Button(description=\"Generate PNG\")\n", + "button_clear = Button(description=\"Clear\")\n", + "\n", + "drawing = False\n", + "position = None\n", + "shape = []\n", + "\n", + "def on_erase_button_clicked(b):\n", + " canvas.clear()\n", + "\n", + "def on_generate_button_clicked(b):\n", + " try:\n", + " canvas.to_file(img_name)\n", + " print(f\"Image generated to {img_name} !\")\n", + " except:\n", + " print(\"Draw a number before generating the image.\")\n", + "\n", + "button_clear.on_click(on_erase_button_clicked)\n", + "button_gen.on_click(on_generate_button_clicked)\n", + "\n", + "def on_mouse_down(x, y):\n", + " global drawing\n", + " global position\n", + " global shape\n", + "\n", + " drawing = True\n", + " position = (x, y)\n", + " shape = [position]\n", + "\n", + "def on_mouse_move(x, y):\n", + " global drawing\n", + " global position\n", + " global shape\n", + "\n", + " if not drawing:\n", + " return\n", + "\n", + " with hold_canvas():\n", + " canvas.stroke_line(position[0], position[1], x, y)\n", + " position = (x, y)\n", + "\n", + " shape.append(position)\n", + "\n", + "def on_mouse_up(x, y):\n", + " global drawing\n", + " global position\n", + " global shape\n", + "\n", + " drawing = False\n", + "\n", + " with hold_canvas():\n", + " canvas.stroke_line(position[0], position[1], x, y)\n", + "\n", + " shape = []\n", + "\n", + "canvas.on_mouse_down(on_mouse_down)\n", + "canvas.on_mouse_move(on_mouse_move)\n", + "canvas.on_mouse_up(on_mouse_up)\n", + "\n", + "canvas.stroke_style = \"#000000\"\n", + "\n", + "VBox((canvas, HBox((button_gen, button_clear))),\n", + " layout=Layout(height='auto', width=\"300px\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate inputs for testing the model from your drawing" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.670953Z", + "iopub.status.busy": "2025-05-19T10:05:22.670814Z", + "iopub.status.idle": "2025-05-19T10:05:22.673016Z", + "shell.execute_reply": "2025-05-19T10:05:22.672793Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please draw a number in the previous cell before running this one.\n" + ] + } + ], + "source": [ + "try:\n", + " number_np = canvas.get_image_data()\n", + " # We got a numpy array with the shape of (28,28,4)\n", + " # Transform it to (28,28)\n", + " x = number_np[:, :, 3].astype(\"float32\")\n", + " # Convert from [0, 255] to [0, 1] and export it\n", + " aidge_core.export_utils.generate_input_file(export_folder=\"lenet_export_fp32\", array_name=\"feature_feature_0_Conv_input_0\", tensor=aidge_core.Tensor(x / 255))\n", + "except:\n", + " print(\"Please draw a number in the previous cell before running this one.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compile the export and test it\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:22.673957Z", + "iopub.status.busy": "2025-05-19T10:05:22.673802Z", + "iopub.status.idle": "2025-05-19T10:05:22.796988Z", + "shell.execute_reply": "2025-05-19T10:05:22.796517Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32'\r\n", + "/bin/sh: 1: docker: not found\r\n", + "make[1]: *** [Makefile:102: build_image_docker] Error 127\r\n", + "make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/lenet_export_fp32'\r\n" + ] + } + ], + "source": [ + "!cd lenet_export_fp32 && make build_image_docker && make build_export_docker" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "aidge", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": { + "09cba4ceca2241ee83c6a1ae1a414ca6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "Generate PNG", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_63a601b0507e41699d08bcb845eb97a1", + "style": "IPY_MODEL_ed8133f3aa3f4eb9a8aa24f304ca9f7a", + "tabbable": null, + "tooltip": null + } + }, + "0e9c60234cd540b1a0e253cfce83bbf8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_09cba4ceca2241ee83c6a1ae1a414ca6", + "IPY_MODEL_695849e5fb4e4e7eafce7225a1215d2c" + ], + "layout": "IPY_MODEL_632441b58bd34e01bd2c357d2953daff", + "tabbable": null, + "tooltip": null + } + }, + "22d8473599e34ee696c9a610f31097f7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": "auto", + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "300px" + } + }, + "632441b58bd34e01bd2c357d2953daff": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "63a601b0507e41699d08bcb845eb97a1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "695849e5fb4e4e7eafce7225a1215d2c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "Clear", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_8a3461715da04cd6a063d7ade111a24b", + "style": "IPY_MODEL_cfdb9e290e054f33b4f64f20fb7a60cc", + "tabbable": null, + "tooltip": null + } + }, + "69b5f11b80a143ed9dd579f61c69e147": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "VBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "VBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "VBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f78c2c6813b44057b3b9fd1eda4cd10b", + "IPY_MODEL_0e9c60234cd540b1a0e253cfce83bbf8" + ], + "layout": "IPY_MODEL_22d8473599e34ee696c9a610f31097f7", + "tabbable": null, + "tooltip": null + } + }, + "8a3461715da04cd6a063d7ade111a24b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9a178b53bd9b4f20aca130ca37451830": { + "model_module": "ipycanvas", + "model_module_version": "^0.13", + "model_name": "CanvasManagerModel", + "state": { + "_model_module": "ipycanvas", + "_model_module_version": "^0.13", + "_model_name": "CanvasManagerModel", + "_view_count": null, + "_view_module": null, + "_view_module_version": "", + "_view_name": null + } + }, + "cfdb9e290e054f33b4f64f20fb7a60cc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "button_color": null, + "font_family": null, + "font_size": null, + "font_style": null, + "font_variant": null, + "font_weight": null, + "text_color": null, + "text_decoration": null + } + }, + "de9c51891c5c44b9be93afad2e557a00": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ed8133f3aa3f4eb9a8aa24f304ca9f7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "button_color": null, + "font_family": null, + "font_size": null, + "font_style": null, + "font_variant": null, + "font_weight": null, + "text_color": null, + "text_decoration": null + } + }, + "f78c2c6813b44057b3b9fd1eda4cd10b": { + "model_module": "ipycanvas", + "model_module_version": "^0.13", + "model_name": "RoughCanvasModel", + "state": { + "_canvas_manager": "IPY_MODEL_9a178b53bd9b4f20aca130ca37451830", + "_dom_classes": [], + "_model_module": "ipycanvas", + "_model_module_version": "^0.13", + "_model_name": "RoughCanvasModel", + "_send_client_ready_event": true, + "_view_count": null, + "_view_module": "ipycanvas", + "_view_module_version": "^0.13", + "_view_name": "CanvasView", + "height": 28, + "image_data": null, + "layout": "IPY_MODEL_de9c51891c5c44b9be93afad2e557a00", + "sync_image_data": true, + "tabbable": null, + "tooltip": null, + "width": 28 + } + } + }, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/source/Tutorial/export_trt.html b/source/Tutorial/export_trt.html new file mode 100644 index 0000000000000000000000000000000000000000..c732a74a855bfbbc9946af9042062c595c45699d --- /dev/null +++ b/source/Tutorial/export_trt.html @@ -0,0 +1,898 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>TensorRT export — Eclipse Aidge documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> + <link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v=d2d258e8" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=abb81387" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/id.css?v=5eddeb79" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> + <script src="../../_static/copybutton.js?v=f281be69"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'source/Tutorial/export_trt';</script> + <script src="../../_static/js/mermaid.min.js"></script> + <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="STM32 export" href="export_stm32.html" /> + <link rel="prev" title="Add a custom operator to the C++ export" href="export_cpp_add_impl.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="0.6.1" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + <button type="button" class="btn rounded-pill" id="pst-back-to-top"> + <i class="fa-solid fa-arrow-up"></i>Back to top</button> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + + + + + <img src="../../_static/Isotype-aidge.png" class="logo__image only-light" alt=""/> + <img src="../../_static/Isotype-aidge.png" class="logo__image only-dark pst-js-only" alt=""/> + + + <p class="title logo__title">Eclipse Aidge</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> +<li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> +<li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> +<li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> +<li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">TensorRT export</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="TensorRT-export"> +<h1>TensorRT export<a class="headerlink" href="#TensorRT-export" title="Link to this heading">#</a></h1> +<p>In this tutorial, we’ll walk through the process of performing 8-bit quantization on a simple model using TensorRT and Aidge. The steps include:</p> +<ul class="simple"> +<li><p>exporting the model</p></li> +<li><p>modifying the test script for quantization</p></li> +<li><p>preparing calibration data</p></li> +<li><p>running the quantization and profile the quantized model</p></li> +</ul> +<p><img alt="tutorial graph" src="../../_images/TRT_worklfow.png" /></p> +<p>Furthermore, as shown in this image but not demonstrated in this tutorial, Aidge allows the user to:</p> +<ul class="simple"> +<li><p>Add custom operators via the plugin interface</p></li> +<li><p>Facilitate the transformation of user data into calibration data</p></li> +</ul> +<section id="0.-Requirements-for-this-tutorial"> +<h2>0. Requirements for this tutorial<a class="headerlink" href="#0.-Requirements-for-this-tutorial" title="Link to this heading">#</a></h2> +<p>To complete this tutorial, we hightly recommend following these requirements:</p> +<ul class="simple"> +<li><p>To have completed the <a class="reference external" href="https://gitlab.eclipse.org/eclipse/aidge/aidge/-/tree/master/examples/tutorials/Aidge_tutorial?ref_type=heads">Aidge 101 tutorial</a></p></li> +<li><p>To have installed the <code class="docutils literal notranslate"><span class="pre">aidge_export_tensorrt</span></code> module</p></li> +</ul> +<p>In order to compile the export on your machine, please be sure to have one of these two conditions:</p> +<ul class="simple"> +<li><p>To have installed <a class="reference external" href="https://docs.docker.com/get-docker/">Docker</a> (the export compilation chain is able to use docker)</p></li> +<li><p>To have installed the correct packages to support TensorRT 8.6</p></li> +</ul> +</section> +<section id="1.-Exporting-the-model"> +<h2>1. Exporting the model<a class="headerlink" href="#1.-Exporting-the-model" title="Link to this heading">#</a></h2> +<p>In this tutorial, we will export <a class="reference external" href="https://github.com/onnx/models/tree/main/validated/vision/classification/mobilenet/model">MobileNetV2</a>, a lightweight convolutional neural network.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[1]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span>wget<span class="w"> </span>-c<span class="w"> </span>https://github.com/onnx/models/raw/main/validated/vision/classification/mobilenet/model/mobilenetv2-7.onnx +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +/usr/bin/sh: 1: wget: not found +</pre></div></div> +</div> +<p>For visualizing the model structure, we recommend using Netron. If you haven’t installed Netron yet, you can do so by executing the following command:</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># !pip install netron</span> +</pre></div> +</div> +</div> +<p>Once installed, you can launch Netron to visualize the model:</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># import netron</span> +<span class="c1"># netron.start('mobilenetv2-7.onnx', 8080)</span> +</pre></div> +</div> +</div> +<p>Then let’s export the model using the <code class="docutils literal notranslate"><span class="pre">aidge_export_tensorrt</span></code> module.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># First, be sure that any previous exports are removed</span> +<span class="o">!</span>rm<span class="w"> </span>-rf<span class="w"> </span>export_trt +</pre></div> +</div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_export_tensorrt</span> + +<span class="c1"># Generate export for your model</span> +<span class="c1"># This function takes as argument the name of the export folder</span> +<span class="c1"># and the onnx file or the graphview of your model</span> +<span class="n">aidge_export_tensorrt</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="s2">"export_trt"</span><span class="p">,</span> <span class="s2">"mobilenetv2-7.onnx"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Generating TensorRT export in export_trt. +</pre></div></div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">FileNotFoundError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[5], line 6</span> +<span class="ansi-green-intense-fg ansi-bold"> 1</span> <span class="ansi-bold" style="color: rgb(0,135,0)">import</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">aidge_export_tensorrt</span> +<span class="ansi-green-intense-fg ansi-bold"> 3</span> <span style="color: rgb(95,135,135)"># Generate export for your model</span> +<span class="ansi-green-intense-fg ansi-bold"> 4</span> <span style="color: rgb(95,135,135)"># This function takes as argument the name of the export folder</span> +<span class="ansi-green-intense-fg ansi-bold"> 5</span> <span style="color: rgb(95,135,135)"># and the onnx file or the graphview of your model</span> +<span class="ansi-green-fg">----> 6</span> <span class="ansi-yellow-bg">aidge_export_tensorrt</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">export</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">export_trt</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">mobilenetv2-7.onnx</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span> + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_export_tensorrt/__init__.py:56</span>, in <span class="ansi-cyan-fg">export</span><span class="ansi-blue-fg">(export_folder, graphview, python_binding, trt_version)</span> +<span class="ansi-green-intense-fg ansi-bold"> 54</span> <span class="ansi-bold" style="color: rgb(0,135,0)">elif</span> <span style="color: rgb(0,135,0)">isinstance</span>(graphview, <span style="color: rgb(0,135,0)">str</span>): +<span class="ansi-green-intense-fg ansi-bold"> 55</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> graphview<span style="color: rgb(98,98,98)">.</span>endswith(<span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">.onnx</span><span style="color: rgb(175,0,0)">"</span>): +<span class="ansi-green-fg">---> 56</span> <span class="ansi-yellow-bg">shutil</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">copy</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">graphview</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">export_folder</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 57</span> <span style="color: rgb(95,135,135)"># Rename onnx file to "model.onnx"</span> +<span class="ansi-green-intense-fg ansi-bold"> 58</span> _, old_name <span style="color: rgb(98,98,98)">=</span> os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>split(graphview) + +File <span class="ansi-green-fg">/usr/lib/python3.10/shutil.py:417</span>, in <span class="ansi-cyan-fg">copy</span><span class="ansi-blue-fg">(src, dst, follow_symlinks)</span> +<span class="ansi-green-intense-fg ansi-bold"> 415</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>isdir(dst): +<span class="ansi-green-intense-fg ansi-bold"> 416</span> dst <span style="color: rgb(98,98,98)">=</span> os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>join(dst, os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>basename(src)) +<span class="ansi-green-fg">--> 417</span> <span class="ansi-yellow-bg">copyfile</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">src</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">dst</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">follow_symlinks</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">=</span><span class="ansi-yellow-bg">follow_symlinks</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 418</span> copymode(src, dst, follow_symlinks<span style="color: rgb(98,98,98)">=</span>follow_symlinks) +<span class="ansi-green-intense-fg ansi-bold"> 419</span> <span class="ansi-bold" style="color: rgb(0,135,0)">return</span> dst + +File <span class="ansi-green-fg">/usr/lib/python3.10/shutil.py:254</span>, in <span class="ansi-cyan-fg">copyfile</span><span class="ansi-blue-fg">(src, dst, follow_symlinks)</span> +<span class="ansi-green-intense-fg ansi-bold"> 252</span> os<span style="color: rgb(98,98,98)">.</span>symlink(os<span style="color: rgb(98,98,98)">.</span>readlink(src), dst) +<span class="ansi-green-intense-fg ansi-bold"> 253</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: +<span class="ansi-green-fg">--> 254</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span class="ansi-yellow-bg" style="color: rgb(0,135,0)">open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">src</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">'</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">rb</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">'</span><span class="ansi-yellow-bg">)</span> <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> fsrc: +<span class="ansi-green-intense-fg ansi-bold"> 255</span> <span class="ansi-bold" style="color: rgb(0,135,0)">try</span>: +<span class="ansi-green-intense-fg ansi-bold"> 256</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span style="color: rgb(0,135,0)">open</span>(dst, <span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)">wb</span><span style="color: rgb(175,0,0)">'</span>) <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> fdst: +<span class="ansi-green-intense-fg ansi-bold"> 257</span> <span style="color: rgb(95,135,135)"># macOS</span> + +<span class="ansi-red-fg">FileNotFoundError</span>: [Errno 2] No such file or directory: 'mobilenetv2-7.onnx' +</pre></div></div> +</div> +<p>The export povides a Makefile with several options to use the export on your machine. You can generate a C++ export or a Python export.</p> +<p>You also have the possibility to compile the export or/and the Python library by using Docker if your host machine doesn’t have the correct packages. In this tutorial, we generate the Python library of the export and use it a Python script.</p> +<p>All of these options are resumed in the helper of the Makefile (run <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">help</span></code> in the export folder for more details).</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Compile the export Python library by using docker</span> +<span class="c1"># and the Makefile provided in the export</span> +<span class="o">!</span><span class="nb">cd</span><span class="w"> </span>export_trt/<span class="w"> </span><span class="o">&&</span><span class="w"> </span>make<span class="w"> </span>build_lib_python_docker +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt' +make[1]: *** No rule to make target 'build_lib_python_docker'. Stop. +make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt' +</pre></div></div> +</div> +</section> +<section id="2.-Modifying-the-test-script-for-quantization"> +<h2>2. Modifying the test script for quantization<a class="headerlink" href="#2.-Modifying-the-test-script-for-quantization" title="Link to this heading">#</a></h2> +<p>Next, you have to modify <code class="docutils literal notranslate"><span class="pre">test.py</span></code> by adding <code class="docutils literal notranslate"><span class="pre">nb_bits=8</span></code> in the graph constructor and call <code class="docutils literal notranslate"><span class="pre">model.calibrate()</span></code>.</p> +<p><code class="docutils literal notranslate"><span class="pre">calibrate()</span></code> can accept three arguments:</p> +<ul class="simple"> +<li><p><strong>calibration_folder_path</strong>: to specify the path to your calibration folder</p></li> +<li><p><strong>cache_file_path</strong>: to use your pre-built calibration cache</p></li> +<li><p><strong>batch_size</strong>: to specify the batch size for calibration data</p></li> +</ul> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">%%writefile</span> export_trt/test.py +<span class="sd">"""Example test file for the TensorRT Python API."""</span> + +<span class="kn">import</span><span class="w"> </span><span class="nn">build.lib.aidge_trt</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">aidge_trt</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span> + +<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span> + <span class="c1"># Load the model</span> + <span class="n">model</span> <span class="o">=</span> <span class="n">aidge_trt</span><span class="o">.</span><span class="n">Graph</span><span class="p">(</span><span class="s2">"model.onnx"</span><span class="p">,</span> <span class="n">nb_bits</span><span class="o">=</span><span class="mi">8</span><span class="p">)</span> + + <span class="c1"># Calibrate the model</span> + <span class="n">model</span><span class="o">.</span><span class="n">calibrate</span><span class="p">()</span> + + <span class="c1"># Initialize the model</span> + <span class="n">model</span><span class="o">.</span><span class="n">initialize</span><span class="p">()</span> + + <span class="c1"># Profile the model with 10 iterations</span> + <span class="n">model</span><span class="o">.</span><span class="n">profile</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> + + <span class="c1"># Example of running inference</span> + <span class="c1"># img: numpy.array = np.load("PATH TO NPY file")</span> + <span class="c1"># output: numpy.array = model.run_sync([img])</span> +<br/></pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Writing export_trt/test.py +</pre></div></div> +</div> +</section> +<section id="3.-Preparing-the-calibration-dataset"> +<h2>3. Preparing the calibration dataset<a class="headerlink" href="#3.-Preparing-the-calibration-dataset" title="Link to this heading">#</a></h2> +<p>To ensure accurate calibration, it’s essential to select representative samples. In this example, we will use a 224x224 RGB image from the ImageNet dataset.</p> +<p>However, for practical applications, TensorRT suggests that “The amount of input data required is application-dependent, but experiments indicate that approximately 500 images are adequate for calibrating ImageNet classification networksâ€.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create calibration folder</span> +<span class="o">!</span><span class="nb">cd</span><span class="w"> </span>export_trt/<span class="w"> </span><span class="o">&&</span><span class="w"> </span>mkdir<span class="w"> </span>calibration_folder +</pre></div> +</div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">%</span><span class="k">matplotlib</span> inline +<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.image</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">mpimg</span> + +<span class="n">demo_img_path</span> <span class="o">=</span> <span class="s1">'./data/0.jpg'</span> + +<span class="n">img</span> <span class="o">=</span> <span class="n">mpimg</span><span class="o">.</span><span class="n">imread</span><span class="p">(</span><span class="n">demo_img_path</span><span class="p">)</span> +<span class="n">imgplot</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">img</span><span class="p">)</span> +<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">FileNotFoundError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[9], line 7</span> +<span class="ansi-green-intense-fg ansi-bold"> 3</span> <span class="ansi-bold" style="color: rgb(0,135,0)">import</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">matplotlib</span><span class="ansi-bold" style="color: rgb(0,0,255)">.</span><span class="ansi-bold" style="color: rgb(0,0,255)">image</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,135,0)">as</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">mpimg</span> +<span class="ansi-green-intense-fg ansi-bold"> 5</span> demo_img_path <span style="color: rgb(98,98,98)">=</span> <span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)">./data/0.jpg</span><span style="color: rgb(175,0,0)">'</span> +<span class="ansi-green-fg">----> 7</span> img <span style="color: rgb(98,98,98)">=</span> <span class="ansi-yellow-bg">mpimg</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">imread</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">demo_img_path</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 8</span> imgplot <span style="color: rgb(98,98,98)">=</span> plt<span style="color: rgb(98,98,98)">.</span>imshow(img) +<span class="ansi-green-intense-fg ansi-bold"> 9</span> plt<span style="color: rgb(98,98,98)">.</span>show() + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/matplotlib/image.py:1520</span>, in <span class="ansi-cyan-fg">imread</span><span class="ansi-blue-fg">(fname, format)</span> +<span class="ansi-green-intense-fg ansi-bold"> 1513</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> <span style="color: rgb(0,135,0)">isinstance</span>(fname, <span style="color: rgb(0,135,0)">str</span>) <span class="ansi-bold" style="color: rgb(175,0,255)">and</span> <span style="color: rgb(0,135,0)">len</span>(parse<span style="color: rgb(98,98,98)">.</span>urlparse(fname)<span style="color: rgb(98,98,98)">.</span>scheme) <span style="color: rgb(98,98,98)">></span> <span style="color: rgb(98,98,98)">1</span>: +<span class="ansi-green-intense-fg ansi-bold"> 1514</span> <span style="color: rgb(95,135,135)"># Pillow doesn't handle URLs directly.</span> +<span class="ansi-green-intense-fg ansi-bold"> 1515</span> <span class="ansi-bold" style="color: rgb(0,135,0)">raise</span> <span class="ansi-bold" style="color: rgb(215,95,95)">ValueError</span>( +<span class="ansi-green-intense-fg ansi-bold"> 1516</span> <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">Please open the URL for reading and pass the </span><span style="color: rgb(175,0,0)">"</span> +<span class="ansi-green-intense-fg ansi-bold"> 1517</span> <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">result to Pillow, e.g. with </span><span style="color: rgb(175,0,0)">"</span> +<span class="ansi-green-intense-fg ansi-bold"> 1518</span> <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">``np.array(PIL.Image.open(urllib.request.urlopen(url)))``.</span><span style="color: rgb(175,0,0)">"</span> +<span class="ansi-green-intense-fg ansi-bold"> 1519</span> ) +<span class="ansi-green-fg">-> 1520</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span class="ansi-yellow-bg">img_open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">fname</span><span class="ansi-yellow-bg">)</span> <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> image: +<span class="ansi-green-intense-fg ansi-bold"> 1521</span> <span class="ansi-bold" style="color: rgb(0,135,0)">return</span> (_pil_png_to_float_array(image) +<span class="ansi-green-intense-fg ansi-bold"> 1522</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> <span style="color: rgb(0,135,0)">isinstance</span>(image, PIL<span style="color: rgb(98,98,98)">.</span>PngImagePlugin<span style="color: rgb(98,98,98)">.</span>PngImageFile) <span class="ansi-bold" style="color: rgb(0,135,0)">else</span> +<span class="ansi-green-intense-fg ansi-bold"> 1523</span> pil_to_array(image)) + +File <span class="ansi-green-fg">/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/PIL/Image.py:3505</span>, in <span class="ansi-cyan-fg">open</span><span class="ansi-blue-fg">(fp, mode, formats)</span> +<span class="ansi-green-intense-fg ansi-bold"> 3502</span> filename <span style="color: rgb(98,98,98)">=</span> os<span style="color: rgb(98,98,98)">.</span>fspath(fp) +<span class="ansi-green-intense-fg ansi-bold"> 3504</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> filename: +<span class="ansi-green-fg">-> 3505</span> fp <span style="color: rgb(98,98,98)">=</span> <span class="ansi-yellow-bg">builtins</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">filename</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">rb</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 3506</span> exclusive_fp <span style="color: rgb(98,98,98)">=</span> <span class="ansi-bold" style="color: rgb(0,135,0)">True</span> +<span class="ansi-green-intense-fg ansi-bold"> 3507</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: + +<span class="ansi-red-fg">FileNotFoundError</span>: [Errno 2] No such file or directory: './data/0.jpg' +</pre></div></div> +</div> +<p>This image has been preprocessed and stored in <code class="docutils literal notranslate"><span class="pre">/data/</span></code> as <code class="docutils literal notranslate"><span class="pre">0.batch</span></code> file. Information about the image’s shape is stored in the <code class="docutils literal notranslate"><span class="pre">.info</span></code> file.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">shutil</span> + +<span class="n">shutil</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="s2">"data/.info"</span><span class="p">,</span> <span class="s2">"export_trt/calibration_folder/.info"</span><span class="p">)</span> +<span class="n">shutil</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="s2">"data/0.batch"</span><span class="p">,</span> <span class="s2">"export_trt/calibration_folder/0.batch"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +<span class="ansi-red-fg">---------------------------------------------------------------------------</span> +<span class="ansi-red-fg">FileNotFoundError</span> Traceback (most recent call last) +Cell <span class="ansi-green-fg">In[10], line 3</span> +<span class="ansi-green-intense-fg ansi-bold"> 1</span> <span class="ansi-bold" style="color: rgb(0,135,0)">import</span><span style="color: rgb(188,188,188)"> </span><span class="ansi-bold" style="color: rgb(0,0,255)">shutil</span> +<span class="ansi-green-fg">----> 3</span> <span class="ansi-yellow-bg">shutil</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">.</span><span class="ansi-yellow-bg">copy</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">data/.info</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">export_trt/calibration_folder/.info</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">"</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 4</span> shutil<span style="color: rgb(98,98,98)">.</span>copy(<span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">data/0.batch</span><span style="color: rgb(175,0,0)">"</span>, <span style="color: rgb(175,0,0)">"</span><span style="color: rgb(175,0,0)">export_trt/calibration_folder/0.batch</span><span style="color: rgb(175,0,0)">"</span>) + +File <span class="ansi-green-fg">/usr/lib/python3.10/shutil.py:417</span>, in <span class="ansi-cyan-fg">copy</span><span class="ansi-blue-fg">(src, dst, follow_symlinks)</span> +<span class="ansi-green-intense-fg ansi-bold"> 415</span> <span class="ansi-bold" style="color: rgb(0,135,0)">if</span> os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>isdir(dst): +<span class="ansi-green-intense-fg ansi-bold"> 416</span> dst <span style="color: rgb(98,98,98)">=</span> os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>join(dst, os<span style="color: rgb(98,98,98)">.</span>path<span style="color: rgb(98,98,98)">.</span>basename(src)) +<span class="ansi-green-fg">--> 417</span> <span class="ansi-yellow-bg">copyfile</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">src</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">dst</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg">follow_symlinks</span><span class="ansi-yellow-bg" style="color: rgb(98,98,98)">=</span><span class="ansi-yellow-bg">follow_symlinks</span><span class="ansi-yellow-bg">)</span> +<span class="ansi-green-intense-fg ansi-bold"> 418</span> copymode(src, dst, follow_symlinks<span style="color: rgb(98,98,98)">=</span>follow_symlinks) +<span class="ansi-green-intense-fg ansi-bold"> 419</span> <span class="ansi-bold" style="color: rgb(0,135,0)">return</span> dst + +File <span class="ansi-green-fg">/usr/lib/python3.10/shutil.py:254</span>, in <span class="ansi-cyan-fg">copyfile</span><span class="ansi-blue-fg">(src, dst, follow_symlinks)</span> +<span class="ansi-green-intense-fg ansi-bold"> 252</span> os<span style="color: rgb(98,98,98)">.</span>symlink(os<span style="color: rgb(98,98,98)">.</span>readlink(src), dst) +<span class="ansi-green-intense-fg ansi-bold"> 253</span> <span class="ansi-bold" style="color: rgb(0,135,0)">else</span>: +<span class="ansi-green-fg">--> 254</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span class="ansi-yellow-bg" style="color: rgb(0,135,0)">open</span><span class="ansi-yellow-bg">(</span><span class="ansi-yellow-bg">src</span><span class="ansi-yellow-bg">,</span><span class="ansi-yellow-bg"> </span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">'</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">rb</span><span class="ansi-yellow-bg" style="color: rgb(175,0,0)">'</span><span class="ansi-yellow-bg">)</span> <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> fsrc: +<span class="ansi-green-intense-fg ansi-bold"> 255</span> <span class="ansi-bold" style="color: rgb(0,135,0)">try</span>: +<span class="ansi-green-intense-fg ansi-bold"> 256</span> <span class="ansi-bold" style="color: rgb(0,135,0)">with</span> <span style="color: rgb(0,135,0)">open</span>(dst, <span style="color: rgb(175,0,0)">'</span><span style="color: rgb(175,0,0)">wb</span><span style="color: rgb(175,0,0)">'</span>) <span class="ansi-bold" style="color: rgb(0,135,0)">as</span> fdst: +<span class="ansi-green-intense-fg ansi-bold"> 257</span> <span style="color: rgb(95,135,135)"># macOS</span> + +<span class="ansi-red-fg">FileNotFoundError</span>: [Errno 2] No such file or directory: 'data/.info' +</pre></div></div> +</div> +</section> +<section id="4.-Generating-the-quantized-model"> +<h2>4. Generating the quantized model<a class="headerlink" href="#4.-Generating-the-quantized-model" title="Link to this heading">#</a></h2> +<p>Finally, run the test script to quantize the model with the export python library and profile it.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span><span class="nb">cd</span><span class="w"> </span>export_trt/<span class="w"> </span><span class="o">&&</span><span class="w"> </span>make<span class="w"> </span>test_lib_python_docker +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt' +make[1]: *** No rule to make target 'test_lib_python_docker'. Stop. +make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt' +</pre></div></div> +</div> +<p>Following these steps have enabled you to conduct 8-bit quantization on your model. Upon completing the calibration, the calibration data can be reused if a <code class="docutils literal notranslate"><span class="pre">calibration_cache</span></code> exists, saving computational resources.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[12]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span>tail<span class="w"> </span>-n<span class="w"> </span>+0<span class="w"> </span>export_trt/calibration_cache +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +tail: cannot open 'export_trt/calibration_cache' for reading: No such file or directory +</pre></div></div> +</div> +<p>After quantization, feel free to save the generated TensorRT engine using <code class="docutils literal notranslate"><span class="pre">model.save("name_of_your_model")</span></code>. The method will save the engine into a <code class="docutils literal notranslate"><span class="pre">.trt</span></code> file.</p> +<p>To load the engine for further applications, use <code class="docutils literal notranslate"><span class="pre">model.load("name_of_your_model.trt")</span></code> after instancing a model.</p> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="export_cpp_add_impl.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Add a custom operator to the C++ export</p> + </div> + </a> + <a class="right-next" + href="export_stm32.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">STM32 export</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#0.-Requirements-for-this-tutorial">0. Requirements for this tutorial</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#1.-Exporting-the-model">1. Exporting the model</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#2.-Modifying-the-test-script-for-quantization">2. Modifying the test script for quantization</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#3.-Preparing-the-calibration-dataset">3. Preparing the calibration dataset</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#4.-Generating-the-quantized-model">4. Generating the quantized model</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/source/Tutorial/export_trt.nblink.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright 2023, CEA LIST. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/source/Tutorial/export_trt.ipynb b/source/Tutorial/export_trt.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..8d40dc3bbf805525ab6dbc778457dd0951e52084 --- /dev/null +++ b/source/Tutorial/export_trt.ipynb @@ -0,0 +1,495 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# TensorRT export\n", + "\n", + "In this tutorial, we'll walk through the process of performing 8-bit quantization on a simple model using TensorRT and Aidge. <br>\n", + "The steps include:\n", + "- exporting the model\n", + "- modifying the test script for quantization\n", + "- preparing calibration data\n", + "- running the quantization and profile the quantized model\n", + "\n", + "\n", + "\n", + "Furthermore, as shown in this image but not demonstrated in this tutorial, Aidge allows the user to:\n", + "- Add custom operators via the plugin interface\n", + "- Facilitate the transformation of user data into calibration data\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 0. Requirements for this tutorial\n", + "\n", + "To complete this tutorial, we hightly recommend following these requirements:\n", + "- To have completed the [Aidge 101 tutorial](https://gitlab.eclipse.org/eclipse/aidge/aidge/-/tree/master/examples/tutorials/Aidge_tutorial?ref_type=heads)\n", + "- To have installed the `aidge_export_tensorrt` module\n", + "\n", + "In order to compile the export on your machine, please be sure to have one of these two conditions:\n", + "- To have installed [Docker](https://docs.docker.com/get-docker/) (the export compilation chain is able to use docker)\n", + "- To have installed the correct packages to support TensorRT 8.6" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Exporting the model\n", + "\n", + "In this tutorial, we will export [MobileNetV2](https://github.com/onnx/models/tree/main/validated/vision/classification/mobilenet/model), a lightweight convolutional neural network. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:24.110818Z", + "iopub.status.busy": "2025-05-19T10:05:24.110686Z", + "iopub.status.idle": "2025-05-19T10:05:24.224173Z", + "shell.execute_reply": "2025-05-19T10:05:24.223695Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/usr/bin/sh: 1: wget: not found\r\n" + ] + } + ], + "source": [ + "!wget -c https://github.com/onnx/models/raw/main/validated/vision/classification/mobilenet/model/mobilenetv2-7.onnx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For visualizing the model structure, we recommend using Netron. <br>\n", + "If you haven't installed Netron yet, you can do so by executing the following command:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:24.225828Z", + "iopub.status.busy": "2025-05-19T10:05:24.225615Z", + "iopub.status.idle": "2025-05-19T10:05:24.227778Z", + "shell.execute_reply": "2025-05-19T10:05:24.227460Z" + } + }, + "outputs": [], + "source": [ + "# !pip install netron" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once installed, you can launch Netron to visualize the model:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:24.228911Z", + "iopub.status.busy": "2025-05-19T10:05:24.228810Z", + "iopub.status.idle": "2025-05-19T10:05:24.230540Z", + "shell.execute_reply": "2025-05-19T10:05:24.230199Z" + } + }, + "outputs": [], + "source": [ + "# import netron\n", + "# netron.start('mobilenetv2-7.onnx', 8080)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then let's export the model using the `aidge_export_tensorrt` module." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:24.231641Z", + "iopub.status.busy": "2025-05-19T10:05:24.231456Z", + "iopub.status.idle": "2025-05-19T10:05:24.341712Z", + "shell.execute_reply": "2025-05-19T10:05:24.341064Z" + } + }, + "outputs": [], + "source": [ + "# First, be sure that any previous exports are removed\n", + "!rm -rf export_trt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:24.343648Z", + "iopub.status.busy": "2025-05-19T10:05:24.343281Z", + "iopub.status.idle": "2025-05-19T10:05:24.887922Z", + "shell.execute_reply": "2025-05-19T10:05:24.887661Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating TensorRT export in export_trt.\n" + ] + }, + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'mobilenetv2-7.onnx'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 6\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01maidge_export_tensorrt\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Generate export for your model\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# This function takes as argument the name of the export folder\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m# and the onnx file or the graphview of your model\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[43maidge_export_tensorrt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexport\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mexport_trt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmobilenetv2-7.onnx\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/aidge_export_tensorrt/__init__.py:56\u001b[0m, in \u001b[0;36mexport\u001b[0;34m(export_folder, graphview, python_binding, trt_version)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(graphview, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m graphview\u001b[38;5;241m.\u001b[39mendswith(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.onnx\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m---> 56\u001b[0m \u001b[43mshutil\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgraphview\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexport_folder\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;66;03m# Rename onnx file to \"model.onnx\"\u001b[39;00m\n\u001b[1;32m 58\u001b[0m _, old_name \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39msplit(graphview)\n", + "File \u001b[0;32m/usr/lib/python3.10/shutil.py:417\u001b[0m, in \u001b[0;36mcopy\u001b[0;34m(src, dst, follow_symlinks)\u001b[0m\n\u001b[1;32m 415\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39misdir(dst):\n\u001b[1;32m 416\u001b[0m dst \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(dst, os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mbasename(src))\n\u001b[0;32m--> 417\u001b[0m \u001b[43mcopyfile\u001b[49m\u001b[43m(\u001b[49m\u001b[43msrc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdst\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_symlinks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_symlinks\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 418\u001b[0m copymode(src, dst, follow_symlinks\u001b[38;5;241m=\u001b[39mfollow_symlinks)\n\u001b[1;32m 419\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m dst\n", + "File \u001b[0;32m/usr/lib/python3.10/shutil.py:254\u001b[0m, in \u001b[0;36mcopyfile\u001b[0;34m(src, dst, follow_symlinks)\u001b[0m\n\u001b[1;32m 252\u001b[0m os\u001b[38;5;241m.\u001b[39msymlink(os\u001b[38;5;241m.\u001b[39mreadlink(src), dst)\n\u001b[1;32m 253\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 254\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msrc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m fsrc:\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(dst, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mwb\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m fdst:\n\u001b[1;32m 257\u001b[0m \u001b[38;5;66;03m# macOS\u001b[39;00m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'mobilenetv2-7.onnx'" + ] + } + ], + "source": [ + "import aidge_export_tensorrt\n", + "\n", + "# Generate export for your model\n", + "# This function takes as argument the name of the export folder\n", + "# and the onnx file or the graphview of your model\n", + "aidge_export_tensorrt.export(\"export_trt\", \"mobilenetv2-7.onnx\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The export povides a Makefile with several options to use the export on your machine. <br>\n", + "You can generate a C++ export or a Python export.\n", + "\n", + "You also have the possibility to compile the export or/and the Python library by using Docker if your host machine doesn't have the correct packages. <br>\n", + "In this tutorial, we generate the Python library of the export and use it a Python script.\n", + "\n", + "All of these options are resumed in the helper of the Makefile (run `make help` in the export folder for more details)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:24.889019Z", + "iopub.status.busy": "2025-05-19T10:05:24.888920Z", + "iopub.status.idle": "2025-05-19T10:05:25.003689Z", + "shell.execute_reply": "2025-05-19T10:05:25.003160Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt'\r\n", + "make[1]: *** No rule to make target 'build_lib_python_docker'. Stop.\r\n", + "make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt'\r\n" + ] + } + ], + "source": [ + "# Compile the export Python library by using docker\n", + "# and the Makefile provided in the export\n", + "!cd export_trt/ && make build_lib_python_docker" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Modifying the test script for quantization\n", + "\n", + "Next, you have to modify `test.py` by adding `nb_bits=8` in the graph constructor and call `model.calibrate()`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`calibrate()` can accept three arguments: \n", + "- **calibration_folder_path**: to specify the path to your calibration folder \n", + "- **cache_file_path**: to use your pre-built calibration cache\n", + "- **batch_size**: to specify the batch size for calibration data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:25.005494Z", + "iopub.status.busy": "2025-05-19T10:05:25.005334Z", + "iopub.status.idle": "2025-05-19T10:05:25.008527Z", + "shell.execute_reply": "2025-05-19T10:05:25.008189Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Writing export_trt/test.py\n" + ] + } + ], + "source": [ + "%%writefile export_trt/test.py\n", + "\"\"\"Example test file for the TensorRT Python API.\"\"\"\n", + "\n", + "import build.lib.aidge_trt as aidge_trt\n", + "import numpy as np\n", + "\n", + "if __name__ == '__main__':\n", + " # Load the model\n", + " model = aidge_trt.Graph(\"model.onnx\", nb_bits=8)\n", + "\n", + " # Calibrate the model\n", + " model.calibrate()\n", + "\n", + " # Initialize the model\n", + " model.initialize()\n", + "\n", + " # Profile the model with 10 iterations\n", + " model.profile(10)\n", + "\n", + " # Example of running inference\n", + " # img: numpy.array = np.load(\"PATH TO NPY file\")\n", + " # output: numpy.array = model.run_sync([img])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Preparing the calibration dataset\n", + "\n", + "To ensure accurate calibration, it's essential to select representative samples. In this example, we will use a 224x224 RGB image from the ImageNet dataset.\n", + "\n", + "However, for practical applications, TensorRT suggests that \"The amount of input data required is application-dependent, but experiments indicate that approximately 500 images are adequate for calibrating ImageNet classification networks\"." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:25.009380Z", + "iopub.status.busy": "2025-05-19T10:05:25.009287Z", + "iopub.status.idle": "2025-05-19T10:05:25.120863Z", + "shell.execute_reply": "2025-05-19T10:05:25.120252Z" + } + }, + "outputs": [], + "source": [ + "# Create calibration folder\n", + "!cd export_trt/ && mkdir calibration_folder" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:25.122596Z", + "iopub.status.busy": "2025-05-19T10:05:25.122390Z", + "iopub.status.idle": "2025-05-19T10:05:25.345359Z", + "shell.execute_reply": "2025-05-19T10:05:25.345029Z" + } + }, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: './data/0.jpg'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[9], line 7\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mimage\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mmpimg\u001b[39;00m\n\u001b[1;32m 5\u001b[0m demo_img_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m./data/0.jpg\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m----> 7\u001b[0m img \u001b[38;5;241m=\u001b[39m \u001b[43mmpimg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdemo_img_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 8\u001b[0m imgplot \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mimshow(img)\n\u001b[1;32m 9\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/matplotlib/image.py:1520\u001b[0m, in \u001b[0;36mimread\u001b[0;34m(fname, format)\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(fname, \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(parse\u001b[38;5;241m.\u001b[39murlparse(fname)\u001b[38;5;241m.\u001b[39mscheme) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m 1514\u001b[0m \u001b[38;5;66;03m# Pillow doesn't handle URLs directly.\u001b[39;00m\n\u001b[1;32m 1515\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1516\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPlease open the URL for reading and pass the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1517\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresult to Pillow, e.g. with \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1518\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m``np.array(PIL.Image.open(urllib.request.urlopen(url)))``.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1519\u001b[0m )\n\u001b[0;32m-> 1520\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43mimg_open\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m image:\n\u001b[1;32m 1521\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (_pil_png_to_float_array(image)\n\u001b[1;32m 1522\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(image, PIL\u001b[38;5;241m.\u001b[39mPngImagePlugin\u001b[38;5;241m.\u001b[39mPngImageFile) \u001b[38;5;28;01melse\u001b[39;00m\n\u001b[1;32m 1523\u001b[0m pil_to_array(image))\n", + "File \u001b[0;32m/builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages/PIL/Image.py:3505\u001b[0m, in \u001b[0;36mopen\u001b[0;34m(fp, mode, formats)\u001b[0m\n\u001b[1;32m 3502\u001b[0m filename \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mfspath(fp)\n\u001b[1;32m 3504\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m filename:\n\u001b[0;32m-> 3505\u001b[0m fp \u001b[38;5;241m=\u001b[39m \u001b[43mbuiltins\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3506\u001b[0m exclusive_fp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 3507\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: './data/0.jpg'" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "demo_img_path = './data/0.jpg'\n", + "\n", + "img = mpimg.imread(demo_img_path)\n", + "imgplot = plt.imshow(img)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This image has been preprocessed and stored in `/data/` as `0.batch` file. Information about the image's shape is stored in the `.info` file." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:25.346917Z", + "iopub.status.busy": "2025-05-19T10:05:25.346587Z", + "iopub.status.idle": "2025-05-19T10:05:25.363607Z", + "shell.execute_reply": "2025-05-19T10:05:25.363301Z" + } + }, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'data/.info'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[10], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mshutil\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[43mshutil\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata/.info\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mexport_trt/calibration_folder/.info\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m shutil\u001b[38;5;241m.\u001b[39mcopy(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdata/0.batch\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mexport_trt/calibration_folder/0.batch\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m/usr/lib/python3.10/shutil.py:417\u001b[0m, in \u001b[0;36mcopy\u001b[0;34m(src, dst, follow_symlinks)\u001b[0m\n\u001b[1;32m 415\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39misdir(dst):\n\u001b[1;32m 416\u001b[0m dst \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(dst, os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mbasename(src))\n\u001b[0;32m--> 417\u001b[0m \u001b[43mcopyfile\u001b[49m\u001b[43m(\u001b[49m\u001b[43msrc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdst\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_symlinks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_symlinks\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 418\u001b[0m copymode(src, dst, follow_symlinks\u001b[38;5;241m=\u001b[39mfollow_symlinks)\n\u001b[1;32m 419\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m dst\n", + "File \u001b[0;32m/usr/lib/python3.10/shutil.py:254\u001b[0m, in \u001b[0;36mcopyfile\u001b[0;34m(src, dst, follow_symlinks)\u001b[0m\n\u001b[1;32m 252\u001b[0m os\u001b[38;5;241m.\u001b[39msymlink(os\u001b[38;5;241m.\u001b[39mreadlink(src), dst)\n\u001b[1;32m 253\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 254\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msrc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m fsrc:\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(dst, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mwb\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m fdst:\n\u001b[1;32m 257\u001b[0m \u001b[38;5;66;03m# macOS\u001b[39;00m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'data/.info'" + ] + } + ], + "source": [ + "import shutil\n", + "\n", + "shutil.copy(\"data/.info\", \"export_trt/calibration_folder/.info\")\n", + "shutil.copy(\"data/0.batch\", \"export_trt/calibration_folder/0.batch\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Generating the quantized model \n", + "\n", + "Finally, run the test script to quantize the model with the export python library and profile it." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:25.364770Z", + "iopub.status.busy": "2025-05-19T10:05:25.364617Z", + "iopub.status.idle": "2025-05-19T10:05:25.480098Z", + "shell.execute_reply": "2025-05-19T10:05:25.479622Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "make[1]: Entering directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt'\r\n", + "make[1]: *** No rule to make target 'test_lib_python_docker'. Stop.\r\n", + "make[1]: Leaving directory '/builds/eclipse/aidge/aidge/docs/source/Tutorial/export_trt'\r\n" + ] + } + ], + "source": [ + "!cd export_trt/ && make test_lib_python_docker" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Following these steps have enabled you to conduct 8-bit quantization on your model. <br> \n", + "Upon completing the calibration, the calibration data can be reused if a `calibration_cache` exists, saving computational resources. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:05:25.481653Z", + "iopub.status.busy": "2025-05-19T10:05:25.481484Z", + "iopub.status.idle": "2025-05-19T10:05:25.594531Z", + "shell.execute_reply": "2025-05-19T10:05:25.594102Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tail: cannot open 'export_trt/calibration_cache' for reading: No such file or directory\r\n" + ] + } + ], + "source": [ + "!tail -n +0 export_trt/calibration_cache" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After quantization, feel free to save the generated TensorRT engine using `model.save(\"name_of_your_model\")`. The method will save the engine into a `.trt` file. \n", + "\n", + "To load the engine for further applications, use `model.load(\"name_of_your_model.trt\")` after instancing a model." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "aidge", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/source/Tutorial/graph_matching.html b/source/Tutorial/graph_matching.html index c3579a667771b0dfadac458749702ab6e0c347f1..6caaa3a76d1b261b92950602175b69415ab40edc 100644 --- a/source/Tutorial/graph_matching.html +++ b/source/Tutorial/graph_matching.html @@ -8,7 +8,7 @@ <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Graph matching and manipulation with Aidge — Eclipse Aidge documentation</title> + <title>Graph matching and manipulation — Eclipse Aidge documentation</title> @@ -60,10 +60,10 @@ <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> <link rel="next" title="Understanding Aidge’s scheduling" href="scheduling.html" /> - <link rel="prev" title="Database MNIST" href="database.html" /> + <link rel="prev" title="Data provider tutorial" href="database.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="current nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1 current active"><a class="current reference internal" href="#">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -392,7 +398,7 @@ <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> - <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Graph matching and manipulation with Aidge</span></li> + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Graph matching and manipulation</span></li> </ul> </nav> </div> @@ -409,8 +415,8 @@ <div id="searchbox"></div> <article class="bd-article"> - <section id="Graph-matching-and-manipulation-with-Aidge"> -<h1>Graph matching and manipulation with Aidge<a class="headerlink" href="#Graph-matching-and-manipulation-with-Aidge" title="Link to this heading">#</a></h1> + <section id="Graph-matching-and-manipulation"> +<h1>Graph matching and manipulation<a class="headerlink" href="#Graph-matching-and-manipulation" title="Link to this heading">#</a></h1> <p>Aidge introduces a simple and efficient DSL for graph matching, sometimes referred to as ‘graph regex.’ It allows for the creation of complex textual queries to find a quantified or unquantified set of nodes with specific types, attributes, and/or relationships between them. This is particularly useful for implementing sophisticated pattern-matching heuristics with minimal effort!</p> <div class="nbinput nblast docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[71]: @@ -1258,7 +1264,7 @@ Replaced 5 (out of 5) matching sub-graph with meta operators <i class="fa-solid fa-angle-left"></i> <div class="prev-next-info"> <p class="prev-next-subtitle">previous</p> - <p class="prev-next-title">Database MNIST</p> + <p class="prev-next-title">Data provider tutorial</p> </div> </a> <a class="right-next" diff --git a/source/Tutorial/graph_matching.ipynb b/source/Tutorial/graph_matching.ipynb index 369f7a3b20967ad666e8a650aeeca0d99b7bf0fd..db1324b6319adf2d5bee5ac361c09d8605002490 100644 --- a/source/Tutorial/graph_matching.ipynb +++ b/source/Tutorial/graph_matching.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Graph matching and manipulation with Aidge\n", + "# Graph matching and manipulation\n", "\n", "Aidge introduces a simple and efficient DSL for graph matching, sometimes referred to as 'graph regex.' It allows for the creation of complex textual queries to find a quantified or unquantified set of nodes with specific types, attributes, and/or relationships between them. This is particularly useful for implementing sophisticated pattern-matching heuristics with minimal effort!" ] @@ -996,7 +996,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "aidge", "language": "python", "name": "python3" }, @@ -1010,7 +1010,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.6" } }, "nbformat": 4, diff --git a/source/Tutorial/index.html b/source/Tutorial/index.html index 3b26822ae094b898fc7dfb1bb5440413d0bc9afe..7cdae6d0f7810d767b1b41007e821663692e65e4 100644 --- a/source/Tutorial/index.html +++ b/source/Tutorial/index.html @@ -63,7 +63,7 @@ <link rel="prev" title="Learn on edge" href="../UserGuide/learnEdge.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -408,62 +414,58 @@ <section id="tutorials"> <h1>Tutorials<a class="headerlink" href="#tutorials" title="Link to this heading">#</a></h1> -<section id="aidge-101"> -<h2>Aidge 101<a class="headerlink" href="#aidge-101" title="Link to this heading">#</a></h2> +<p>If you encounter any difficulty with the Tutorials, please create an issue <a class="reference external" href="https://gitlab.eclipse.org/groups/eclipse/aidge/-/issues">here</a>.</p> <p>To get started with Aidge, please follow the Aidge demonstration tutorial. This tutorial demonstrates the basic features of the Aidge Framework, importing an ONNX, transforming a neural network graph, performing inference and a cpp export.</p> <div class="toctree-wrapper compound"> <div class="nbsphinx-gallery"> <a class="reference internal" href="101_first_step.html"> - <div><img alt="" src="../../_static/nbsphinx-no-thumbnail.svg"></div> + <div><img alt="" src="../../_static/Tuto101.PNG"></div> <div>Aidge demonstration</div> </a> </div> </div> -</section> -<section id="aidge-dnn-fonctionnalities"> -<h2>Aidge DNN fonctionnalities<a class="headerlink" href="#aidge-dnn-fonctionnalities" title="Link to this heading">#</a></h2> -<ul class="simple"> -<li><p>Manipulating databases and creating batches of data</p></li> -<li><p>Train a Deep Neural Network</p></li> -<li><p>Provide an operator implementation using Python or meta-operators</p></li> -<li><p>Perform advanced graph matching with the Graph Regular Expression tool</p></li> -</ul> +<section id="aidge-functionalities"> +<h2>🛠Aidge functionalities<a class="headerlink" href="#aidge-functionalities" title="Link to this heading">#</a></h2> <div class="toctree-wrapper compound"> <div class="nbsphinx-gallery"> <a class="reference internal" href="database.html"> - <div><img alt="" src="../../_images/MnistExamples.png"></div> - <div>Database MNIST</div> + <div><img alt="" src="../../_static/TutoDatabase.PNG"></div> + <div>Data provider tutorial</div> </a> <a class="reference internal" href="graph_matching.html"> - <div><img alt="" src="../../_static/nbsphinx-no-thumbnail.svg"></div> - <div>Graph matching and manipulation with Aidge</div> + <div><img alt="" src="../../_static/TutoGraphMatching.PNG"></div> + <div>Graph matching and manipulation</div> </a> <a class="reference internal" href="scheduling.html"> - <div><img alt="" src="../../_static/nbsphinx-no-thumbnail.svg"></div> + <div><img alt="" src="../../_static/TutoScheduling.PNG"></div> <div>Understanding Aidge’s scheduling</div> </a> <a class="reference internal" href="learning.html"> - <div><img alt="" src="../../_images/Logotype-aidge.png"></div> + <div><img alt="" src="../../_static/TutoLearning.PNG"></div> <div>Training a simple Neural Network</div> </a> <a class="reference internal" href="ONNX.html"> - <div><img alt="" src="../../_images/Logotype-aidge.png"></div> + <div><img alt="" src="../../_static/TutoONNX.PNG"></div> <div>Aidge ONNX tutorial</div> </a> +<a class="reference internal" href="static_analysis.html"None> + <div><img alt="" src="../../_images/Logotype-aidge.png"></div> + <div>Perform static analysis on a neural network model</div> +</a> +<a class="reference internal" href="backend_cuda.html"> + <div><img alt="" src="../../_images/Logotype-aidge.png"></div> + <div>Backend CUDA example</div> +</a> </div> </div> </section> -<section id="dnn-optimization"> -<h2>DNN Optimization<a class="headerlink" href="#dnn-optimization" title="Link to this heading">#</a></h2> -<ul class="simple"> -<li><p>Perform post Training Quantization</p></li> -<li><p>Perform Convolution tiling</p></li> -</ul> +<section id="optimization-tutorials"> +<h2>âš™ï¸ Optimization tutorials<a class="headerlink" href="#optimization-tutorials" title="Link to this heading">#</a></h2> <div class="toctree-wrapper compound"> <div class="nbsphinx-gallery"> <a class="reference internal" href="ptq.html"None> - <div><img alt="" src="../../_images/ptq_diagram.png"></div> + <div><img alt="" src="../../_static/TutoPTQ.png"></div> <div>Post Training Quantization with AIDGE</div> </a> <a class="reference internal" href="tiling.html"> @@ -473,28 +475,32 @@ This tutorial demonstrates the basic features of the Aidge Framework, importing </div> </div> </section> -<section id="dnn-export"> -<h2>DNN export<a class="headerlink" href="#dnn-export" title="Link to this heading">#</a></h2> +<section id="export-tutorials"> +<h2>🚀 Export tutorials<a class="headerlink" href="#export-tutorials" title="Link to this heading">#</a></h2> <div class="toctree-wrapper compound"> <div class="nbsphinx-gallery"> <a class="reference internal" href="export_cpp.html"> - <div><img alt="" src="../../_images/Logotype-aidge.png"></div> - <div>Export a MNIST model to a CPP standalone project</div> + <div><img alt="" src="../../_static/TutoExport101.PNG"></div> + <div>Export 101</div> +</a> +<a class="reference internal" href="export_cpp_quant.html"> + <div><img alt="" src="../../_static/TutoExportCpp.PNG"></div> + <div>Quantized model C++ export</div> +</a> +<a class="reference internal" href="export_cpp_add_impl.html"> + <div><img alt="" src="../../_static/TutoExportCpp.PNG"></div> + <div>Add a custom operator to the C++ export</div> +</a> +<a class="reference internal" href="export_trt.html"> + <div><img alt="" src="../../_static/TutoExportTRT.PNG"></div> + <div>TensorRT export</div> +</a> +<a class="reference internal" href="export_stm32.html"> + <div><img alt="" src="../../_static/TutoExportSTM32.PNG"></div> + <div>STM32 export</div> </a> </div> </div> -<ul class="simple"> -<li><p><a class="reference external" href="https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/export/aidge_to_cpp/add_custom_operator/add_custom_operator.ipynb?ref_type=heads">Exercise on adding a custom implementation for a cpp export</a></p></li> -<li><p><a class="reference external" href="https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/TRT_Quantization_tutorial/tuto.ipynb?ref_type=heads">Export your DNN with TensorRT</a></p></li> -<li><p><a class="reference external" href="https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/export/aidge_to_STM32/export_LeNet/export_lenet_fp32.ipynb?ref_type=heads">Export your DNN for an STM32</a></p></li> -</ul> -</section> -<section id="tutorial-on-adding-the-c-aidge"> -<h2>Tutorial on adding the C++ Aidge<a class="headerlink" href="#tutorial-on-adding-the-c-aidge" title="Link to this heading">#</a></h2> -<p>You can extend our operator coverage by adding an operator and its implementation in the C++ Aidge library. -The <a class="reference external" href="https://gitlab.eclipse.org/eclipse/aidge/aidge/-/blob/main/examples/tutorials/Hardmax_operator/operator_adding.ipynb?ref_type=heads">Add an operator and its implementation Tutorial</a> details the steps to follow.</p> -<p>For more information on contributing to Aidge, please refer to the <a class="reference external" href="https://gitlab.eclipse.org/groups/eclipse/aidge/-/wikis/Contributing">wiki</a>.</p> -<p>If you encounter any difficulty with the Tutorials, please create an issue <a class="reference external" href="https://gitlab.eclipse.org/groups/eclipse/aidge/-/issues">here</a>.</p> </section> </section> @@ -545,11 +551,9 @@ The <a class="reference external" href="https://gitlab.eclipse.org/eclipse/aidge </div> <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> <ul class="visible nav section-nav flex-column"> -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge-101">Aidge 101</a></li> -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge-dnn-fonctionnalities">Aidge DNN fonctionnalities</a></li> -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#dnn-optimization">DNN Optimization</a></li> -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#dnn-export">DNN export</a></li> -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#tutorial-on-adding-the-c-aidge">Tutorial on adding the C++ Aidge</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#aidge-functionalities">🛠Aidge functionalities</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#optimization-tutorials">âš™ï¸ Optimization tutorials</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#export-tutorials">🚀 Export tutorials</a></li> </ul> </nav></div> diff --git a/source/Tutorial/learning.html b/source/Tutorial/learning.html index d8e2677faf1b65ad45a8431079ba23faebd9a3d6..f83c26f32c7442cec9f5171db8f1e46fc4ca9a3e 100644 --- a/source/Tutorial/learning.html +++ b/source/Tutorial/learning.html @@ -63,7 +63,7 @@ <link rel="prev" title="Understanding Aidge’s scheduling" href="scheduling.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="current nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1 current active"><a class="current reference internal" href="#">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -436,13 +442,13 @@ Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu Collecting torchvision==0.14.1+cpu Downloading https://download.pytorch.org/whl/cpu/torchvision-0.14.1%2Bcpu-cp310-cp310-linux_x86_64.whl (16.8 MB) - <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">16.8/16.8 MB</span> <span class="ansi-red-fg">86.9 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> + <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">16.8/16.8 MB</span> <span class="ansi-red-fg">27.7 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> Requirement already satisfied: typing-extensions in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (4.13.2) -Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (2.2.5) +Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (2.2.6) Requirement already satisfied: requests in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (2.32.3) Collecting torch==1.13.1 (from torchvision==0.14.1+cpu) Downloading https://download.pytorch.org/whl/cpu/torch-1.13.1%2Bcpu-cp310-cp310-linux_x86_64.whl (199.1 MB) - <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">199.1/199.1 MB</span> <span class="ansi-red-fg">78.4 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> + <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">199.1/199.1 MB</span> <span class="ansi-red-fg">40.5 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (11.2.1) Requirement already satisfied: charset-normalizer<4,>=2 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests->torchvision==0.14.1+cpu) (3.4.2) Requirement already satisfied: idna<4,>=2.5 in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from requests->torchvision==0.14.1+cpu) (3.10) @@ -458,12 +464,12 @@ Successfully installed torch-1.13.1+cpu torchvision-0.14.1+cpu Collecting numpy==1.24.1 Downloading numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.6 kB) Downloading numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB) - <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">17.3/17.3 MB</span> <span class="ansi-red-fg">62.8 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> + <span class="ansi-black-intense-fg">â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”</span> <span class="ansi-green-fg">17.3/17.3 MB</span> <span class="ansi-red-fg">36.4 MB/s</span> eta <span class="ansi-cyan-fg">0:00:00</span> Installing collected packages: numpy Attempting uninstall: numpy - Found existing installation: numpy 2.2.5 - Uninstalling numpy-2.2.5: - Successfully uninstalled numpy-2.2.5 + Found existing installation: numpy 2.2.6 + Uninstalling numpy-2.2.6: + Successfully uninstalled numpy-2.2.6 Successfully installed numpy-1.24.1 </pre></div></div> </div> @@ -616,10 +622,8 @@ Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/ci <div class="nboutput docutils container"> <div class="prompt empty docutils container"> </div> -<div class="output_area stderr docutils container"> -<div class="highlight"><pre> -100.0% -</pre></div></div> +<div class="output_area docutils container"> +<script type="application/vnd.jupyter.widget-view+json">{"version_major": 2, "version_minor": 0, "model_id": "46f1f30f18c74f3898f963f6d97d8fa3"}</script></div> </div> <div class="nboutput nblast docutils container"> <div class="prompt empty docutils container"> @@ -688,15 +692,17 @@ Extracting ./data/cifar-10-python.tar.gz to ./data </div> <div class="output_area docutils container"> <div class="highlight"><pre> -Nb samples 64, loss: 0.405445396900177, acc:10.9375%, tot_acc:10.9375% -Nb samples 128, loss: 0.2865900695323944, acc:10.9375%, tot_acc:10.9375% -Nb samples 192, loss: 0.31530556082725525, acc:12.5%, tot_acc:11.458333333333332% -Nb samples 256, loss: 0.3035673499107361, acc:4.6875%, tot_acc:9.765625% -Nb samples 320, loss: 0.30495578050613403, acc:4.6875%, tot_acc:8.75% -Nb samples 384, loss: 0.2815946638584137, acc:3.125%, tot_acc:7.8125% +Nb samples 64, loss: 0.7916586995124817, acc:10.9375%, tot_acc:10.9375% +Nb samples 128, loss: 0.5616523027420044, acc:14.0625%, tot_acc:12.5% +Nb samples 192, loss: 0.486709862947464, acc:10.9375%, tot_acc:11.979166666666668% +Nb samples 256, loss: 0.3463484048843384, acc:20.3125%, tot_acc:14.0625% +Nb samples 320, loss: 0.33549389243125916, acc:15.625%, tot_acc:14.374999999999998% +Nb samples 384, loss: 0.30594590306282043, acc:14.0625%, tot_acc:14.322916666666666% </pre></div></div> </div> -</section> +<script type="application/vnd.jupyter.widget-state+json"> +{"state": {"9fb71728ae31481d80d3a4b979d8e1c7": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "2491af5fadf045c8a8d93dab89974074": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "38e9b6c3bbf14c0abcdcd2ceb93ae8ed": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_9fb71728ae31481d80d3a4b979d8e1c7", "max": 170498071.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_2491af5fadf045c8a8d93dab89974074", "tabbable": null, "tooltip": null, "value": 170498071.0}}, "8159bacfc6b74a7b8d3ca31f141e1404": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "d36587a875e24a339c4904295b025c44": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "bd94b410fc0b452a963050fb3a9b8933": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_8159bacfc6b74a7b8d3ca31f141e1404", "placeholder": "\u200b", "style": "IPY_MODEL_d36587a875e24a339c4904295b025c44", "tabbable": null, "tooltip": null, "value": "100%"}}, "70dcc171600449b1b375c4aaadf48c3f": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "cb90c09d2a684bf3aab409da80db50c9": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "be8361db28de442ab6134a256a194256": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_70dcc171600449b1b375c4aaadf48c3f", "placeholder": "\u200b", "style": "IPY_MODEL_cb90c09d2a684bf3aab409da80db50c9", "tabbable": null, "tooltip": null, "value": "\u2007170498071/170498071\u2007[00:14<00:00,\u200711955634.76it/s]"}}, "aa79a65570e74e93ae79ee5582c6c08f": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "46f1f30f18c74f3898f963f6d97d8fa3": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_bd94b410fc0b452a963050fb3a9b8933", "IPY_MODEL_38e9b6c3bbf14c0abcdcd2ceb93ae8ed", "IPY_MODEL_be8361db28de442ab6134a256a194256"], "layout": "IPY_MODEL_aa79a65570e74e93ae79ee5582c6c08f", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0} +</script></section> </section> diff --git a/source/Tutorial/learning.ipynb b/source/Tutorial/learning.ipynb index a58fb737b27bff2326368104cd340982e3f1f887..3b352b92d9e373ec98e778985b7502bde416e541 100644 --- a/source/Tutorial/learning.ipynb +++ b/source/Tutorial/learning.ipynb @@ -21,10 +21,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:21:51.549580Z", - "iopub.status.busy": "2025-05-11T15:21:51.549481Z", - "iopub.status.idle": "2025-05-11T15:22:02.698888Z", - "shell.execute_reply": "2025-05-11T15:22:02.698378Z" + "iopub.execute_input": "2025-05-19T10:05:28.434457Z", + "iopub.status.busy": "2025-05-19T10:05:28.434307Z", + "iopub.status.idle": "2025-05-19T10:05:43.303069Z", + "shell.execute_reply": "2025-05-19T10:05:43.302562Z" } }, "outputs": [ @@ -39,15 +39,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "Collecting torchvision==0.14.1+cpu\r\n" + "Collecting torchvision==0.14.1+cpu\r\n", + " Downloading https://download.pytorch.org/whl/cpu/torchvision-0.14.1%2Bcpu-cp310-cp310-linux_x86_64.whl (16.8 MB)\r\n", + "\u001b[?25l \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0.0/16.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " Downloading https://download.pytorch.org/whl/cpu/torchvision-0.14.1%2Bcpu-cp310-cp310-linux_x86_64.whl (16.8 MB)\r\n", - "\u001b[?25l \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0.0/16.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m" + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m5.2/16.8 MB\u001b[0m \u001b[31m25.7 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -55,16 +57,17 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m16.8/16.8 MB\u001b[0m \u001b[31m86.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", - "\u001b[?25h" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m10.2/16.8 MB\u001b[0m \u001b[31m25.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: typing-extensions in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (4.13.2)\r\n", - "Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (2.2.5)\r\n", + "\r", + "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m16.8/16.8 MB\u001b[0m \u001b[31m27.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", + "\u001b[?25hRequirement already satisfied: typing-extensions in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (4.13.2)\r\n", + "Requirement already satisfied: numpy in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (2.2.6)\r\n", "Requirement already satisfied: requests in /builds/eclipse/aidge/aidge/venv/lib/python3.10/site-packages (from torchvision==0.14.1+cpu) (2.32.3)\r\n" ] }, @@ -72,7 +75,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "Collecting torch==1.13.1 (from torchvision==0.14.1+cpu)\r\n", + "Collecting torch==1.13.1 (from torchvision==0.14.1+cpu)\r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ " Downloading https://download.pytorch.org/whl/cpu/torch-1.13.1%2Bcpu-cp310-cp310-linux_x86_64.whl (199.1 MB)\r\n", "\u001b[?25l \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0.0/199.1 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m" ] @@ -82,7 +91,103 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m19.4/199.1 MB\u001b[0m \u001b[31m98.9 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" + "\u001b[2K \u001b[91mâ”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m7.9/199.1 MB\u001b[0m \u001b[31m38.7 MB/s\u001b[0m eta \u001b[36m0:00:05\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m18.9/199.1 MB\u001b[0m \u001b[31m46.8 MB/s\u001b[0m eta \u001b[36m0:00:04\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m29.9/199.1 MB\u001b[0m \u001b[31m49.6 MB/s\u001b[0m eta \u001b[36m0:00:04\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m38.3/199.1 MB\u001b[0m \u001b[31m47.6 MB/s\u001b[0m eta \u001b[36m0:00:04\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m46.4/199.1 MB\u001b[0m \u001b[31m46.3 MB/s\u001b[0m eta \u001b[36m0:00:04\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m55.6/199.1 MB\u001b[0m \u001b[31m46.1 MB/s\u001b[0m eta \u001b[36m0:00:04\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m62.9/199.1 MB\u001b[0m \u001b[31m44.8 MB/s\u001b[0m eta \u001b[36m0:00:04\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m71.0/199.1 MB\u001b[0m \u001b[31m44.1 MB/s\u001b[0m eta \u001b[36m0:00:03\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m78.6/199.1 MB\u001b[0m \u001b[31m43.5 MB/s\u001b[0m eta \u001b[36m0:00:03\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m88.9/199.1 MB\u001b[0m \u001b[31m44.2 MB/s\u001b[0m eta \u001b[36m0:00:03\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m96.2/199.1 MB\u001b[0m \u001b[31m43.5 MB/s\u001b[0m eta \u001b[36m0:00:03\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m104.9/199.1 MB\u001b[0m \u001b[31m43.4 MB/s\u001b[0m eta \u001b[36m0:00:03\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m111.1/199.1 MB\u001b[0m \u001b[31m42.6 MB/s\u001b[0m eta \u001b[36m0:00:03\u001b[0m" ] }, { @@ -90,7 +195,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m39.1/199.1 MB\u001b[0m \u001b[31m98.0 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m119.3/199.1 MB\u001b[0m \u001b[31m42.4 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" ] }, { @@ -98,7 +203,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m58.2/199.1 MB\u001b[0m \u001b[31m97.9 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m129.5/199.1 MB\u001b[0m \u001b[31m43.1 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" ] }, { @@ -106,7 +211,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m79.2/199.1 MB\u001b[0m \u001b[31m99.4 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m136.6/199.1 MB\u001b[0m \u001b[31m42.4 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" ] }, { @@ -114,7 +219,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m95.9/199.1 MB\u001b[0m \u001b[31m95.8 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m145.0/199.1 MB\u001b[0m \u001b[31m42.4 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" ] }, { @@ -122,7 +227,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m113.0/199.1 MB\u001b[0m \u001b[31m94.2 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”\u001b[0m \u001b[32m152.6/199.1 MB\u001b[0m \u001b[31m42.2 MB/s\u001b[0m eta \u001b[36m0:00:02\u001b[0m" ] }, { @@ -130,7 +235,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m127.7/199.1 MB\u001b[0m \u001b[31m90.9 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”\u001b[0m \u001b[32m161.2/199.1 MB\u001b[0m \u001b[31m42.2 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -138,7 +243,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m146.3/199.1 MB\u001b[0m \u001b[31m91.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”\u001b[0m \u001b[32m170.1/199.1 MB\u001b[0m \u001b[31m42.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -146,7 +251,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”\u001b[0m \u001b[32m159.1/199.1 MB\u001b[0m \u001b[31m91.4 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”\u001b[0m \u001b[32m178.8/199.1 MB\u001b[0m \u001b[31m42.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -154,7 +259,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”\u001b[0m \u001b[32m167.0/199.1 MB\u001b[0m \u001b[31m83.2 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”\u001b[0m \u001b[32m186.9/199.1 MB\u001b[0m \u001b[31m42.2 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -162,7 +267,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”\u001b[0m \u001b[32m182.2/199.1 MB\u001b[0m \u001b[31m82.5 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m \u001b[32m194.5/199.1 MB\u001b[0m \u001b[31m42.0 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -170,7 +275,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m199.0/199.1 MB\u001b[0m \u001b[31m84.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m199.0/199.1 MB\u001b[0m \u001b[31m42.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -178,7 +283,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m199.1/199.1 MB\u001b[0m \u001b[31m78.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", + "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m199.1/199.1 MB\u001b[0m \u001b[31m40.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", "\u001b[?25h" ] }, @@ -422,6 +527,22 @@ "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0/2\u001b[0m [torch]" ] }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m0/2\u001b[0m [torch]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[90m╺\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m1/2\u001b[0m [torchvision]" + ] + }, { "name": "stdout", "output_type": "stream", @@ -461,7 +582,7 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m12.1/17.3 MB\u001b[0m \u001b[31m70.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m6.0/17.3 MB\u001b[0m \u001b[31m33.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { @@ -469,25 +590,27 @@ "output_type": "stream", "text": [ "\r", - "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m17.3/17.3 MB\u001b[0m \u001b[31m62.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", - "\u001b[?25h" + "\u001b[2K \u001b[91mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m\u001b[91m╸\u001b[0m\u001b[90mâ”â”â”â”â”\u001b[0m \u001b[32m14.9/17.3 MB\u001b[0m \u001b[31m39.1 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Installing collected packages: numpy\r\n", - " Attempting uninstall: numpy\r\n", - " Found existing installation: numpy 2.2.5\r\n" + "\r", + "\u001b[2K \u001b[90mâ”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”\u001b[0m \u001b[32m17.3/17.3 MB\u001b[0m \u001b[31m36.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\r\n", + "\u001b[?25h" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " Uninstalling numpy-2.2.5:\r\n", - " Successfully uninstalled numpy-2.2.5\r\n" + "Installing collected packages: numpy\r\n", + " Attempting uninstall: numpy\r\n", + " Found existing installation: numpy 2.2.6\r\n", + " Uninstalling numpy-2.2.6:\r\n", + " Successfully uninstalled numpy-2.2.6\r\n" ] }, { @@ -515,10 +638,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:02.700470Z", - "iopub.status.busy": "2025-05-11T15:22:02.700367Z", - "iopub.status.idle": "2025-05-11T15:22:02.702275Z", - "shell.execute_reply": "2025-05-11T15:22:02.702006Z" + "iopub.execute_input": "2025-05-19T10:05:43.304935Z", + "iopub.status.busy": "2025-05-19T10:05:43.304745Z", + "iopub.status.idle": "2025-05-19T10:05:43.306869Z", + "shell.execute_reply": "2025-05-19T10:05:43.306589Z" } }, "outputs": [], @@ -539,10 +662,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:02.703219Z", - "iopub.status.busy": "2025-05-11T15:22:02.703064Z", - "iopub.status.idle": "2025-05-11T15:22:03.341263Z", - "shell.execute_reply": "2025-05-11T15:22:03.340837Z" + "iopub.execute_input": "2025-05-19T10:05:43.308116Z", + "iopub.status.busy": "2025-05-19T10:05:43.307876Z", + "iopub.status.idle": "2025-05-19T10:05:44.114869Z", + "shell.execute_reply": "2025-05-19T10:05:44.114503Z" } }, "outputs": [], @@ -576,10 +699,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:03.343028Z", - "iopub.status.busy": "2025-05-11T15:22:03.342895Z", - "iopub.status.idle": "2025-05-11T15:22:03.345116Z", - "shell.execute_reply": "2025-05-11T15:22:03.344840Z" + "iopub.execute_input": "2025-05-19T10:05:44.116525Z", + "iopub.status.busy": "2025-05-19T10:05:44.116350Z", + "iopub.status.idle": "2025-05-19T10:05:44.118757Z", + "shell.execute_reply": "2025-05-19T10:05:44.118481Z" } }, "outputs": [], @@ -609,10 +732,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:03.346028Z", - "iopub.status.busy": "2025-05-11T15:22:03.345940Z", - "iopub.status.idle": "2025-05-11T15:22:03.377583Z", - "shell.execute_reply": "2025-05-11T15:22:03.377244Z" + "iopub.execute_input": "2025-05-19T10:05:44.119853Z", + "iopub.status.busy": "2025-05-19T10:05:44.119718Z", + "iopub.status.idle": "2025-05-19T10:05:44.153961Z", + "shell.execute_reply": "2025-05-19T10:05:44.153602Z" } }, "outputs": [], @@ -662,10 +785,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:03.378442Z", - "iopub.status.busy": "2025-05-11T15:22:03.378357Z", - "iopub.status.idle": "2025-05-11T15:22:03.381105Z", - "shell.execute_reply": "2025-05-11T15:22:03.380830Z" + "iopub.execute_input": "2025-05-19T10:05:44.155031Z", + "iopub.status.busy": "2025-05-19T10:05:44.154907Z", + "iopub.status.idle": "2025-05-19T10:05:44.158034Z", + "shell.execute_reply": "2025-05-19T10:05:44.157761Z" } }, "outputs": [], @@ -710,10 +833,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:03.381962Z", - "iopub.status.busy": "2025-05-11T15:22:03.381873Z", - "iopub.status.idle": "2025-05-11T15:22:19.873750Z", - "shell.execute_reply": "2025-05-11T15:22:19.873408Z" + "iopub.execute_input": "2025-05-19T10:05:44.158928Z", + "iopub.status.busy": "2025-05-19T10:05:44.158829Z", + "iopub.status.idle": "2025-05-19T10:06:00.923384Z", + "shell.execute_reply": "2025-05-19T10:06:00.922949Z" } }, "outputs": [ @@ -725,41777 +848,152 @@ ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.1%" - ] + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "46f1f30f18c74f3898f963f6d97d8fa3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/170498071 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.2%" + "Extracting ./data/cifar-10-python.tar.gz to ./data\n" ] - }, + } + ], + "source": [ + "aidge_database = aidge_cifar10()\n", + "BATCH_SIZE = 64\n", + "aidge_dataprovider = aidge_core.DataProvider(aidge_database,\n", + " backend=BACKEND,\n", + " batch_size=BATCH_SIZE,\n", + " shuffle=True,\n", + " drop_last=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up learning objects\n", + "\n", + "We now have all the basic elements required to run the leanring. We just need to setup the object specific to the learning and we will be able to write our first training loop !\n", + "\n", + "For propagation and backpropagation, Aidge use scheduler object, we will use the ``SequentialScheduler``.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:00.925258Z", + "iopub.status.busy": "2025-05-19T10:06:00.925143Z", + "iopub.status.idle": "2025-05-19T10:06:00.927202Z", + "shell.execute_reply": "2025-05-19T10:06:00.926925Z" + } + }, + "outputs": [], + "source": [ + "# Set object for learning\n", + "scheduler = aidge_core.SequentialScheduler(model)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To update weights, we will use an optimizer, in this case SGD." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:00.928446Z", + "iopub.status.busy": "2025-05-19T10:06:00.928328Z", + "iopub.status.idle": "2025-05-19T10:06:00.930274Z", + "shell.execute_reply": "2025-05-19T10:06:00.930008Z" + } + }, + "outputs": [], + "source": [ + "# setup optimizer\n", + "opt = aidge_learning.SGD()\n", + "learning_rates = aidge_learning.constant_lr(0.01)\n", + "opt.set_learning_rate_scheduler(learning_rates)\n", + "opt.set_parameters(list(aidge_core.producers(model)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Training loop " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:00.931138Z", + "iopub.status.busy": "2025-05-19T10:06:00.931028Z", + "iopub.status.idle": "2025-05-19T10:06:04.523052Z", + "shell.execute_reply": "2025-05-19T10:06:04.522775Z" + } + }, + "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.2%" + "Nb samples 64, loss: 0.7916586995124817, acc:10.9375%, tot_acc:10.9375%\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.2%" + "Nb samples 128, loss: 0.5616523027420044, acc:14.0625%, tot_acc:12.5%\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.2%" + "Nb samples 192, loss: 0.486709862947464, acc:10.9375%, tot_acc:11.979166666666668%\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.2%" + "Nb samples 256, loss: 0.3463484048843384, acc:20.3125%, tot_acc:14.0625%\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.2%" + "Nb samples 320, loss: 0.33549389243125916, acc:15.625%, tot_acc:14.374999999999998%\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\r", - "0.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "0.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "1.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "2.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "3.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "4.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "5.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "6.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "7.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "8.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "9.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "10.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "11.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "12.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "13.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "14.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "15.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "16.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "17.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "18.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "19.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "20.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "21.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "22.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "23.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "24.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "25.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "26.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "27.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "28.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "29.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "30.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "31.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "32.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "33.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "34.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "35.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "36.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "37.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "38.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "39.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "40.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "41.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "42.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "43.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "44.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "45.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "46.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "47.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "48.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "49.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "50.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "51.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "52.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "53.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "54.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "55.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "56.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "57.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "58.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "59.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "60.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "61.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "62.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "63.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "64.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "65.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "66.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "67.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "68.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "69.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "70.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "71.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "72.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "73.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "74.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "75.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "76.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "77.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "78.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "79.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "80.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "81.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "82.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "83.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "84.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "85.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "86.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "87.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "88.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "89.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "90.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "91.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "92.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "93.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "94.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "95.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "96.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "97.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "98.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.1%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.2%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.3%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.4%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.5%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.6%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.7%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.8%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "99.9%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "100.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "100.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "100.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\r", - "100.0%" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extracting ./data/cifar-10-python.tar.gz to ./data\n" - ] - } - ], - "source": [ - "aidge_database = aidge_cifar10()\n", - "BATCH_SIZE = 64\n", - "aidge_dataprovider = aidge_core.DataProvider(aidge_database,\n", - " backend=BACKEND,\n", - " batch_size=BATCH_SIZE,\n", - " shuffle=True,\n", - " drop_last=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set up learning objects\n", - "\n", - "We now have all the basic elements required to run the leanring. We just need to setup the object specific to the learning and we will be able to write our first training loop !\n", - "\n", - "For propagation and backpropagation, Aidge use scheduler object, we will use the ``SequentialScheduler``.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "execution": { - "iopub.execute_input": "2025-05-11T15:22:19.875263Z", - "iopub.status.busy": "2025-05-11T15:22:19.875170Z", - "iopub.status.idle": "2025-05-11T15:22:19.876930Z", - "shell.execute_reply": "2025-05-11T15:22:19.876720Z" - } - }, - "outputs": [], - "source": [ - "# Set object for learning\n", - "scheduler = aidge_core.SequentialScheduler(model)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To update weights, we will use an optimizer, in this case SGD." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "execution": { - "iopub.execute_input": "2025-05-11T15:22:19.877774Z", - "iopub.status.busy": "2025-05-11T15:22:19.877687Z", - "iopub.status.idle": "2025-05-11T15:22:19.879395Z", - "shell.execute_reply": "2025-05-11T15:22:19.879192Z" - } - }, - "outputs": [], - "source": [ - "# setup optimizer\n", - "opt = aidge_learning.SGD()\n", - "learning_rates = aidge_learning.constant_lr(0.01)\n", - "opt.set_learning_rate_scheduler(learning_rates)\n", - "opt.set_parameters(list(aidge_core.producers(model)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Training loop " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "execution": { - "iopub.execute_input": "2025-05-11T15:22:19.880284Z", - "iopub.status.busy": "2025-05-11T15:22:19.880118Z", - "iopub.status.idle": "2025-05-11T15:22:23.176254Z", - "shell.execute_reply": "2025-05-11T15:22:23.175940Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nb samples 64, loss: 0.405445396900177, acc:10.9375%, tot_acc:10.9375%\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nb samples 128, loss: 0.2865900695323944, acc:10.9375%, tot_acc:10.9375%\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nb samples 192, loss: 0.31530556082725525, acc:12.5%, tot_acc:11.458333333333332%\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nb samples 256, loss: 0.3035673499107361, acc:4.6875%, tot_acc:9.765625%\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nb samples 320, loss: 0.30495578050613403, acc:4.6875%, tot_acc:8.75%\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Nb samples 384, loss: 0.2815946638584137, acc:3.125%, tot_acc:7.8125%\n" + "Nb samples 384, loss: 0.30594590306282043, acc:14.0625%, tot_acc:14.322916666666666%\n" ] } ], @@ -42524,7 +1022,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "aidge", "language": "python", "name": "python3" }, @@ -42539,6 +1037,374 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": { + "2491af5fadf045c8a8d93dab89974074": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "38e9b6c3bbf14c0abcdcd2ceb93ae8ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_9fb71728ae31481d80d3a4b979d8e1c7", + "max": 170498071.0, + "min": 0.0, + "orientation": "horizontal", + "style": "IPY_MODEL_2491af5fadf045c8a8d93dab89974074", + "tabbable": null, + "tooltip": null, + "value": 170498071.0 + } + }, + "46f1f30f18c74f3898f963f6d97d8fa3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_bd94b410fc0b452a963050fb3a9b8933", + "IPY_MODEL_38e9b6c3bbf14c0abcdcd2ceb93ae8ed", + "IPY_MODEL_be8361db28de442ab6134a256a194256" + ], + "layout": "IPY_MODEL_aa79a65570e74e93ae79ee5582c6c08f", + "tabbable": null, + "tooltip": null + } + }, + "70dcc171600449b1b375c4aaadf48c3f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8159bacfc6b74a7b8d3ca31f141e1404": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9fb71728ae31481d80d3a4b979d8e1c7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aa79a65570e74e93ae79ee5582c6c08f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bd94b410fc0b452a963050fb3a9b8933": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8159bacfc6b74a7b8d3ca31f141e1404", + "placeholder": "​", + "style": "IPY_MODEL_d36587a875e24a339c4904295b025c44", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "be8361db28de442ab6134a256a194256": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_70dcc171600449b1b375c4aaadf48c3f", + "placeholder": "​", + "style": "IPY_MODEL_cb90c09d2a684bf3aab409da80db50c9", + "tabbable": null, + "tooltip": null, + "value": " 170498071/170498071 [00:14<00:00, 11955634.76it/s]" + } + }, + "cb90c09d2a684bf3aab409da80db50c9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "d36587a875e24a339c4904295b025c44": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + } + }, + "version_major": 2, + "version_minor": 0 + } } }, "nbformat": 4, diff --git a/source/Tutorial/ptq.html b/source/Tutorial/ptq.html index cb1e4dada39fcd346f4a3521eecbc5be4479e04d..546b81429eee25c0fd96115f63669204ebbf92b1 100644 --- a/source/Tutorial/ptq.html +++ b/source/Tutorial/ptq.html @@ -60,10 +60,10 @@ <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> <link rel="next" title="Aidge tiling demonstration" href="tiling.html" /> - <link rel="prev" title="Aidge ONNX tutorial" href="ONNX.html" /> + <link rel="prev" title="Backend CUDA example" href="backend_cuda.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="current nav bd-sidenav"> <li class="toctree-l1 current active"><a class="current reference internal" href="#">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -895,12 +901,12 @@ That's all folks ! <div class="prev-next-area"> <a class="left-prev" - href="ONNX.html" + href="backend_cuda.html" title="previous page"> <i class="fa-solid fa-angle-left"></i> <div class="prev-next-info"> <p class="prev-next-subtitle">previous</p> - <p class="prev-next-title">Aidge ONNX tutorial</p> + <p class="prev-next-title">Backend CUDA example</p> </div> </a> <a class="right-next" diff --git a/source/Tutorial/scheduling.html b/source/Tutorial/scheduling.html index 6a8a977b30419dda4bb7ab40c736d870a1939d9a..5aa15e1c4d0da86aba9aa6e72c0073a0aa2dc947 100644 --- a/source/Tutorial/scheduling.html +++ b/source/Tutorial/scheduling.html @@ -60,10 +60,10 @@ <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> <link rel="next" title="Training a simple Neural Network" href="learning.html" /> - <link rel="prev" title="Graph matching and manipulation with Aidge" href="graph_matching.html" /> + <link rel="prev" title="Graph matching and manipulation" href="graph_matching.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="current nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1 current active"><a class="current reference internal" href="#">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -851,7 +857,7 @@ possible.</p> <i class="fa-solid fa-angle-left"></i> <div class="prev-next-info"> <p class="prev-next-subtitle">previous</p> - <p class="prev-next-title">Graph matching and manipulation with Aidge</p> + <p class="prev-next-title">Graph matching and manipulation</p> </div> </a> <a class="right-next" diff --git a/source/Tutorial/static_analysis.html b/source/Tutorial/static_analysis.html new file mode 100644 index 0000000000000000000000000000000000000000..665c9ac6137d9cf4aa11b9999f42d61bec7168eb --- /dev/null +++ b/source/Tutorial/static_analysis.html @@ -0,0 +1,969 @@ + +<!DOCTYPE html> + + +<html lang="en" data-content_root="../../" > + + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <title>Perform static analysis on a neural network model — Eclipse Aidge documentation</title> + + + + <script data-cfasync="false"> + document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; + document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; + </script> + <!-- + this give us a css class that will be invisible only if js is disabled + --> + <noscript> + <style> + .pst-js-only { display: none !important; } + + </style> + </noscript> + + <!-- Loaded before other Sphinx assets --> + <link href="../../_static/styles/theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> +<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8878045cc6db502f8baf" rel="stylesheet" /> + + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" /> + <link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=4ae1632d" /> + <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css?v=76b2166b" /> + <link rel="stylesheet" type="text/css" href="../../_static/sg_gallery.css?v=d2d258e8" /> + <link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css?v=abb81387" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/id.css?v=5eddeb79" /> + + <!-- So that users can add custom icons --> + <script src="../../_static/scripts/fontawesome.js?digest=8878045cc6db502f8baf"></script> + <!-- Pre-loaded scripts that we'll load fully later --> + <link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf" /> +<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf" /> + + <script src="../../_static/documentation_options.js?v=5929fcd5"></script> + <script src="../../_static/doctools.js?v=9bcbadda"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script src="../../_static/clipboard.min.js?v=a7894cd8"></script> + <script src="../../_static/copybutton.js?v=f281be69"></script> + <script src="../../_static/design-tabs.js?v=f930bc37"></script> + <script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script>DOCUMENTATION_OPTIONS.pagename = 'source/Tutorial/static_analysis';</script> + <script src="../../_static/js/mermaid.min.js"></script> + <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> + <link rel="index" title="Index" href="../../genindex.html" /> + <link rel="search" title="Search" href="../../search.html" /> + <link rel="next" title="Backend CUDA example" href="backend_cuda.html" /> + <link rel="prev" title="Aidge ONNX tutorial" href="ONNX.html" /> + <meta name="viewport" content="width=device-width, initial-scale=1"/> + <meta name="docsearch:language" content="en"/> + <meta name="docsearch:version" content="0.6.1" /> + </head> + + + <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> + + + + <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> + + <div id="pst-scroll-pixel-helper"></div> + + <button type="button" class="btn rounded-pill" id="pst-back-to-top"> + <i class="fa-solid fa-arrow-up"></i>Back to top</button> + + + <dialog id="pst-search-dialog"> + +<form class="bd-search d-flex align-items-center" + action="../../search.html" + method="get"> + <i class="fa-solid fa-magnifying-glass"></i> + <input type="search" + class="form-control" + name="q" + placeholder="Search the docs ..." + aria-label="Search the docs ..." + autocomplete="off" + autocorrect="off" + autocapitalize="off" + spellcheck="false"/> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> +</form> + </dialog> + + <div class="pst-async-banner-revealer d-none"> + <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> +</div> + + + <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> +<div class="bd-header__inner bd-page-width"> + <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation"> + <span class="fa-solid fa-bars"></span> + </button> + + + <div class="col-lg-3 navbar-header-items__start"> + + <div class="navbar-item"> + + + + + +<a class="navbar-brand logo" href="../../index.html"> + + + + + + + + + + + <img src="../../_static/Isotype-aidge.png" class="logo__image only-light" alt=""/> + <img src="../../_static/Isotype-aidge.png" class="logo__image only-dark pst-js-only" alt=""/> + + + <p class="title logo__title">Eclipse Aidge</p> + +</a></div> + + </div> + + <div class="col-lg-9 navbar-header-items"> + + <div class="me-auto navbar-header-items__center"> + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + </div> + + + <div class="navbar-header-items__end"> + + <div class="navbar-item navbar-persistent--container"> + + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + + <div class="navbar-persistent--mobile"> + +<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="fa-solid fa-magnifying-glass"></i> + <span class="search-button__default-text">Search</span> + <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> +</button> + </div> + + + + <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page"> + <span class="fa-solid fa-outdent"></span> + </button> + +</div> + + </header> + + + <div class="bd-container"> + <div class="bd-container__inner bd-page-width"> + + + + <dialog id="pst-primary-sidebar-modal"></dialog> + <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar"> + + + + <div class="sidebar-header-items sidebar-primary__section"> + + + <div class="sidebar-header-items__center"> + + + + <div class="navbar-item"> +<nav> + <ul class="bd-navbar-elements navbar-nav"> + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../GetStarted/index.html"> + Get Started + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../UserGuide/index.html"> + User Guide + </a> +</li> + + +<li class="nav-item current active"> + <a class="nav-link nav-internal" href="index.html"> + Tutorials + </a> +</li> + + +<li class="nav-item "> + <a class="nav-link nav-internal" href="../API/index.html"> + API + </a> +</li> + + </ul> +</nav></div> + + + </div> + + + + <div class="sidebar-header-items__end"> + + <div class="navbar-item"> + +<button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button pst-js-only" aria-label="Color mode" data-bs-title="Color mode" data-bs-placement="bottom" data-bs-toggle="tooltip"> + <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light" title="Light"></i> + <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark" title="Dark"></i> + <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto" title="System Settings"></i> +</button></div> + + <div class="navbar-item"><ul class="navbar-icon-links" + aria-label="Icon Links"> + <li class="nav-item"> + + + + + + + + + <a href="https://gitlab.eclipse.org/eclipse/aidge" title="GitLab" class="nav-link pst-navbar-icon" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><i class="fab fa-gitlab fa-lg" aria-hidden="true"></i> + <span class="sr-only">GitLab</span></a> + </li> +</ul></div> + + </div> + + </div> + + <div class="sidebar-primary-items__start sidebar-primary__section"> + <div class="sidebar-primary-item"> +<nav class="bd-docs-nav bd-links" + aria-label="Section Navigation"> + <p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p> + <div class="bd-toc-item navbar-nav"><ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> +</ul> +<ul class="current nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> +<li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> +<li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> +<li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1 current active"><a class="current reference internal" href="#">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> +<li class="toctree-l1"><a class="reference internal" href="tiling.html">Aidge tiling demonstration</a></li> +</ul> +<ul class="nav bd-sidenav"> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> +</ul> +</div> +</nav></div> + </div> + + + <div class="sidebar-primary-items__end sidebar-primary__section"> + <div class="sidebar-primary-item"> +<div id="ethical-ad-placement" + class="flat" + data-ea-publisher="readthedocs" + data-ea-type="readthedocs-sidebar" + data-ea-manual="true"> +</div></div> + </div> + + + </div> + + <main id="main-content" class="bd-main" role="main"> + + + <div class="bd-content"> + <div class="bd-article-container"> + + <div class="bd-header-article d-print-none"> +<div class="header-article-items header-article__inner"> + + <div class="header-article-items__start"> + + <div class="header-article-item"> + +<nav aria-label="Breadcrumb" class="d-print-none"> + <ul class="bd-breadcrumbs"> + + <li class="breadcrumb-item breadcrumb-home"> + <a href="../../index.html" class="nav-link" aria-label="Home"> + <i class="fa-solid fa-home"></i> + </a> + </li> + + <li class="breadcrumb-item"><a href="index.html" class="nav-link">Tutorials</a></li> + + <li class="breadcrumb-item active" aria-current="page"><span class="ellipsis">Perform static analysis on a neural network model</span></li> + </ul> +</nav> +</div> + + </div> + + +</div> +</div> + + + + +<div id="searchbox"></div> + <article class="bd-article"> + + <section id="Perform-static-analysis-on-a-neural-network-model"> +<h1>Perform static analysis on a neural network model<a class="headerlink" href="#Perform-static-analysis-on-a-neural-network-model" title="Link to this heading">#</a></h1> +<p>In this tutorial, we employ Aidge’s <code class="docutils literal notranslate"><span class="pre">static</span> <span class="pre">analysis</span></code> module to evaluate the DINOv2 model.</p> +<section id="Setting-up-the-notebook"> +<h2>Setting up the notebook<a class="headerlink" href="#Setting-up-the-notebook" title="Link to this heading">#</a></h2> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[1]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Import Aidge modules</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">aidge_onnx</span> + +<span class="c1"># Select low verbose mode</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">Log</span><span class="o">.</span><span class="n">set_console_level</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">Level</span><span class="o">.</span><span class="n">Error</span><span class="p">)</span> + +<span class="c1"># Import module to show images in the notebook</span> +<span class="kn">from</span><span class="w"> </span><span class="nn">IPython.display</span><span class="w"> </span><span class="kn">import</span> <span class="n">Image</span> + +<span class="c1"># Import some utility modules</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">os</span> +<span class="kn">import</span><span class="w"> </span><span class="nn">requests</span> +<br/></pre></div> +</div> +</div> +</section> +<section id="(if-needed)-Download-the-model"> +<h2>(if needed) Download the model<a class="headerlink" href="#(if-needed)-Download-the-model" title="Link to this heading">#</a></h2> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[2]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Download the DINOv2 model ONNX file, if this has not been done yet</span> +<span class="n">file_url</span> <span class="o">=</span> <span class="s2">"https://huggingface.co/EclipseAidge/dinov2/resolve/main/dinov2.onnx?download=true"</span> +<span class="n">file_path</span> <span class="o">=</span> <span class="s2">"dinov2.onnx"</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">download_file</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">file_url</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area stderr docutils container"> +<div class="highlight"><pre> +dinov2.onnx: 100%|██████████| 82.7M/82.7M [00:01<00:00, 84.0MB/s] +</pre></div></div> +</div> +</section> +<section id="Import-the-ONNX-model-into-Aidge"> +<h2>Import the ONNX model into Aidge<a class="headerlink" href="#Import-the-ONNX-model-into-Aidge" title="Link to this heading">#</a></h2> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># We rely on the Aidge ONNX module, which provides an interface between ONNX operators and Aidge's internal representation</span> +<span class="n">dinov2_model</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">load_onnx</span><span class="p">(</span><span class="s2">"dinov2.onnx"</span><span class="p">)</span> + +<span class="c1"># Verify Aidge's native operators coverage for this model</span> +<span class="n">aidge_onnx</span><span class="o">.</span><span class="n">native_coverage_report</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Native operators: 824 (17 types) +- Add: 159 +- Concat: 1 +- Conv2D: 1 +- Div: 49 +- Erf: 12 +- Gather: 1 +- MatMul: 72 +- Mul: 73 +- Pow: 25 +- Producer: 209 +- ReduceMean: 50 +- Reshape: 49 +- Softmax: 12 +- Split: 12 +- Sqrt: 25 +- Sub: 25 +- Transpose: 49 +Generic operators: 0 (0 types) +Native types coverage: 100.0% (17/17) +Native operators coverage: 100.0% (824/824) +</pre></div></div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[3]: +</pre></div> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +(defaultdict(int, + {'Add': 159, + 'ReduceMean': 50, + 'Reshape': 49, + 'Pow': 25, + 'Sub': 25, + 'Split': 12, + 'MatMul': 72, + 'Mul': 73, + 'Div': 49, + 'Sqrt': 25, + 'Erf': 12, + 'Gather': 1, + 'Transpose': 49, + 'Softmax': 12, + 'Producer': 209, + 'Concat': 1, + 'Conv2D': 1}), + defaultdict(int, {})) +</pre></div></div> +</div> +</section> +<section id="Explore-a-handful-of-graph-transformations"> +<h2>Explore a handful of graph transformations<a class="headerlink" href="#Explore-a-handful-of-graph-transformations" title="Link to this heading">#</a></h2> +<p>In this section we use some of Aidge’s recipes to simplify the model graph.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[4]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create a clone of the original model to be used for comparison later</span> +<span class="n">clone_dinov2</span> <span class="o">=</span> <span class="n">dinov2_model</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span> + +<span class="c1"># Simplify the model using meta-operators via the ``fuse_to_metaops`` recipe</span> +<span class="c1"># In this context we use Graph Regex to specify which sequence of operators must be replaced by a given meta operator</span> +<span class="n">aidge_core</span><span class="o">.</span><span class="n">fuse_to_metaops</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">,</span> <span class="s2">"MatMul-*>Add"</span><span class="p">,</span> <span class="s2">"Linear"</span><span class="p">)</span> + +<span class="n">aidge_core</span><span class="o">.</span><span class="n">fuse_to_metaops</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">,</span> <span class="s2">"ReduceMean-*>Sub#1~>(Pow#1->ReduceMean-*>Add#1->Sqrt)-*>Div#1-*>Mul#1-*>Add#2;"</span> + <span class="s2">"Sub#1~*>Div#1;"</span> + <span class="s2">"Pow#1<1~Producer;"</span> + <span class="s2">"Add#1<*~Producer;"</span> + <span class="s2">"Mul#1<*~Producer;"</span> + <span class="s2">"Add#2<*~Producer;"</span> + <span class="s2">"Sub#1~>$"</span><span class="p">,</span> <span class="s2">"LayerNorm"</span><span class="p">)</span> + +<span class="n">aidge_core</span><span class="o">.</span><span class="n">fuse_to_metaops</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">,</span> <span class="s2">"MatMul->Div#1->Softmax-*>MatMul;"</span> + <span class="s2">"Div#1<1~Producer"</span><span class="p">,</span> <span class="s2">"ScaledDotProductAttention"</span><span class="p">)</span> + +<span class="n">aidge_core</span><span class="o">.</span><span class="n">fuse_to_metaops</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">,</span> <span class="s2">"ScaledDotProductAttention#1->Transpose->Reshape#1->Linear;"</span> + <span class="s2">"Reshape#1<1~Producer;"</span> + <span class="s2">"ScaledDotProductAttention#1<0-(Transpose<-Reshape#2<-Add#1);"</span> + <span class="s2">"ScaledDotProductAttention#1<1-(Transpose<-Reshape#3<-Add#2);"</span> + <span class="s2">"ScaledDotProductAttention#1<2-(Transpose<-Reshape#4<-Add#3);"</span> + <span class="s2">"Reshape#2<1~Producer;"</span> + <span class="s2">"Add#1<*-0-Split#1;"</span> + <span class="s2">"Add#2<*-1-Split#1;"</span> + <span class="s2">"Add#3<*-2-Split#1;"</span> + <span class="s2">"Split#1<-MatMul;"</span> + <span class="s2">"Split#1<1~Producer"</span><span class="p">,</span> <span class="s2">"MultiHeadAttention"</span><span class="p">)</span> + +<span class="n">aidge_core</span><span class="o">.</span><span class="n">fuse_to_metaops</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">,</span> <span class="s2">"Div#1->Erf->Add#1-*>Mul->Mul#2;"</span> + <span class="s2">"Div#1<1~Producer;"</span> + <span class="s2">"Add#1<*~Producer;"</span> + <span class="s2">"Mul#2<*~Producer"</span><span class="p">,</span> <span class="s2">"GeLU"</span><span class="p">)</span> + +<span class="n">dinov2_model</span><span class="o">.</span><span class="n">set_ordered_outputs</span><span class="p">([</span><span class="n">dinov2_model</span><span class="o">.</span><span class="n">get_ordered_outputs</span><span class="p">()[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">inputs</span><span class="p">()[</span><span class="mi">0</span><span class="p">],</span> <span class="n">dinov2_model</span><span class="o">.</span><span class="n">get_ordered_outputs</span><span class="p">()[</span><span class="mi">0</span><span class="p">]])</span> +</pre></div> +</div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[5]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># After creating meta-operators, we can verify the updated total number of operators in the graph</span> +<span class="n">_</span> <span class="o">=</span> <span class="n">aidge_onnx</span><span class="o">.</span><span class="n">native_coverage_report</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +Native operators: 277 (12 types) +- Add: 25 +- Concat: 1 +- Conv2D: 1 +- Gather: 1 +- GeLU: 12 +- LayerNorm: 25 +- Linear: 24 +- Mul: 24 +- MultiHeadAttention: 12 +- Producer: 150 +- Reshape: 1 +- Transpose: 1 +Generic operators: 0 (0 types) +Native types coverage: 100.0% (12/12) +Native operators coverage: 100.0% (277/277) +</pre></div></div> +</div> +<p>The number of operators is reduced from 824 (17 unique) to 277 (12 unique), as depicted in the following image.</p> +<p><img alt="./static/dino_sim.png" src="../../_images/dino_sim.png" /></p> +</section> +<section id="Run-static-analysis"> +<h2>Run static analysis<a class="headerlink" href="#Run-static-analysis" title="Link to this heading">#</a></h2> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[6]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_core.static_analysis</span> + +<span class="c1"># Input dimensions must be forwarded for static analysis</span> +<span class="n">dinov2_model</span><span class="o">.</span><span class="n">forward_dims</span><span class="p">(</span><span class="n">dims</span><span class="o">=</span><span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">224</span><span class="p">,</span><span class="mi">224</span><span class="p">]],</span> <span class="n">allow_data_dependency</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + +<span class="n">dinov2_stats</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">static_analysis</span><span class="o">.</span><span class="n">StaticAnalysis</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">)</span> +<span class="n">dinov2_stats</span><span class="o">.</span><span class="n">summary</span><span class="p">()</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +-------------------------------------------------------------------------------- + Layer (type) Output Shape Param # +================================================================================ +embeddings_patch_embeddings_projection_Conv (Conv2D#0) [1, 384, 16, 16] 226176 +embeddings_patch_embeddings_Reshape (Reshape#0) [1, 384, 256] 3 +embeddings_patch_embeddings_Transpose (Transpose#0) [1, 256, 384] 0 + embeddings_Concat (Concat#0) [1, 257, 384] 384 + embeddings_Add (Add#0) [1, 257, 384] 98688 + (LayerNorm#0) [1, 257, 384] 770 + (MultiHeadAttention#0) [1, 257, 384] 591370 +encoder_layer_0_layer_scale1_Mul (Mul#0) [1, 257, 384] 384 + encoder_layer_0_Add (Add#1) [1, 257, 384] 0 + (LayerNorm#1) [1, 257, 384] 770 + (Linear#0) [1, 257, 1536] 591360 + (GeLU#0) [1, 257, 1536] 3 + (Linear#1) [1, 257, 384] 590208 +encoder_layer_0_layer_scale2_Mul (Mul#1) [1, 257, 384] 384 + encoder_layer_0_Add_1 (Add#2) [1, 257, 384] 0 + (LayerNorm#2) [1, 257, 384] 770 + (MultiHeadAttention#1) [1, 257, 384] 591370 +encoder_layer_1_layer_scale1_Mul (Mul#2) [1, 257, 384] 384 + encoder_layer_1_Add (Add#3) [1, 257, 384] 0 + (LayerNorm#3) [1, 257, 384] 770 + (Linear#2) [1, 257, 1536] 591360 + (GeLU#1) [1, 257, 1536] 3 + (Linear#3) [1, 257, 384] 590208 +encoder_layer_1_layer_scale2_Mul (Mul#3) [1, 257, 384] 384 + encoder_layer_1_Add_1 (Add#4) [1, 257, 384] 0 + (LayerNorm#4) [1, 257, 384] 770 + (MultiHeadAttention#2) [1, 257, 384] 591370 +encoder_layer_2_layer_scale1_Mul (Mul#4) [1, 257, 384] 384 + encoder_layer_2_Add (Add#5) [1, 257, 384] 0 + (LayerNorm#5) [1, 257, 384] 770 + (Linear#4) [1, 257, 1536] 591360 + (GeLU#2) [1, 257, 1536] 3 + (Linear#5) [1, 257, 384] 590208 +encoder_layer_2_layer_scale2_Mul (Mul#5) [1, 257, 384] 384 + encoder_layer_2_Add_1 (Add#6) [1, 257, 384] 0 + (LayerNorm#6) [1, 257, 384] 770 + (MultiHeadAttention#3) [1, 257, 384] 591370 +encoder_layer_3_layer_scale1_Mul (Mul#6) [1, 257, 384] 384 + encoder_layer_3_Add (Add#7) [1, 257, 384] 0 + (LayerNorm#7) [1, 257, 384] 770 + (Linear#6) [1, 257, 1536] 591360 + (GeLU#3) [1, 257, 1536] 3 + (Linear#7) [1, 257, 384] 590208 +encoder_layer_3_layer_scale2_Mul (Mul#7) [1, 257, 384] 384 + encoder_layer_3_Add_1 (Add#8) [1, 257, 384] 0 + (LayerNorm#8) [1, 257, 384] 770 + (MultiHeadAttention#4) [1, 257, 384] 591370 +encoder_layer_4_layer_scale1_Mul (Mul#8) [1, 257, 384] 384 + encoder_layer_4_Add (Add#9) [1, 257, 384] 0 + (LayerNorm#9) [1, 257, 384] 770 + (Linear#8) [1, 257, 1536] 591360 + (GeLU#4) [1, 257, 1536] 3 + (Linear#9) [1, 257, 384] 590208 +encoder_layer_4_layer_scale2_Mul (Mul#9) [1, 257, 384] 384 + encoder_layer_4_Add_1 (Add#10) [1, 257, 384] 0 + (LayerNorm#10) [1, 257, 384] 770 + (MultiHeadAttention#5) [1, 257, 384] 591370 +encoder_layer_5_layer_scale1_Mul (Mul#10) [1, 257, 384] 384 + encoder_layer_5_Add (Add#11) [1, 257, 384] 0 + (LayerNorm#11) [1, 257, 384] 770 + (Linear#10) [1, 257, 1536] 591360 + (GeLU#5) [1, 257, 1536] 3 + (Linear#11) [1, 257, 384] 590208 +encoder_layer_5_layer_scale2_Mul (Mul#11) [1, 257, 384] 384 + encoder_layer_5_Add_1 (Add#12) [1, 257, 384] 0 + (LayerNorm#12) [1, 257, 384] 770 + (MultiHeadAttention#6) [1, 257, 384] 591370 +encoder_layer_6_layer_scale1_Mul (Mul#12) [1, 257, 384] 384 + encoder_layer_6_Add (Add#13) [1, 257, 384] 0 + (LayerNorm#13) [1, 257, 384] 770 + (Linear#12) [1, 257, 1536] 591360 + (GeLU#6) [1, 257, 1536] 3 + (Linear#13) [1, 257, 384] 590208 +encoder_layer_6_layer_scale2_Mul (Mul#13) [1, 257, 384] 384 + encoder_layer_6_Add_1 (Add#14) [1, 257, 384] 0 + (LayerNorm#14) [1, 257, 384] 770 + (MultiHeadAttention#7) [1, 257, 384] 591370 +encoder_layer_7_layer_scale1_Mul (Mul#14) [1, 257, 384] 384 + encoder_layer_7_Add (Add#15) [1, 257, 384] 0 + (LayerNorm#15) [1, 257, 384] 770 + (Linear#14) [1, 257, 1536] 591360 + (GeLU#7) [1, 257, 1536] 3 + (Linear#15) [1, 257, 384] 590208 +encoder_layer_7_layer_scale2_Mul (Mul#15) [1, 257, 384] 384 + encoder_layer_7_Add_1 (Add#16) [1, 257, 384] 0 + (LayerNorm#16) [1, 257, 384] 770 + (MultiHeadAttention#8) [1, 257, 384] 591370 +encoder_layer_8_layer_scale1_Mul (Mul#16) [1, 257, 384] 384 + encoder_layer_8_Add (Add#17) [1, 257, 384] 0 + (LayerNorm#17) [1, 257, 384] 770 + (Linear#16) [1, 257, 1536] 591360 + (GeLU#8) [1, 257, 1536] 3 + (Linear#17) [1, 257, 384] 590208 +encoder_layer_8_layer_scale2_Mul (Mul#17) [1, 257, 384] 384 + encoder_layer_8_Add_1 (Add#18) [1, 257, 384] 0 + (LayerNorm#18) [1, 257, 384] 770 + (MultiHeadAttention#9) [1, 257, 384] 591370 +encoder_layer_9_layer_scale1_Mul (Mul#18) [1, 257, 38 +</pre></div></div> +</div> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[7]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Display certain statistics about the number of operations by node</span> +<span class="n">_</span> <span class="o">=</span> <span class="n">dinov2_stats</span><span class="o">.</span><span class="n">log_nb_ops_by_type</span><span class="p">(</span><span class="s2">"stats_ops.png"</span><span class="p">,</span> <span class="n">log_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +<br/></pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt empty docutils container"> +</div> +<div class="output_area docutils container"> +<img alt="../../_images/source_Tutorial_static_analysis_14_0.png" src="../../_images/source_Tutorial_static_analysis_14_0.png" /> +</div> +</div> +</section> +<section id="Configure-the-model-for-inference"> +<h2>Configure the model for inference<a class="headerlink" href="#Configure-the-model-for-inference" title="Link to this heading">#</a></h2> +<p>Currently, the model has no implementation and exists only as a data structure. To set an implementation, we will specify a backend and a data type.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">aidge_backend_cpu</span> + +<span class="n">dinov2_model</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">)</span> +<span class="n">dinov2_model</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> +<span class="n">dinov2_model</span><span class="o">.</span><span class="n">forward_dims</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">224</span><span class="p">,</span><span class="mi">224</span><span class="p">]],</span> <span class="kc">True</span><span class="p">)</span> +<br/><br/></pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[8]: +</pre></div> +</div> +<div class="output_area docutils container"> +<div class="highlight"><pre> +True +</pre></div></div> +</div> +<p>Finally, to run inference, we need to schedule the execution. To do so we create a <code class="docutils literal notranslate"><span class="pre">Scheduler</span></code> object, which takes the graph and generates an optimized scheduling using a consummer-producer (C-P) heuristic.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[9]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">s</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SequentialScheduler</span><span class="p">(</span><span class="n">dinov2_model</span><span class="p">)</span> +<span class="n">s</span><span class="o">.</span><span class="n">generate_scheduling</span><span class="p">()</span> +</pre></div> +</div> +</div> +<p>In addition, it is possible to verify the memory usage of the different nodes composing the graph.</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">_</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">generate_optimized_memory_info</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="s2">"mem_strategy_dino"</span><span class="p">,</span> <span class="n">wrapping</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">display_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +<span class="n">Image</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">"./mem_strategy_dino/memory_info.png"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]: +</pre></div> +</div> +<div class="output_area docutils container"> +<img alt="../../_images/source_Tutorial_static_analysis_20_0.png" src="../../_images/source_Tutorial_static_analysis_20_0.png" /> +</div> +</div> +<p>We can then compare the modified model with the original one, whose operators have not been fused:</p> +<div class="nbinput docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Compile the model</span> +<span class="n">clone_dinov2</span><span class="o">.</span><span class="n">set_backend</span><span class="p">(</span><span class="s2">"cpu"</span><span class="p">)</span> +<span class="n">clone_dinov2</span><span class="o">.</span><span class="n">set_datatype</span><span class="p">(</span><span class="n">aidge_core</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> +<span class="n">clone_dinov2</span><span class="o">.</span><span class="n">forward_dims</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">224</span><span class="p">,</span><span class="mi">224</span><span class="p">]],</span> <span class="kc">True</span><span class="p">)</span> + +<span class="c1"># Generate scheduling</span> +<span class="n">s</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">SequentialScheduler</span><span class="p">(</span><span class="n">clone_dinov2</span><span class="p">)</span> +<span class="n">s</span><span class="o">.</span><span class="n">generate_scheduling</span><span class="p">()</span> + +<span class="c1"># Visualize memory usage</span> +<span class="n">_</span> <span class="o">=</span> <span class="n">aidge_core</span><span class="o">.</span><span class="n">generate_optimized_memory_info</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="s2">"mem_strategy_og_dino"</span><span class="p">,</span> <span class="n">wrapping</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">display_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +<span class="n">Image</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">"./mem_strategy_og_dino/memory_info.png"</span><span class="p">)</span> +</pre></div> +</div> +</div> +<div class="nboutput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[11]: +</pre></div> +</div> +<div class="output_area docutils container"> +<img alt="../../_images/source_Tutorial_static_analysis_22_0.png" src="../../_images/source_Tutorial_static_analysis_22_0.png" /> +</div> +</div> +<p>In this tutorial the following concepts were studied:</p> +<ul class="simple"> +<li><p>Graph transformations, in particular the <code class="docutils literal notranslate"><span class="pre">fuse_to_metaops</span></code> recipe;</p></li> +<li><p>Static analysis, to measure the graph’s complexity in terms of number of operations;</p></li> +<li><p>Memory information generation, to visualize the graph’s memory usage over inference time.</p></li> +</ul> +</section> +</section> + + + </article> + + + + + + <footer class="prev-next-footer d-print-none"> + +<div class="prev-next-area"> + <a class="left-prev" + href="ONNX.html" + title="previous page"> + <i class="fa-solid fa-angle-left"></i> + <div class="prev-next-info"> + <p class="prev-next-subtitle">previous</p> + <p class="prev-next-title">Aidge ONNX tutorial</p> + </div> + </a> + <a class="right-next" + href="backend_cuda.html" + title="next page"> + <div class="prev-next-info"> + <p class="prev-next-subtitle">next</p> + <p class="prev-next-title">Backend CUDA example</p> + </div> + <i class="fa-solid fa-angle-right"></i> + </a> +</div> + </footer> + + </div> + + + + <dialog id="pst-secondary-sidebar-modal"></dialog> + <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> + + + <div class="sidebar-secondary-item"> +<div + id="pst-page-navigation-heading-2" + class="page-toc tocsection onthispage"> + <i class="fa-solid fa-list"></i> On this page + </div> + <nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2"> + <ul class="visible nav section-nav flex-column"> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Setting-up-the-notebook">Setting up the notebook</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#(if-needed)-Download-the-model">(if needed) Download the model</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Import-the-ONNX-model-into-Aidge">Import the ONNX model into Aidge</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Explore-a-handful-of-graph-transformations">Explore a handful of graph transformations</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Run-static-analysis">Run static analysis</a></li> +<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#Configure-the-model-for-inference">Configure the model for inference</a></li> +</ul> + </nav></div> + + <div class="sidebar-secondary-item"> + <div role="note" aria-label="source link"> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../../_sources/source/Tutorial/static_analysis.nblink.txt" + rel="nofollow">Show Source</a></li> + </ul> + </div></div> + +</div></div> + + + </div> + <footer class="bd-footer-content"> + + </footer> + + </main> + </div> + </div> + + <!-- Scripts loaded after <body> so the DOM is not blocked --> + <script defer src="../../_static/scripts/bootstrap.js?digest=8878045cc6db502f8baf"></script> +<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=8878045cc6db502f8baf"></script> + + <footer class="bd-footer"> +<div class="bd-footer__inner bd-page-width"> + + <div class="footer-items__start"> + + <div class="footer-item"> + + <p class="copyright"> + + © Copyright 2023, CEA LIST. + <br/> + + </p> +</div> + + <div class="footer-item"> + + <p class="sphinx-version"> + Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.1.3. + <br/> + </p> +</div> + + </div> + + + + <div class="footer-items__end"> + + <div class="footer-item"> +<p class="theme-version"> + <!-- # L10n: Setting the PST URL as an argument as this does not need to be localized --> + Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.16.1. +</p></div> + + </div> + +</div> + + </footer> + </body> +</html> \ No newline at end of file diff --git a/source/Tutorial/static_analysis.ipynb b/source/Tutorial/static_analysis.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..90a90afa7fb48d3befddcb3b864c66e1aaff1977 --- /dev/null +++ b/source/Tutorial/static_analysis.ipynb @@ -0,0 +1,717 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Perform static analysis on a neural network model\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial, we employ Aidge's ``static analysis`` module to evaluate the DINOv2 model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting up the notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:07.614394Z", + "iopub.status.busy": "2025-05-19T10:06:07.614173Z", + "iopub.status.idle": "2025-05-19T10:06:07.942795Z", + "shell.execute_reply": "2025-05-19T10:06:07.942431Z" + } + }, + "outputs": [], + "source": [ + "# Import Aidge modules\n", + "import aidge_core\n", + "import aidge_onnx\n", + "\n", + "# Select low verbose mode\n", + "aidge_core.Log.set_console_level(aidge_core.Level.Error)\n", + "\n", + "# Import module to show images in the notebook\n", + "from IPython.display import Image\n", + "\n", + "# Import some utility modules\n", + "import os\n", + "import requests\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## (if needed) Download the model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:07.944418Z", + "iopub.status.busy": "2025-05-19T10:06:07.944240Z", + "iopub.status.idle": "2025-05-19T10:06:09.140130Z", + "shell.execute_reply": "2025-05-19T10:06:09.139860Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 0%| | 0.00/82.7M [00:00<?, ?B/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 8%|â–Š | 6.38M/82.7M [00:00<00:01, 66.9MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 18%|█▊ | 14.6M/82.7M [00:00<00:00, 77.9MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 27%|██▋ | 22.0M/82.7M [00:00<00:00, 77.8MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 38%|███▊ | 31.2M/82.7M [00:00<00:00, 85.0MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 48%|████▊ | 39.3M/82.7M [00:00<00:00, 80.7MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 57%|█████▋ | 47.1M/82.7M [00:00<00:00, 77.6MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 67%|██████▋ | 55.4M/82.7M [00:00<00:00, 80.4MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 77%|███████▋ | 63.3M/82.7M [00:00<00:00, 81.3MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 88%|████████▊ | 72.6M/82.7M [00:00<00:00, 86.2MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 100%|█████████▉| 82.5M/82.7M [00:01<00:00, 91.3MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + "dinov2.onnx: 100%|██████████| 82.7M/82.7M [00:01<00:00, 84.0MB/s]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# Download the DINOv2 model ONNX file, if this has not been done yet\n", + "file_url = \"https://huggingface.co/EclipseAidge/dinov2/resolve/main/dinov2.onnx?download=true\"\n", + "file_path = \"dinov2.onnx\"\n", + "aidge_core.utils.download_file(file_path, file_url)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import the ONNX model into Aidge" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:09.141307Z", + "iopub.status.busy": "2025-05-19T10:06:09.141090Z", + "iopub.status.idle": "2025-05-19T10:06:09.311995Z", + "shell.execute_reply": "2025-05-19T10:06:09.311701Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Native operators: 824 (17 types)\n", + "- Add: 159\n", + "- Concat: 1\n", + "- Conv2D: 1\n", + "- Div: 49\n", + "- Erf: 12\n", + "- Gather: 1\n", + "- MatMul: 72\n", + "- Mul: 73\n", + "- Pow: 25\n", + "- Producer: 209\n", + "- ReduceMean: 50\n", + "- Reshape: 49\n", + "- Softmax: 12\n", + "- Split: 12\n", + "- Sqrt: 25\n", + "- Sub: 25\n", + "- Transpose: 49\n", + "Generic operators: 0 (0 types)\n", + "Native types coverage: 100.0% (17/17)\n", + "Native operators coverage: 100.0% (824/824)\n" + ] + }, + { + "data": { + "text/plain": [ + "(defaultdict(int,\n", + " {'Add': 159,\n", + " 'ReduceMean': 50,\n", + " 'Reshape': 49,\n", + " 'Pow': 25,\n", + " 'Sub': 25,\n", + " 'Split': 12,\n", + " 'MatMul': 72,\n", + " 'Mul': 73,\n", + " 'Div': 49,\n", + " 'Sqrt': 25,\n", + " 'Erf': 12,\n", + " 'Gather': 1,\n", + " 'Transpose': 49,\n", + " 'Softmax': 12,\n", + " 'Producer': 209,\n", + " 'Concat': 1,\n", + " 'Conv2D': 1}),\n", + " defaultdict(int, {}))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We rely on the Aidge ONNX module, which provides an interface between ONNX operators and Aidge's internal representation\n", + "dinov2_model = aidge_onnx.load_onnx(\"dinov2.onnx\")\n", + "\n", + "# Verify Aidge's native operators coverage for this model\n", + "aidge_onnx.native_coverage_report(dinov2_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore a handful of graph transformations\n", + "In this section we use some of Aidge's recipes to simplify the model graph. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:09.313100Z", + "iopub.status.busy": "2025-05-19T10:06:09.312974Z", + "iopub.status.idle": "2025-05-19T10:06:09.364354Z", + "shell.execute_reply": "2025-05-19T10:06:09.363976Z" + } + }, + "outputs": [], + "source": [ + "# Create a clone of the original model to be used for comparison later\n", + "clone_dinov2 = dinov2_model.clone()\n", + "\n", + "# Simplify the model using meta-operators via the ``fuse_to_metaops`` recipe\n", + "# In this context we use Graph Regex to specify which sequence of operators must be replaced by a given meta operator\n", + "aidge_core.fuse_to_metaops(dinov2_model, \"MatMul-*>Add\", \"Linear\")\n", + "\n", + "aidge_core.fuse_to_metaops(dinov2_model, \"ReduceMean-*>Sub#1~>(Pow#1->ReduceMean-*>Add#1->Sqrt)-*>Div#1-*>Mul#1-*>Add#2;\"\n", + " \"Sub#1~*>Div#1;\"\n", + " \"Pow#1<1~Producer;\"\n", + " \"Add#1<*~Producer;\"\n", + " \"Mul#1<*~Producer;\"\n", + " \"Add#2<*~Producer;\"\n", + " \"Sub#1~>$\", \"LayerNorm\")\n", + "\n", + "aidge_core.fuse_to_metaops(dinov2_model, \"MatMul->Div#1->Softmax-*>MatMul;\"\n", + " \"Div#1<1~Producer\", \"ScaledDotProductAttention\")\n", + "\n", + "aidge_core.fuse_to_metaops(dinov2_model, \"ScaledDotProductAttention#1->Transpose->Reshape#1->Linear;\"\n", + " \"Reshape#1<1~Producer;\"\n", + " \"ScaledDotProductAttention#1<0-(Transpose<-Reshape#2<-Add#1);\"\n", + " \"ScaledDotProductAttention#1<1-(Transpose<-Reshape#3<-Add#2);\"\n", + " \"ScaledDotProductAttention#1<2-(Transpose<-Reshape#4<-Add#3);\"\n", + " \"Reshape#2<1~Producer;\"\n", + " \"Add#1<*-0-Split#1;\"\n", + " \"Add#2<*-1-Split#1;\"\n", + " \"Add#3<*-2-Split#1;\"\n", + " \"Split#1<-MatMul;\"\n", + " \"Split#1<1~Producer\", \"MultiHeadAttention\")\n", + "\n", + "aidge_core.fuse_to_metaops(dinov2_model, \"Div#1->Erf->Add#1-*>Mul->Mul#2;\"\n", + " \"Div#1<1~Producer;\"\n", + " \"Add#1<*~Producer;\"\n", + " \"Mul#2<*~Producer\", \"GeLU\")\n", + "\n", + "dinov2_model.set_ordered_outputs([dinov2_model.get_ordered_outputs()[0][0].inputs()[0], dinov2_model.get_ordered_outputs()[0]])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:09.365608Z", + "iopub.status.busy": "2025-05-19T10:06:09.365393Z", + "iopub.status.idle": "2025-05-19T10:06:09.367647Z", + "shell.execute_reply": "2025-05-19T10:06:09.367431Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Native operators: 277 (12 types)\n", + "- Add: 25\n", + "- Concat: 1\n", + "- Conv2D: 1\n", + "- Gather: 1\n", + "- GeLU: 12\n", + "- LayerNorm: 25\n", + "- Linear: 24\n", + "- Mul: 24\n", + "- MultiHeadAttention: 12\n", + "- Producer: 150\n", + "- Reshape: 1\n", + "- Transpose: 1\n", + "Generic operators: 0 (0 types)\n", + "Native types coverage: 100.0% (12/12)\n", + "Native operators coverage: 100.0% (277/277)\n" + ] + } + ], + "source": [ + "# After creating meta-operators, we can verify the updated total number of operators in the graph\n", + "_ = aidge_onnx.native_coverage_report(dinov2_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The number of operators is reduced from 824 (17 unique) to 277 (12 unique), as depicted in the following image.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run static analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:09.368587Z", + "iopub.status.busy": "2025-05-19T10:06:09.368440Z", + "iopub.status.idle": "2025-05-19T10:06:09.374532Z", + "shell.execute_reply": "2025-05-19T10:06:09.374153Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--------------------------------------------------------------------------------\n", + " Layer (type) Output Shape Param #\n", + "================================================================================\n", + "embeddings_patch_embeddings_projection_Conv (Conv2D#0) [1, 384, 16, 16] 226176\n", + "embeddings_patch_embeddings_Reshape (Reshape#0) [1, 384, 256] 3\n", + "embeddings_patch_embeddings_Transpose (Transpose#0) [1, 256, 384] 0\n", + " embeddings_Concat (Concat#0) [1, 257, 384] 384\n", + " embeddings_Add (Add#0) [1, 257, 384] 98688\n", + " (LayerNorm#0) [1, 257, 384] 770\n", + " (MultiHeadAttention#0) [1, 257, 384] 591370\n", + "encoder_layer_0_layer_scale1_Mul (Mul#0) [1, 257, 384] 384\n", + " encoder_layer_0_Add (Add#1) [1, 257, 384] 0\n", + " (LayerNorm#1) [1, 257, 384] 770\n", + " (Linear#0) [1, 257, 1536] 591360\n", + " (GeLU#0) [1, 257, 1536] 3\n", + " (Linear#1) [1, 257, 384] 590208\n", + "encoder_layer_0_layer_scale2_Mul (Mul#1) [1, 257, 384] 384\n", + " encoder_layer_0_Add_1 (Add#2) [1, 257, 384] 0\n", + " (LayerNorm#2) [1, 257, 384] 770\n", + " (MultiHeadAttention#1) [1, 257, 384] 591370\n", + "encoder_layer_1_layer_scale1_Mul (Mul#2) [1, 257, 384] 384\n", + " encoder_layer_1_Add (Add#3) [1, 257, 384] 0\n", + " (LayerNorm#3) [1, 257, 384] 770\n", + " (Linear#2) [1, 257, 1536] 591360\n", + " (GeLU#1) [1, 257, 1536] 3\n", + " (Linear#3) [1, 257, 384] 590208\n", + "encoder_layer_1_layer_scale2_Mul (Mul#3) [1, 257, 384] 384\n", + " encoder_layer_1_Add_1 (Add#4) [1, 257, 384] 0\n", + " (LayerNorm#4) [1, 257, 384] 770\n", + " (MultiHeadAttention#2) [1, 257, 384] 591370\n", + "encoder_layer_2_layer_scale1_Mul (Mul#4) [1, 257, 384] 384\n", + " encoder_layer_2_Add (Add#5) [1, 257, 384] 0\n", + " (LayerNorm#5) [1, 257, 384] 770\n", + " (Linear#4) [1, 257, 1536] 591360\n", + " (GeLU#2) [1, 257, 1536] 3\n", + " (Linear#5) [1, 257, 384] 590208\n", + "encoder_layer_2_layer_scale2_Mul (Mul#5) [1, 257, 384] 384\n", + " encoder_layer_2_Add_1 (Add#6) [1, 257, 384] 0\n", + " (LayerNorm#6) [1, 257, 384] 770\n", + " (MultiHeadAttention#3) [1, 257, 384] 591370\n", + "encoder_layer_3_layer_scale1_Mul (Mul#6) [1, 257, 384] 384\n", + " encoder_layer_3_Add (Add#7) [1, 257, 384] 0\n", + " (LayerNorm#7) [1, 257, 384] 770\n", + " (Linear#6) [1, 257, 1536] 591360\n", + " (GeLU#3) [1, 257, 1536] 3\n", + " (Linear#7) [1, 257, 384] 590208\n", + "encoder_layer_3_layer_scale2_Mul (Mul#7) [1, 257, 384] 384\n", + " encoder_layer_3_Add_1 (Add#8) [1, 257, 384] 0\n", + " (LayerNorm#8) [1, 257, 384] 770\n", + " (MultiHeadAttention#4) [1, 257, 384] 591370\n", + "encoder_layer_4_layer_scale1_Mul (Mul#8) [1, 257, 384] 384\n", + " encoder_layer_4_Add (Add#9) [1, 257, 384] 0\n", + " (LayerNorm#9) [1, 257, 384] 770\n", + " (Linear#8) [1, 257, 1536] 591360\n", + " (GeLU#4) [1, 257, 1536] 3\n", + " (Linear#9) [1, 257, 384] 590208\n", + "encoder_layer_4_layer_scale2_Mul (Mul#9) [1, 257, 384] 384\n", + " encoder_layer_4_Add_1 (Add#10) [1, 257, 384] 0\n", + " (LayerNorm#10) [1, 257, 384] 770\n", + " (MultiHeadAttention#5) [1, 257, 384] 591370\n", + "encoder_layer_5_layer_scale1_Mul (Mul#10) [1, 257, 384] 384\n", + " encoder_layer_5_Add (Add#11) [1, 257, 384] 0\n", + " (LayerNorm#11) [1, 257, 384] 770\n", + " (Linear#10) [1, 257, 1536] 591360\n", + " (GeLU#5) [1, 257, 1536] 3\n", + " (Linear#11) [1, 257, 384] 590208\n", + "encoder_layer_5_layer_scale2_Mul (Mul#11) [1, 257, 384] 384\n", + " encoder_layer_5_Add_1 (Add#12) [1, 257, 384] 0\n", + " (LayerNorm#12) [1, 257, 384] 770\n", + " (MultiHeadAttention#6) [1, 257, 384] 591370\n", + "encoder_layer_6_layer_scale1_Mul (Mul#12) [1, 257, 384] 384\n", + " encoder_layer_6_Add (Add#13) [1, 257, 384] 0\n", + " (LayerNorm#13) [1, 257, 384] 770\n", + " (Linear#12) [1, 257, 1536] 591360\n", + " (GeLU#6) [1, 257, 1536] 3\n", + " (Linear#13) [1, 257, 384] 590208\n", + "encoder_layer_6_layer_scale2_Mul (Mul#13) [1, 257, 384] 384\n", + " encoder_layer_6_Add_1 (Add#14) [1, 257, 384] 0\n", + " (LayerNorm#14) [1, 257, 384] 770\n", + " (MultiHeadAttention#7) [1, 257, 384] 591370\n", + "encoder_layer_7_layer_scale1_Mul (Mul#14) [1, 257, 384] 384\n", + " encoder_layer_7_Add (Add#15) [1, 257, 384] 0\n", + " (LayerNorm#15) [1, 257, 384] 770\n", + " (Linear#14) [1, 257, 1536] 591360\n", + " (GeLU#7) [1, 257, 1536] 3\n", + " (Linear#15) [1, 257, 384] 590208\n", + "encoder_layer_7_layer_scale2_Mul (Mul#15) [1, 257, 384] 384\n", + " encoder_layer_7_Add_1 (Add#16) [1, 257, 384] 0\n", + " (LayerNorm#16) [1, 257, 384] 770\n", + " (MultiHeadAttention#8) [1, 257, 384] 591370\n", + "encoder_layer_8_layer_scale1_Mul (Mul#16) [1, 257, 384] 384\n", + " encoder_layer_8_Add (Add#17) [1, 257, 384] 0\n", + " (LayerNorm#17) [1, 257, 384] 770\n", + " (Linear#16) [1, 257, 1536] 591360\n", + " (GeLU#8) [1, 257, 1536] 3\n", + " (Linear#17) [1, 257, 384] 590208\n", + "encoder_layer_8_layer_scale2_Mul (Mul#17) [1, 257, 384] 384\n", + " encoder_layer_8_Add_1 (Add#18) [1, 257, 384] 0\n", + " (LayerNorm#18) [1, 257, 384] 770\n", + " (MultiHeadAttention#9) [1, 257, 384] 591370\n", + "encoder_layer_9_layer_scale1_Mul (Mul#18) [1, 257, 38" + ] + } + ], + "source": [ + "import aidge_core.static_analysis\n", + "\n", + "# Input dimensions must be forwarded for static analysis\n", + "dinov2_model.forward_dims(dims=[[1,3,224,224]], allow_data_dependency=True)\n", + "\n", + "dinov2_stats = aidge_core.static_analysis.StaticAnalysis(dinov2_model)\n", + "dinov2_stats.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:09.375638Z", + "iopub.status.busy": "2025-05-19T10:06:09.375493Z", + "iopub.status.idle": "2025-05-19T10:06:11.044850Z", + "shell.execute_reply": "2025-05-19T10:06:11.044455Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACdMAAANnCAYAAADQ+VOiAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xl8FdX9//H3TSAhBJKwLy6AoFRcQCmiWAUrrrhg3b/aCloVd6popVYIUJWWolhFrLUF1yraalutewXrUqWIe4xRghEJIZKNQAgkd35/8Lu3Cdnm3jPnZu7k9Xw8eDiZ3Mw97/mcOTOTHOeGHMdxBAAAAAAAAAAAAAAAAABAB5bS3g0AAAAAAAAAAAAAAAAAAKC9MZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAAAAAAAAAAAAAANDhMZkOAAAAQIc1ZcoUhUIhhUIhHXjgge3dHCtWrFihUCikp59+ur2bIul/7VmxYoXr1/ql7aFQSLm5ue3dDCTQhAkTfDU2TJgwQRMmTHD9Wj+1/cUXX9SoUaPUpUsXhUIhVVRUtHeT4JHc3FyFQiF99913nm3LpljOQ0gegwcP1imnnNLezQCa1V7XtLFcN/jNqFGjovdpHNsAAAAAEo3JdAAAAAA6tN69e+uRRx7R/PnzG60fPHiw9YlT//znP5mcJenxxx/XokWL2rsZVt1+++169tln27sZrk2ZMiXuP74uW7bM+mSYbdu2KTc3t8NPhtmwYYNyc3P1wQcftHdTWrV582adc845ysjI0OLFi/XII48oMzOzvZtlzKSvr1u3LiETuu677z4tW7bM6nugfU2YMEFTpkyJ62dzc3M1ePBgT9uzu2QZp2CH6VjH9XjH0Nz59Pbbb9cjjzyi3r17t1OrAAAAAHRkndq7AQAAAADQnjIzM3XhhRe2y3v/85//1OLFizvUH/COPvpo1dTUKC0tLbru8ccf1yeffKLp06e3X8NcqKmpUadO8d1G33777TrrrLM0efJkbxvVQW3btk1z5syRpKR94ko8Xn755UZfb9iwQXPmzNHgwYM1atSo9mmUC6tWrdKWLVs0b948TZw4sb2b06Hcd9996t27d9yTrYKoufMQ7EmWcQodV0e8Hk8GJ598siTpl7/8ZTu3BAAAAEBHxJPpAAAAAADWbd++XeFwWCkpKerSpYtSUpLvdrRLly5xT6YDTGzbtk2SlJaWlpQTgDZt2iRJysnJad+GAFJSn4cAAAAAAABgH781AgAAAACXPvroI40fP14ZGRnac8899atf/UpLly5VKBTSunXrGr32hRde0FFHHaXMzEx1795dkyZN0qeffhr9/pQpU7R48WJJUigUiv5za8KECTrwwAP12Wef6ZhjjlHXrl21xx576De/+U2zr6+vr9cvfvEL9e/fX5mZmTrttNP0zTffxJS/rKxMM2bM0EEHHaRu3bopKytLJ510kj788MNGr1uxYoVCoZCeeOIJ/fKXv9Qee+yhrl27qqqqKvq9yMd9TZgwQc8//7y+/vrr6D7Y/SPnwuGwbrvtNu25557q0qWLjj32WH355ZfN7o9Ijbp27aphw4bp6aefliStXLlSY8eOVUZGhoYPH65XX301puzSrjo1fGpJbm6uQqGQvvzyS02ZMkU5OTnKzs7W1KlTo5OfIj+3detWPfTQQ9GMsTwlauvWrbrhhhu01157KT09XcOHD9dvf/tbOY7TpH1XX321HnvsMQ0fPlxdunTR6NGj9cYbbzR63ZYtWzR9+nQNHjxY6enp6tu3r4477ji9//77Me8Tt8LhsHJzczVw4EB17dpVxxxzjD777DMNHjy4yb6oqKjQ9OnTo3mHDRumX//61wqHw5J2fWRcnz59JElz5syJ7lO3T5SJ9MHly5e32a8iVq9erXHjxikjI0NDhgzR/fffH/M++Nvf/qZJkyZp4MCBSk9P19ChQzVv3jzV19c3el2kL69evVpHH320unbtql/84hfR70WexLdixQqNGTNGkjR16tToftj9Iz3bGiMa7o85c+Zojz32UPfu3XXWWWepsrJStbW1mj59uvr27atu3bpp6tSpqq2tdZ17woQJuuiiiyRJY8aMadT/G2Y13b/SrqewHXDAAUpPT9fAgQN11VVXqaKiokl73L7nPffcowMOOEBdu3ZVjx499P3vf1+PP/54XG1z66mnntKIESPUpUsXHXjggXrmmWc0ZcqUZsfFRYsW6YADDlCXLl3Ur18/XX755SovL4++ZvDgwfr000+1cuXKaP+I5UmOkTHl2Wef1YEHHqj09HQdcMABevHFF5t9/XfffadzzjlHWVlZ6tWrl6677jpt3749nt3QSF1dnebNm6ehQ4cqPT1dgwcP1i9+8Ysm/dDtOLP7eSji3Xff1cknn6wePXooMzNTBx98sO6+++6Y2rpp0yZdcskl6tevn7p06aKRI0fqoYceavSayMde/va3v9Vdd92lQYMGKSMjQ+PHj9cnn3zS6LUbN27U1KlTteeeeyo9PV0DBgzQ6aef3uSaw0s1NTW69tpr1bt3b3Xv3l2nnXaavv3222bH2W+//VYXX3yx+vXrF+0ff/rTn6LfdztOtSTy0Y9vvfWWrr/+evXp00eZmZk644wzVFpa2uzPvPzyyxo1apS6dOmiESNG6K9//Wtc++HRRx/VYYcdFj3+jz766CZPB41lzIn3+iRyrfH55597cnz961//il6f5uTk6PTTT1deXl7c7/nKK6/oBz/4gXJyctStWzcNHz48es6ypaNfj8dzXMQqCOdTAAAAADDB/1IPAAAAAC58++23OuaYYxQKhTRz5kxlZmbqwQcfVHp6epPXPvLII7rooot0wgkn6Ne//rW2bdumJUuW6Ac/+IHWrFmjwYMH6/LLL9eGDRv0yiuv6JFHHomrTeXl5TrxxBP1ox/9SOecc46efvpp/fznP9dBBx2kk046qdFrb7vtNoVCIf385z/Xpk2btGjRIk2cOFEffPCBMjIyXL3f2rVr9eyzz+rss8/WkCFDVFJSot///vcaP368PvvsMw0cOLDR6+fNm6e0tDTNmDFDtbW1zT5R65ZbblFlZaXWr1+vu+66S5LUrVu3Rq+ZP3++UlJSNGPGDFVWVuo3v/mNLrjgAr377rtN9scpp5yi8847T2effbaWLFmi8847T4899pimT5+uadOm6f/+7/+0YMECnXXWWfrmm2/UvXt3V9lbc84552jIkCG644479P777+vBBx9U37599etf/1rSrv7w05/+VIcddpguu+wySdLQoUNdbdtxHJ122ml6/fXXdckll2jUqFF66aWXdOONN+rbb7+N7rOIlStX6sknn9S1116r9PR03XfffTrxxBP13nvv6cADD5QkTZs2TU8//bSuvvpqjRgxQps3b9abb76pvLw8HXroocb7ozkzZ87Ub37zG5166qk64YQT9OGHH+qEE05o8kf5bdu2afz48fr22291+eWXa++999bbb7+tmTNnqri4WIsWLVKfPn20ZMkSXXHFFTrjjDP0ox/9SJJ08MEHx9SmWPrVySefrHPOOUfnn3++li9friuuuEJpaWm6+OKLXb/fsmXL1K1bN11//fXq1q2b/vWvf2nWrFmqqqrSggULGr128+bNOumkk3TeeefpwgsvVL9+/Zpsb//999fcuXM1a9YsXXbZZTrqqKMkSePGjWvUdrdjxB133KGMjAzdfPPN+vLLL3XPPfeoc+fOSklJUXl5uXJzc/Wf//xHy5Yt05AhQzRr1ixXuW+55RYNHz5cDzzwgObOnashQ4Y06v9e7d/c3FzNmTNHEydO1BVXXKH8/HwtWbJEq1at0ltvvaXOnTvH9J5/+MMfdO211+qss86KTiD56KOP9O677+r//u//XLcrFs8//7zOPfdcHXTQQbrjjjtUXl6uSy65RHvssUeT115++eVatmyZpk6dqmuvvVaFhYW69957tWbNmmjeRYsW6ZprrlG3bt10yy23SFKzfak1b775pv7617/qyiuvVPfu3fW73/1OZ555poqKitSrV69Grz3nnHM0ePBg3XHHHfrPf/6j3/3udyovL9fDDz8c/06R9NOf/lQPPfSQzjrrLN1www169913dccddygvL0/PPPNM9HVux5nmvPLKKzrllFM0YMAAXXfdderfv7/y8vL03HPP6brrrnPVzpqaGk2YMEFffvmlrr76ag0ZMkRPPfWUpkyZooqKiibbefjhh7VlyxZdddVV2r59u+6++2798Ic/1Mcffxyt05lnnqlPP/1U11xzjQYPHqxNmzbplVdeUVFRUZMJll6ZMmWKli9frh//+Mc6/PDDtXLlSk2aNKnJ60pKSnT44YdHJ1326dNHL7zwgi655BJVVVVp+vTprsYpN6655hr16NFDs2fP1rp167Ro0SJdffXVevLJJxu9rqCgQOeee66mTZumiy66SEuXLtXZZ5+tF198Uccdd5zr95szZ45yc3M1btw4zZ07V2lpaXr33Xf1r3/9S8cff7yk2Mcc0+sTL46vV199VSeddJL22Wcf5ebmqqamRvfcc4+OPPJIvf/++036VFvv+emnn+qUU07RwQcfrLlz5yo9PV1ffvml3nrrLddtihXX4//j9riIVRDOpwAAAABgzAEAAACADuqiiy5yBg0a5Oq111xzjRMKhZw1a9ZE123evNnp2bOnI8kpLCx0HMdxtmzZ4uTk5DiXXnppo5/fuHGjk52d3Wj9VVdd5cR7WzZ+/HhHkvPwww9H19XW1jr9+/d3zjzzzOi6119/3ZHk7LHHHk5VVVV0/fLlyx1Jzt133+36Pbdv3+7U19c3WldYWOikp6c7c+fObfKe++yzj7Nt27ZGr4987/XXX4+umzRpUrN1iLx2//33d2pra6Pr7777bkeS8/HHHzfZH48//nh03eeff+5IclJSUpz//Oc/0fUvvfSSI8lZunSp6+yO4ziSnNmzZ0e/nj17tiPJufjiixu97owzznB69erVaF1mZqZz0UUXxfR+juM4zz77rCPJ+dWvftVo/VlnneWEQiHnyy+/bNQ+Sc5///vf6Lqvv/7a6dKli3PGGWdE12VnZztXXXVVzG2J18aNG51OnTo5kydPbrQ+NzfXkdRov8ybN8/JzMx0vvjii0avvfnmm53U1FSnqKjIcRzHKS0tbVIPt+LpVwsXLoyuq62tdUaNGuX07dvX2bFjh+v33f1YcBzHufzyy52uXbs627dvb/Ke999/f5PXjx8/3hk/fnz061WrVrXYl2MdIw488MBGec4//3wnFAo5J510UqPtHnHEEa7HzYilS5c6kpxVq1Y120bT/btp0yYnLS3NOf744xuNUffee68jyfnTn/4U83uefvrpzgEHHBBTTlMHHXSQs+eeezpbtmyJrluxYoUjqdE+//e//+1Ich577LFGP//iiy82WX/AAQc06jOxkOSkpaU1Gmc+/PBDR5Jzzz33RNdFxsLTTjut0c9feeWVjiTnww8/dP2ekW1FfPDBB44k56c//Wmj182YMcOR5PzrX/9yHCe2cWb381BdXZ0zZMgQZ9CgQU55eXmjnw+Hw67bvmjRIkeS8+ijj0bX7dixwzniiCOcbt26Rc/BhYWFjiQnIyPDWb9+ffS17777riPJ+dnPfuY4juOUl5c7kpwFCxa4boOp1atXO5Kc6dOnN1o/ZcqUJmPuJZdc4gwYMMD57rvvGr32vPPOc7Kzs6NjXmvjVFsiY8fEiRMb1eJnP/uZk5qa6lRUVETXDRo0yJHk/OUvf4muq6ysdAYMGOAccsghrt+zoKDASUlJcc4444wm1zyRNsQz5sR7feLl8RUZ5zZv3hxd9+GHHzopKSnOT37yk5jf86677nIkOaWlpa7bYIrr8diOi92vG9rix/PpoEGDnEmTJsX98wAAAAAQDz7mFQAAAABcePHFF3XEEUdo1KhR0XU9e/bUBRdc0Oh1r7zyiioqKnT++efru+++i/5LTU3V2LFj9frrr3vWpm7duunCCy+Mfp2WlqbDDjtMa9eubfLan/zkJ42ecnLWWWdpwIAB+uc//+n6/dLT05WSsus2sr6+Xps3b45+pFdzHxF60UUXxfyUjeZMnTq10VPtIk+22T1nt27ddN5550W/Hj58uHJycrT//vtr7Nix0fWR5eb2UzymTZvW6OujjjpKmzdvVlVVlfG2//nPfyo1NVXXXntto/U33HCDHMfRCy+80Gj9EUccodGjR0e/3nvvvXX66afrpZdein6caE5Ojt59911t2LDBuH1uvPbaa6qrq9OVV17ZaP0111zT5LVPPfWUjjrqKPXo0aPR8TNx4kTV19c3+chaE277VadOnXT55ZdHv05LS9Pll1+uTZs2afXq1a7fr+GxsGXLFn333Xc66qijtG3bNn3++eeNXpuenq6pU6fGlKc5sY4RDZ82M3bsWDmO0+TpcGPHjtU333yjuro64/ZJ3uzfV199VTt27ND06dOjY5QkXXrppcrKytLzzz8f83vm5ORo/fr1WrVqlUk81zZs2KCPP/5YP/nJTxo9nXP8+PE66KCDGr32qaeeUnZ2to477rhGx8no0aPVrVs3T88zEydObPQkwYMPPlhZWVnN9qGrrrqq0deRYzyW88zuIj97/fXXN1p/ww03SFK0trGMM7tbs2aNCgsLNX36dOXk5DT6Xiwf9/jPf/5T/fv31/nnnx9d17lzZ1177bWqrq7WypUrG71+8uTJjZ46eNhhh2ns2LHRzBkZGUpLS9OKFSsafXyvTZGP8G1rPzqOo7/85S869dRT5ThOo354wgknqLKy0tOPDr/ssssa1eKoo45SfX29vv7660avGzhwoM4444zo11lZWfrJT36iNWvWaOPGja7e69lnn1U4HNasWbMajSfS//pDrGOOF9cnpsdXcXGxPvjgA02ZMkU9e/aMrj/44IN13HHHNbudtt4zcrz87W9/i34Uu21cj/+P2+MiFkE4nwIAAACAF5hMBwAAAAAufP311xo2bFiT9buvKygokCT98Ic/VJ8+fRr9e/nll7Vp0ybP2rTnnns2+UN/jx49mv2j+7777tvo61AopGHDhmndunWu3y8cDuuuu+7Svvvuq/T0dPXu3Vt9+vTRRx99pMrKyiavHzJkiOttt2bvvfdu9HWPHj0kqUnO5vZHdna29tprrybrmvt52+2Lx9dff62BAwc2+bi3/fffP/r9hnavsyTtt99+2rZtm0pLSyVJv/nNb/TJJ59or7320mGHHabc3FzPJhY2J9LG3Y+Vnj17RvdVREFBgV588cUmx87EiRMlydPjx23dBg4cqMzMzEbr9ttvP0mK6fj59NNPdcYZZyg7O1tZWVnq06dP9I/vux8/e+yxR7MfixyrWMaI3fdH5Dhp7vgJh8PNHvPx8GL/RvrY8OHDG61PS0vTPvvs0+yEm7be8+c//7m6deumww47TPvuu6+uuuoqqx9d2NJx0ty6goICVVZWqm/fvk2OlerqaqvHieT+PDN06FClpKTEdJzs7uuvv1ZKSkqTfdC/f3/l5ORE91ss48zuvvrqK0mKfhS2SVv33XffJhOwYh2vI/srPT1dv/71r/XCCy+oX79+Ovroo/Wb3/zG9aSweET29+7n7933a2lpqSoqKvTAAw806YORicDtMV4PGzasyZgX63jy1VdfKSUlRSNGjGjxNbGOOV5cn5geXy21WdrVR7/77jtt3bo1pvc899xzdeSRR+qnP/2p+vXrp/POO0/Lly+3OrGO6/H/sXH9GYTzKQAAAAB4oVN7NwAAAAAAgiTyB8RHHnlE/fv3b/L9Tp28uw1LTU1tdr3jOJ69R0O33367br31Vl188cWaN2+eevbsqZSUFE2fPr3ZP5x68VQ6yX3Oll5nez8lug6mzjnnHB111FF65pln9PLLL2vBggX69a9/rb/+9a866aST2rVt4XBYxx13nG666aZmvx/5A60XElm3iooKjR8/XllZWZo7d66GDh2qLl266P3339fPf/7zJsdPoo+d1l6bbP3bK/vvv7/y8/P13HPP6cUXX9Rf/vIX3XfffZo1a5bmzJnTrm0Lh8Pq27evHnvssWa/36dPH8/ey6T+sTzVLZHbSibTp0/XqaeeqmeffVYvvfSSbr31Vt1xxx3617/+pUMOOaTd2hUZsy688EJddNFFzb7m4IMP9uz9kn0csjG+tscxsft7ZmRk6I033tDrr7+u559/Xi+++KKefPJJ/fCHP9TLL7/cYr5ECPL1eHu/b6z8fD4FAAAAgJYwmQ4AAAAAXBg0aJC+/PLLJut3Xxf5OLy+fftGn6bVkkT+ITTyhI4Ix3H05ZdfxvTH7qefflrHHHOM/vjHPzZaX1FRod69e8fdto4wSSLejIMGDdKrr76qLVu2NHo6XeRjQQcNGtTo9bvXWZK++OILde3atdEEmwEDBujKK6/UlVdeqU2bNunQQw/VbbfdZmUyXaSNX375ZaOnHW3evLnJ01OGDh2q6upqXx07GzZs0NatWxs9eeWLL76QJA0ePNjVNlasWKHNmzfrr3/9q44++ujo+sLCQqO2BeHY8WL/RvpYfn6+9tlnn+j6HTt2qLCwsEl/cvuemZmZOvfcc3Xuuedqx44d+tGPfqTbbrtNM2fOVJcuXWLK6TaD2/PMq6++qiOPPLLNiZeJPs80PMa//PJLhcNh13VszqBBgxQOh1VQUBB9wpsklZSUqKKiIrrfYhlndhc5b3/yySdtjj1ttfWjjz5SOBxu9HS6WMfr3ffX0KFDdcMNN+iGG25QQUGBRo0apYULF+rRRx+Nu62tZQiHwyosLGz0BK3d+2CfPn3UvXt31dfX+2q8/vLLL+U4TqP3jHU8GTp0qMLhsD777LNGHyXaUKxjjhdMj6+Gbd7d559/rt69ezd5wpib90xJSdGxxx6rY489Vnfeeaduv/123XLLLXr99det7Aeux+0KwvkUAAAAALzAx7wCAAAAgAsnnHCC3nnnHX3wwQfRdWVlZU2eDHTCCScoKytLt99+u3bu3NlkO5GP2pQU/cNTRUWFlTY39PDDD2vLli3Rr59++mkVFxfHNHkqNTW1ydMunnrqKX377bdGbcvMzPTsIyP9KjMzM646n3zyyaqvr9e9997baP1dd92lUCjUpH7vvPOO3n///ejX33zzjf72t7/p+OOPV2pqqurr65vs6759+2rgwIGqra2NuX1uHHvsserUqZOWLFnSaP3umaRdT81755139NJLLzX5XkVFherq6iRJXbt2ja6zra6uTr///e+jX+/YsUO///3v1adPH40ePdrVNiJPj2l4/OzYsUP33XefUdsSOYbY4sX+nThxotLS0vS73/2u0T7+4x//qMrKSk2aNCnm99y8eXOjn0lLS9OIESPkOE6zY7upgQMH6sADD9TDDz+s6urq6PqVK1fq448/bvTac845R/X19Zo3b16T7dTV1TXqD/GOPfFYvHhxo6/vueceSTKapHvyySdLkhYtWtRo/Z133ilJ0drGMs7s7tBDD9WQIUO0aNGiJvsqlic8nXzyydq4caOefPLJ6Lq6ujrdc8896tatm8aPH9/o9c8++2yj8+d7772nd999N7q/tm3bpu3btzf6maFDh6p79+7WxusTTjhBkpqMTZFaRqSmpurMM8/UX/7yF33yySdNttNe1zobNmzQM888E/26qqpKDz/8sEaNGtXs08maM3nyZKWkpGju3LlNnhoa6Q+xjjleMD2+BgwYoFGjRumhhx5qVItPPvlEL7/8cvRYi+U9y8rKmvxMZAKizT7a0a/HbQrC+RQAAAAAvMCT6QAAAADAhZtuukmPPvqojjvuOF1zzTXKzMzUgw8+qL333ltlZWXRp1pkZWVpyZIl+vGPf6xDDz1U5513nvr06aOioiI9//zzOvLII6N/3I/8kenaa6/VCSecoNTUVJ133nlW2t+zZ0/94Ac/0NSpU1VSUqJFixZp2LBhuvTSS11v45RTTtHcuXM1depUjRs3Th9//LEee+yxRk+uiMfo0aP15JNP6vrrr9eYMWPUrVs3nXrqqUbb9JvRo0fr1Vdf1Z133qmBAwdqyJAhGjt2bJs/d+qpp+qYY47RLbfconXr1mnkyJF6+eWX9be//U3Tp0+PPnkl4sADD9QJJ5yga6+9Vunp6dEJEZGP0dqyZYv23HNPnXXWWRo5cqS6deumV199VatWrdLChQtbbcuUKVP00EMPqbCwMKYnTfXr10/XXXedFi5cqNNOO00nnniiPvzwQ73wwgvq3bt3oyfC3Hjjjfr73/+uU045RVOmTNHo0aO1detWffzxx3r66ae1bt069e7dWxkZGRoxYoSefPJJ7bfffurZs6cOPPBAHXjgga7b5dbAgQP161//WuvWrdN+++2nJ598Uh988IEeeOABde7c2dU2xo0bpx49euiiiy7Stddeq1AopEceecT4o9iGDh2qnJwc3X///erevbsyMzM1duzYRk8S8jsv9m+fPn00c+ZMzZkzRyeeeKJOO+005efn67777tOYMWN04YUXxvyexx9/vPr3768jjzxS/fr1U15enu69915NmjSp0VMid7ds2TJNnTpVS5cu1ZQpU2LaF7fffrtOP/10HXnkkZo6darKy8t177336sADD2w0wW78+PG6/PLLdccdd+iDDz7Q8ccfr86dO6ugoEBPPfWU7r77bp111lmSdo09S5Ys0a9+9SsNGzZMffv21Q9/+MOY2uVWYWFh9Bh/55139Oijj+r//u//NHLkyLi3OXLkSF100UV64IEHoh+X/N577+mhhx7S5MmTdcwxx0iKbZzZXUpKipYsWaJTTz1Vo0aN0tSpUzVgwAB9/vnn+vTTT5ud3Nucyy67TL///e81ZcoUrV69WoMHD9bTTz+tt956S4sWLWrSb4YNG6Yf/OAHuuKKK1RbW6tFixapV69e0Y+5/uKLL3TsscfqnHPO0YgRI9SpUyc988wzKikpafNaYcKECVq5cmXMY8zo0aN15plnatGiRdq8ebMOP/xwrVy5MvqkqYb7cf78+Xr99dc1duxYXXrppRoxYoTKysr0/vvv69VXX41OtErkOLXffvvpkksu0apVq9SvXz/96U9/UklJiZYuXep6G8OGDdMtt9yiefPm6aijjtKPfvQjpaena9WqVRo4cKDuuOOOmMccL3hxfC1YsEAnnXSSjjjiCF1yySWqqanRPffco+zsbOXm5sb8nnPnztUbb7yhSZMmadCgQdq0aZPuu+8+7bnnnvrBD37QYjvWrVunIUOG6KKLLtKyZcti2g9cj9vlp/MpAAAAALQrBwAAAAA6qIsuusgZNGiQ69evWbPGOeqoo5z09HRnzz33dO644w7nd7/7nSPJ2bhxY6PXvv76684JJ5zgZGdnO126dHGGDh3qTJkyxfnvf/8bfU1dXZ1zzTXXOH369HFCoZATyy3a+PHjnQMOOKDNTK+//rojyfnzn//szJw50+nbt6+TkZHhTJo0yfn6669dv5/jOM727dudG264wRkwYICTkZHhHHnkkc4777zjjB8/3hk/fnyT93zqqaeabCPyvddffz26rrq62vm///s/Jycnx5EUbX9L2yksLHQkOUuXLm1zfwwaNMiZNGlSk/WSnKuuuiqm/JKc2bNnR7+ePXu2I8kpLS1t9LqlS5c6kpzCwsLous8//9w5+uijnYyMDEeSc9FFF7l+3y1btjg/+9nPnIEDBzqdO3d29t13X2fBggVOOBxuNtOjjz7q7Lvvvk56erpzyCGHNNrXtbW1zo033uiMHDnS6d69u5OZmemMHDnSue+++9psx5lnnulkZGQ45eXlrtseUVdX59x6661O//79nYyMDOeHP/yhk5eX5/Tq1cuZNm1ak7wzZ850hg0b5qSlpTm9e/d2xo0b5/z2t791duzYEX3d22+/7YwePdpJS0trUpvWxNOv/vvf/zpHHHGE06VLF2fQoEHOvffeG/M+eOutt5zDDz/cycjIcAYOHOjcdNNNzksvvdTkeGipL0e+1/BYcxzH+dvf/uaMGDHC6dSpU6P2xzpG7L4/Iv141apVjda31O9b09K2vNy/juM49957r/O9733P6dy5s9OvXz/niiuuaNJf3b7n73//e+foo492evXq5aSnpztDhw51brzxRqeysrLVNtxzzz2OJOfFF1+MK8MTTzzhfO9733PS09OdAw880Pn73//unHnmmc73vve9Jq994IEHnNGjRzsZGRlO9+7dnYMOOsi56aabnA0bNkRfs3HjRmfSpElO9+7dHUlN+k9rWhonBw0a1GgMi/SJzz77zDnrrLOc7t27Oz169HCuvvpqp6amJqb8kW01tHPnTmfOnDnOkCFDnM6dOzt77bWXM3PmTGf79u2NXud2nGnuPOQ4jvPmm286xx13XHRsPPjgg5177rknpvaXlJQ4U6dOdXr37u2kpaU5Bx10UKMxxXH+N9YsWLDAWbhwobPXXns56enpzlFHHeV8+OGH0dd99913zlVXXeV873vfczIzM53s7Gxn7NixzvLly9tsx+jRo53+/fvH1PaIrVu3OldddZXTs2dPp1u3bs7kyZOd/Px8R5Izf/78JnmvuuoqZ6+99nI6d+7s9O/f3zn22GOdBx54oNHrWhqn2tLS2NFcDSPn+5deesk5+OCDnfT0dOd73/tes9cibvzpT39yDjnkECc9Pd3p0aOHM378eOeVV15p9JpYxpzdub0+8fL4chzHefXVV50jjzzSycjIcLKyspxTTz3V+eyzzxq9xu17vvbaa87pp5/uDBw40ElLS3MGDhzonH/++c4XX3zRahs+/vhjR5Jz8803x9x+x+F6PJbjornrBjf8cD6NaOlYAQAAAACbQo5j+L9BAwAAAECSmjJliv71r3/p/fffV6dOnZSTkxPzNqZPn67f//73qq6ujn6UI9AeQqGQrrrqKlcfaxiPfv366Sc/+YkWLFjgyfYqKirUo0cP/epXv9Itt9ziyTaRXCZMmKDvvvuu2Y+JTNb3POecc7Ru3Tq9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xcWSpNzcXD300EP629/+Fq1NpG6t+fjjj/XDH/5QGRkZ6tWrly677DJVV1c32W9z5sxRnz59lJWVpWnTpmnHjh3R1zz99NM66KCDotuYOHGitm7d2tzbeYLJdAAAAAAAAAAAAAAAAACMXX/99Xrrrbf097//Xa+88or+/e9/6/33349+/+qrr9Y777yjJ554Qh999JHOPvtsnXjiiSooKNC4ceO0aNEiZWVlqbi4WMXFxZoxY4ar9124cKG+//3va82aNbryyit1xcw7lP/lukavuXHeIt1w+Y+15qXHdcTog3XqlOnaXFbR5rbD4bD23HNPPfXUU/rss880a9Ys/eIXv9Dy5csbve61115Tfn6+XnnlFT333HNNtrNq1SpJ0tI7c1W85mWt+uej0e999fV6PfvSCj330N167qFFWvmf9zX/3qWNfv6hp55T79699d577+maa67RFVdcobPPPlvjxo3T+++/r+OPP14//vGPtW3bNlf7bHfbtm3Tb3/7Wz3yyCN64403VFRUFN3/M2bM0DnnnBOdYFdcXKxx48a1ur2tW7fqhBNOUI8ePbRq1So99dRTevXVV3X11Vc32W95eXlasWKF/vznP+uvf/2r5syZI0kqLi7W+eefr4svvjj6mh/96EdyHCeujG7wMa8AAAAAAAAAAAAAAAAAjGzZskUPPfSQHn/8cR177LGSpKVLl2rgwIGSpKKiIi1dulRFRUXRdTNmzNCLL76opUuX6vbbb1d2drZCoVDMH0F68skn68orr5Qk/fznP9ddCxfo9bf/q+HDBkdfc/XUc3XmpF3tWnLHTL34+tv64xPP6qYrp7S67c6dO0cnd0nSkCFD9M4772j58uU655xzouszMzP14IMPKi0trdntRD7yNSe7u/r37d3oe+FwWMvumqPu3TIlST8+82S99uZ7uq3Ba0aO2Fe//OUvJUkzZ87U/Pnz1bt3b1166aWSpFmzZmnJkiX66KOPdPjhh7eaqTk7d+7U/fffr6FDh0raNfFx7ty5kqRu3bopIyNDtbW1rmvz+OOPa/v27Xr44YeVmbkr17333qtTTz1Vv/71r9WvXz9Juz5y9k9/+pO6du2qAw44QHPnztWNN96oefPmqbi4WHV1dfrRj36kQYMGSZIOOuigmLPFImmfTBcOh423UV9fH52p2Nay4zhNliW5Xo60NxwO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VWVlpUKhkEKhkHJzc9t8z8GDB+v222/XxRdfrO7du2vvvffWA4/+pcnrPv9qncadNkVd9jlcB/7wbK18Z7WrTPX19brkkks0ZMgQZWRkaPjw4br77rsbvWbKlCmaPHmybrvtNg0cOFDDhw+Pti3yMa+DBw+WJJ1xyQ0K7XGoBo+d1Ggbjzz9nAaPnaTs7x2t8664WVuqt0a/N+GsS3XNL3+t6dOnq0ePHurXr5/+8Ic/aOvWrZo6daq6d++uYcOG6YUXXmgzz7p16xQKhbR582ZdfPHFCoVCWrZsmVasWKFQKKTnn39eBx98sLp06aLDDz9cn3zyiav9JEl/+ctfdMABByg9PV2DBw/WwoULG31/8ODBmjdvns4//3xlZmZqjz320OLFi6PfdxxHubm52nvvvZWenq6BAwfq2muvdf3+XmAyHQAAAAAAAAAAAAAAAABj119/vd566y39/e9/1yuvvKJ///vfev/996Pfv/rqq/XOO+/oiSee0EcffaSzzz5bJ554ogoKCjRu3DgtWrRIWVlZKi4uVnFxsWbMmOHqfRcuXKjvf//7WrNmja688kpdMfMO5X+5rtFrbpy3SDdc/mOteelxHTH6YJ06Zbo2l1W0ue1wOKw999xTTz31lD777DPNmjVLv/jFL7R8+fJGr3vttdeUn5+vV155Rc8991yT7axatUqStPTOXBWveVmr/vlo9Htffb1ez760Qs89dLeee2iRVv7nfc2/d2mjn3/oqefUu3dvvffee7rmmmt0xRVX6Oyzz9a4ceP0/vvv6/jjj9ePf/xjbdu2rdU8e+21l4qLi5WVlaVFixapuLhY55577v/20403auHChVq1apX69OmjU089VTt37mxzP61evVrnnHOOzjvvPH388cfKzc3VrbfeqmXLljV63YIFCzRy5EitWbNGN998s6677jq98sorknZNxrvrrrv0+9//XgUFBXr22Wd10EEHtfneXuqU0HcDAAAAAAAAAAAAAAAAEDhbtmzRQw89pMcff1zHHnusJGnp0qUaOHCgJKmoqEhLly5VUVFRdN2MGTP04osvaunSpbr99tuVnZ2tUCik/v37x/TeJ598sq688kpJ0s9//nPdtXCBXn/7vxo+bHD0NVdPPVdnTtrVriV3zNSLr7+tPz7xrG66ckqr2+7cubPmzJkT/XrIkCF65513tHz5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OjpQWlraIwbHoIx/YzinwEn4/X5x27IsV23LsnqMW0e7mGOScsZjUkz5ypOE7phy5cU8uYlJwtSYdOdJBd0xSXglT9nGkSuTY9KZJ6m+rqHZttPHLuHE6JU8mVQ7ir1GqK4dumOS8Fqe3M49FUyLyfS9kds4co1Jwot50lnTkvsxLaZi2BsN1LO7qetJwtSYdOdJBVP3Rl7KUzZzT8LUmHTnSSJfMeVC59m9GNZTrkyOSWeeJEw9uyePxyt5ykd9y6V2FGONUD3fTD27A97Mk5s4JHKtHcVWI1TPt/Q9qeqYJLyYp0wxJb9uoTivnzyOvtrJ39/bv925cyf8fj82b97co2aPGDEi479z0y4pKenx+s5Di9lKH8OwYcN6/bqbdnJM6WMEgMGD/vPolgX3Y871fXLzb5P/fPnll+Pkk0/Gn/70J/y///f/cOutt2L16tX4zne+k3FMprTT17zb9aSmWhERERERERERERERERERERER0YA1ZcoUDB48GK+++mriax0dHXjnnXcAADNnzkQsFsOOHTswderUlP/GjRsHoPuBM+dXdqr20uv/l2hHo1FsfjOAg6dV9PvvDjvsMGzatCnx60aTlZaWYsKECXjhhRdSvv7CCy9g+vTp4jFv/VcdOjt3Jf780ksvYcSIEYlPkstk//33R0lJScq4du/ejVdffbXHuF566aVEu62tDe+88w4OPvjgxNf2228/LFq0CE888QSuvfZa3HfffdKwjFa0n0xHRERERERERERERERERERERERmGDlyJBYuXIhly5Zh9OjR2HvvvVFVVQWfr/tXbR5wwAG48MILcdFFF2H16tWYOXMmWltbsWHDBhx22GE47bTTMHnyZITDYWzYsAGHH344hg8fjuHDhysZX836xzCtYiIOnlaBO37+ENo6Qrj0/DP7/XdXXXUVfvrTn+L888/HDTfcgLKyMrz00ks44ogjcOCBB2LZsmWoqqrC/vvvjxkzZmDdunXYsmULHnroIfGYu3bvxmVLV+GH3/smtn3wEaqqfoyrrrqq30973GOPPbB48eJELiZOnIj//u//xmeffYbLLrss5XtXrVqFPffcE2PHjsWNN96IMWPG4KyzzgIAXH311TjllFNwwAEHoK2tDc8991zKg3ZexIfpiIiIiIiIiIiIiIiIiIiIiIhI7Pbbb8eiRYtw+umno7S0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JsnYdJ7dDVtPkUgE9fX1qKiowLC2t3N/zwDY42fAsgr/SWFu2r3JtT+reUuO75ja96zXmARjw4SZnsqT6nZnZye2bduGiooKDB48OKUWhMNhlJeXo6OjI/GJg70p2l/z6hQ4Cb/fL25bluWqbVlWj3HraBdzTFLOeEyKKV95ktAdU668mCc3MUmYGpPuPKmgOyYJr+Qp2zhyZXJMOvMk1dc1NNt2+tglnBi9kieTakex1wjVtUN3TBJey5PbuaeCaTGZvjdyG0euMUl4MU86a1pyP6bFVAx7o4F6djd1PUmYGpPuPKlg6t7IS3nKZu5JmBqT7jxJ5CumXOg8uxfDesqVyTHpzJOEqWf35PF4JU/5qG+51I5irBGq55upZ3fAm3lyE4dErrWj2GqE6vmWvidVHZOEF/OUKabk15Vw+kjuy+R2XzGo6q8/qt8z1byYJx3t9DXvNidqqhURERERERERERERERERERERERFREePDdERERERERERERERERERERERERDTg8WE6IiIiIiIiIiIiIiIiIiIiIiIiGvD4MB0REREREREREREREREREREREXnStg8+grXP57Hln7XaXqO6uhozZszQ1j/lz6BCD4CIiIiIiIiIiIiIiIiIiIiIiPpWs6oth3/115xf78p7Tsj53+Zq/fr1uPrqq9He3p731yYC+Ml0RERERERERERERERERERERERERHyYjoiIiIiIiIiIiIiIiIiIiIiI5D799FNceOGF2GOPPTB+/HjccccdmDdvHq6++moAQCQSwdKlS7HPPvtgjz32wJFHHomNGzcCADZu3IhLLrkEHR0dsCwLlmWhurq639ecPHkybr75Zlx66aUYOXIkJk6ciJ//8vEe3/f2e9sw94yLMXTKUTj0hHPx/IubXcW0ceNGWJaFDRs2YPbs2Rg+fDjmzp2L2trcfm1sPB7Hqjt+jn1nnYwhFUdixhfPx5+feyHx986vpX3k989kHG9bWxsuvPBC7LXXXhg2bBimTZuGdevW5TQeSsWH6YiIiIiIiIiIiIiIiIiIiIiISGzJkiV44YUX8OSTT+LZZ5/Fpk2b8Prrryf+/qqrrsKLL76IRx55BG+++SbOPfdcnHzyyairq8PcuXOxZs0alJaWorm5Gc3NzVi6dKmr1129ejVmz56NN954A1dccQUW33ALat/dlvI9y25a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4cN0REREREREREREREREREREREQk9sYbb+Dtt9/GEUccgY6ODqxatQoAcOaZPX+dKpGJ+DAdEREREREREREREREREREREREpcdttt6G2thYlJSWYNWsWNm3alPj1pNnatGkTTjnllIx/Hw6Hcx1mwqLv/xi/fOKp/3zB8iWaX//613HPPfdk1d+IESMy/t3TTz+NY/bP/PdUeHyYjoiIiIiIiIiIiIiIiIiIiIiIxGbOnInNmzcr62/27NnYsmWLsv56s2rZYixd9I3/fGHsIYlmaWlp1v31Nd599tkHaHu7z3+f/GtpKf/4MB0RERERERERERERERERERERERln2LBhmDp1qtbX2HvMaOw9ZvR/vjBB9nr9jrdN1D1p5uv/W4iIiIiIiIiIiIiIiIiIiIiIiIi8jQ/TEREREREREREREREREREREREZxrbtQg+BqKjE43FxH/w1r0REREREREREREREREREREREhhg8eDAsy0Jrayv2sm1YlqCzXbuUjauoRAUPIup+z0weW5GybRtdXV1obW2Fz+dDSUlJzn3xYToiIiIiIiIiIiIiIiIiIiIiIkP4/X7su+++aGpqwra2VllnOxvUDKrYtAveN93vmcljK3LDhw/HxIkT4fPl/sta+TAdEREREREREREREREREREREZFBRowYgWnTpmH37edA9NF0V72mblDF5Gfn5v5vdb9nJo+tiPn9fgwaNAiW6KMc+TAdEREREREREREREREREREREZFx/H4//DubZJ0MHapmMMUm/EHu/1b3e2by2Ai5f6YdERERERERERERERERERERERERkUcU7cN08Xhc3EcsFoNt267atm33aANw3XbGG4/HtbTdxmFyTFImxpSvPEnoiknKi3lyE5OEqTHpzpMKumJSwSt5ymbuSZgak+48SemMScJreSpE7TAlpnzkSUJ3TBJey5PbtgqmxZSvPOVKd0wSXsyTzv2Q04+JMenOkwo6Y5KOyyt5KmTtMCEm3XlSQVdMUl7KUzZzT8LUmHTnSUJ3TBJey5PbuSdlYkz5yJOEzphUjK23MRZrnty2JUyNSXeepHTHJOGlPGUz9yRMjUl3nqR0xyThpTxlM/ckTI1Jd54k8hGTdHxeyZOJ66loHqarqanB9OnTUVlZCQDYvn27uM/6+nqEw2EAQF1dHTo7OwEAtbW1iEQiAIBAIIBoNIp4PI5AIIB4PI5oNIpAIAAAiEQiqK2tBQB0dnairq4OABAOh1FfXw8ACIVCaGhoAAC0t7ejsbERABAMBtHU1P1xnK2trWhubgYAtLS0oKWlBQDQ3NyM1tZWAEBTUxOCwSAAoLGxEe3t7QCAhoYGhEKhoo9JysSY8pUnCV0xSXkxT25ikjA1Jt15UkFXTCp4JU/ZzD0JU2PSnScpnTFJeC1PbueeCqbFlI88SeiOScJreXI791QwLSbT90a6Y5LwYp7cxCR9z0yMSXeeVBhoZ3fT15OEqTHpzpMKumKS8lKespl7EqbGpDtPErpjkvBantzOPSkTY8pHniRMPbsD8Fye3M49CVNj0p0nKVPP7gA8lads5p6EqTHpzpOUyT/X8FKespl7EqbGpDtPEgP95xoDfT1ZtorHWPMoFAqhrKwMbW1tKF8zKfeOqjsQi8Xg8/lgWVa/baD7gpHc9vv9iScm+2vbtg2fz5d4ElJ127IsV3GYHBOqy3LPJwC7qt24mPKSp5tG5/6mVXekjLFm0V9z7wvAFWuPT4xdNC5059NTeXI59yTrIL6izciYdOdJWjtQ3ZEydsk6WHz3vJQx+laNEo/NK3nKZu5ZK8tzfsvsqnYjY9KdJxXX0OTx3r34uZz7umLt8Sljl+QzvqLNU3ly21ZZO0yJKR95UnkNXXvFxpz7AoAr7zkhZeySscWWBz2VJ7dzT1I7APTY55oQU17yJLyGJo9Xci0AutdBYozCuhZbHvRWnlzOPVW1w6SYdOdJxTU0OSbJ2WBRzXHqzu7o+7znpm1SnrJpS9eBiTHpzpPqa6j0jJwck/Qelpfy5Hru5al2FGuN0Fk7nJjuufL5nPsC1N4rSj+7F3ue3M491feZTYgpH3ky6YycfK9Ieg9Lcq8ouW1Knty2ddWOQsakO0+qr6GSdbD47nmpMQn3a27uFRVLnrKZe/m8z1xsNSJTW3pGdq6hTkySe0XJ6wAQ3itKO7sXe56S233GpKl2eKVGZIpJMtfSa4d0T7So5jh116p+7n9n2y50nlTF4SamcDiM8vJydHR0oLS0NONbPCj37BSWkxAJv98vbluW5aptWVaPcetoF3NMUs54TIopX3mS0J0DSV9ey5ObmCRMjUl3nlTQsZ5UjdEreco2jlyZHJPOPEnprN8SToxeyVM+65upMenMk4TuHKjoxyt5cjv3VDAtJtP3RrpzIOHFPOmsacn9mBZTMeyNVM9b3WeNYs5TofdDye1irBE6akdvY1HVj46zRjHnKZu5J2FqTLrzJGHyWaOv+9/Ztk3IU772RibHpDNPEjrPGlIq7hWZlKd81Ldcakcx1giT63dv81bCi3lyE4dErrWj2GpEsdVvFf0B3smTm5gkTI3J5L2Rrvqd3s6VF/OUj5jcXlPUZJ2IiIiIiIiIiIiIiIiIiIiIiIioiPFhOiIiIiIiIiIiIiIiIiIiIiIiIhrw+DAdERERERERERERERERERERERERDXh8mI6IiIiIiIiIiIiIiIiIiIiIiIgGPD5MR0RERERERERERERERERERERERAMeH6YjIiIiIiIiIiIiIiIiIiIiIiKiAY8P0xEREREREREREREREREREREREdGAx4fpiIiIiIiIiIiIiIiIiIiIiIiIaMAbVOgBEJE5rhx3trCHDiXjICok2TrgGiBv4DqggY57IiKuAyKAeyIigOuAiHsiIq4DIoB7IiKA64CIe6KBhZ9MR0RERERERERERERERERERERERAMeH6YjIiIiIiIiIiIiIiIiIiIiIiKiAY8P0xEREREREREREREREREREREREdGAx4fpiIiIiIiIiIiIiIiIiIiIiIiIaMDjw3REREREREREREREREREREREREQ04PFhOiIiIiIiIiIiIiIiIiIiIiIiIhrw+DAdERERERERERERERERERERERERDXh8mI6IiIiIiIiIiIiIiIiIiIiIiIgGPD5MR0RERERERERERERERERERERERAMeH6YjIiIiIiIiIiIiIiIiIiIiIiKiAY8P0xEREREREREREREREREREREREdGAx4fpiIiIiIiIiIiIiIiIiIiIiIiIaMDjw3REREREREREREREREREREREREQ04BXkYbqGhgYcf/zxmD59Oj73uc9h586dhRgGEREREREREREREREREREREREREQBgUCFe9OKLL8aPfvQjHHPMMQgGgxgyZEghhkFEREREREREREREREREREREREQEoAAP07311lsYPHgwjjnmGADA6NGj8z0EIiIiIiIiIiIiIiIiIiIiIiIiohRZ/5rXv/3tb1iwYAEmTJgAy7Lwu9/9rsf31NTUYPLkyRg6dCiOPPJIvPLKK4m/q6urw4gRI7BgwQJ8/vOfx803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lfVb9X3mQteITHkyrX4nxyTdYyXnQOUZKHmM2bbzUfdMyUFftSPbmHRfc1X+nNCk+q3y7A64u1dkQt1TXb/zeZ+5kHsjU2oHoPas0SMHCvZ+Ruxh+2krvc+sqXaYuDdS+XNCVfUbUHePE1D/c0KT90am/ZwwHA6jvLwcHR0dKC0tzfjag3IedYE5CZHw+/3itmVZrtqWZfUYt452IWKSUJFHhzOeYsiTRG9jl9CdA0lfhc5TtmsoVzrWk0k1Qsc6UDlvAT3rSfWaz7adz7onpbp2mFojVNcOk3OQPMcknBgLnSc360mqt1glTKoRuuqIynmru36r6MeEPOneD6mqHQ6TakSmPEmprB26cyBR6DwV4rynqh/TaoTq2pE8BtPOGjrP7ibvjVQoRO0wYW+UK5V7UoeO9aT7XpFJdU+FQtWOQl9zJXTXjlzpPgOZujeS0H3WKHSN0Fk7dKwn065VKu4V5avuSRS6dhTqmitl6r0iXff9vL43MuE+cyGuuRLFVr9V9AcMrL2Rin5MqxE6aoeqs4au+p3ezpUJeXKzniRU7P3Sx+h2TOp2KERERERERERERERERERERERERERFig/TERERERERERERERERERERERER0YDHh+mIiIiIiIiIiIiIiIiIiIiIiIhowOPDdERERERERERERERERERERERERDTg8WE6IiIiIiIiIiIiIiIiIiIiIiIiGvD4MB0RERERERERERERERERERERERENeHyYjoiIiIiIiIiIiIiIiIiIiIiIiAY8PkxHREREREREREREREREREREREREAx4fpiMiIiIiIiIiIiIiIiIiIiIiIqIBr2gfpovH4+I+YrEYbNt21bZtu0cbgOu2M954PK6l7TYOHTFJJMchVUx5kuht7BKqcwBAybhMyJPb9aQiVtXryaQakWlc0lhVrCeHjvWkal0VOk9u2lK9xSfpy7Qa0VeeJEzOQfIckzAlT27aUrpqhwk1oq+2hK71pKN+S/sBimdvlCuVtcNhUo3IlCcVMabHlCvdOZAodJ7yuTfSUTtMqhG95UlKdf1WddbQeXY3eW+kgs7aYUKNUF070mNSQVUO0ueelAl5crOeVMh37fDC3kh17TDxrGFKnvK5H9JROwpdIzLlSQUd60lFf7run5i+N5LGmY/aYdreSMrU+t3b3JModJ7cricplWcNE2tE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O7UjEZPiHEjXe8Hz5LKtsn6rvs9c6BqRKU+m1e/kmKR7rOQcqDwDJY8x23Y+6p4pOeirdmQbk+5rrsqfE5pUv1We3QF394pMqHuq63c+7zMXcm9kSu0A1J41euRAwd7PiD1sP22l95k11Q4T90Yqf06oqn4D6u5xAup/Tmjy3si0nxOGw2GUl5ejo6MDpaWlGV97UM6jLjAnIRJ+v1/ctizLVduyrB7j1tEuREwSKvLocMZTDHmS6G3sErpzIOmr0HnKdg3lSsd6MqlG6FgHKuctoGc9qV7z2bbzWfekVNcOU2uE6tphcg6S55iEE2Oh8+RmPUn1FquESTVCVx1ROW91128V/ZiQJ937IVW1w2FSjciUJymVtUN3DiQKnadCnPdU9WNajVBdO5LHYNpZQ+fZ3eS9kQqFqB0m7I1ypXJP6tCxnnTfKzKp7qlQqNpR6GuuhO7akSvdZyBT90YSus8aha4ROmuHjvVk2rVKxb2ifNU9iULXjkJdc6VMvVek676f1/dGJtxnLsQ1V6LY6reK/oCBtTdS0Y9pNUJH7VB11tBVv9PbuTIhT27Wk4SKvV/6GN2OSd0OhYiIiIiIiIiIiIiIiIiIiIiIiKhI8WE6IiIiIiIiIiIiIiIiIiIiIiIiGvD4MB0RERERERERERERERERERERERENeHyYjoiIiIiIiIiIiIiIiIiIiIiIiAY8PkxHREREREREREREREREREREREREAx4fpiMiIiIiIiIiIiIiIiIiIiIiIqIBjw/TERERERERERERERERERERERER0YDHh+mIiIiIiIiIiIiIiIiIiIiIiIhowOPDdERERERERERERERERERERERERDTg8WE6IiIiIiIiIiIiIiIiIiIiIiIiGvD4MB0RERERERERERERERERERERERENeHyYjoiIiIiIiIiIiIiIiIiIiIiIiAY8PkxHREREREREREREREREREREREREAx4fpiMiIiIiIiIiIiIiIiIiIiIiIqIBjw/TERERERERERERERERERERERER0YDHh+mIiIiIiIiIiIiIiIiIiIiIiIhowOPDdERERERERERERERERERERERERDTg8WE6IiIiIiIiIiIiIiIiIiIiIiIiGvD4MB0RERERERERERERERERERERERENeHyYjoiIiIiIiIiIiIiIiIiIiIiIiAY8PkxH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7mq/C8GhQ4fMxIkTTZMmTUz58uVN586dzfz5801eXp7fo8ElOnWOzOxCn+6Qm13o0x1yswt9Okdm9qFTZ1JTU018fLx59dVXTUREhNm1a5cxxph58+aZa665xvF+BQUFZuzYsYU/kwkEAiY8PNyMGDHC69FxFl73eaHwMjfOgP84B+5wDuzCOXCO10T24Rw4xzmwC2egdEVGRhZm+mt++e8+JCQk6OuXNZw/itOnMcb8v//3/0yXLl1MIBAwFSpUMBUqVDAhISGmW7du5ujRo+dg0vML58AuxenzQj4D1lyme/31180NN9xgcnJyCtd27txp2rdvb+bNm2f27dtn2rZta3r27Pm7e1WuXNksXbq0yPq7775rKleu7OncTr311lsmIiLCDBo0yISFhRX+xz1lyhSTmJjo62xlxaZNm8zgwYNNeHi4ufjii80jjzxiduzY4fdYKIGSdnohXlDlHNjFiz45B5yDso5z4A7nwC68JnKOM2AfLzo9ffq02bdvn/n666+DvmxRt25ds2rVKmNM8A/Ntm3bZmJiYlzve/r0afP555+bzMxMc+LECU9mxe8rzT45B85wBvzDOXCHc2CX0uqTM+Ac58A/nAPnOAd24TWRc2fOnDGpqalm3759v/vcBx54wHz//fe/+Zy1a9f+5hdKl9d9/qedO3eat99+27z99ttm586dJRnzvMM5sEtpnQObz8CvseYyXXx8vNm8eXOR9aysLBMXF2eMMWbDhg2mRo0av7vXJZdcYr744osi61988YW5+OKLizXPsWPHiv3lRLNmzczs2bONMcEvhLKyskz16tUd7XUh+uabb8z48eNNgwYNTKVKlUz//v1Nhw4dTPny5c2zzz7r93hwoaSdXogXVDkHdvGiT84B56Cs4xy4wzmwC6+JnOMM2Kekne7YscNce+211v/L2fDwcPPVV18ZY4J/rvD555+bSpUq+TkaXPC6T84B56As4hy4wzmwi5d9cgY4A2UV58A5zoFdeE3kTmRkpNmzZ4/fY8Aj9OkOudmFPr0R4vfHzHrl4MGD+umnn4qs//TTT/r2228lSZdeeqlOnDjxu3sNHjxYY8aM0enTpwvXTp8+raefflqDBw8u1jwxMTGqUqVKsb6c2L59u9q1a1dkPTo6WkePHnW014XizJkzWrBggW677TbVqVNH8+fP1yOPPKJvvvlG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dfnll6tu3bpasWKFrrrqKn388ccKCwvzdba33377rOuBQEDh4eGqV6+e4uLizvFUAAAAAAAAAAAAAAAAAIBfWHOZrnv37lq9erVatWqlIUOGqG/fvpoxY4b27t2rRx999Hd/f/PmzQs/5vX3ZGVlOZqtW7duCgQC+u83AfxlLRAI6Nprr9WiRYtUpUoVR3sDAAAAAAAAAAAAAAAAAErOmo95/W8ZGRnKyMhQ/fr1dfvtt//u81NTUwt/ferUKf39739XQkKCWrduLUnauHGjPv/8cz300EMaN26co1lWr16t4cOH6+mnn1bLli0lSR999JGSk5M1YsQIRUdH6/7771erVq00Y8YMR3sDAAAAAAAAAAAAAAAAAErO2st0JTFo0CDVrFlTY8aMCVofOXKk9u3bp5kzZzra78orr9TLL7+sNm3aBK1v2LBBf/7zn/X5559r1apV+tOf/qS9e/eWeH4AAAAAAAAAAAAAAAAAgDNWXabbvn27pkyZom3btkmSGjVqpCFDhqhBgwaO9omOjtYnn3yi+vXrB63v3LlTLVq00LFjxxztFxERoY8//lhXXnll0PrWrVvVsmVL/fjjj/r666/VqFEjnTx50tHeAAAAAAAAAAAAAAAAAICSC/F7AK8sWLBAV155pTZt2qSmTZuqadOmysrK0pVXXqkFCxY42isiIkIbNmwosr5hwwaFh4c7nu3qq6/WE088oe+//75w7fvvv9eTTz6pP/zhD5J+vqhXu3Ztx3sDAAAAAAAAAAAAAAAAAEquvN8DeOXJJ5/UX//6V40ePTpofeTIkXryySfVs2fPYu/1yCOP6MEHH1RWVpZatmwpScrMzNTMmTOVnJzseLYZM2aoa9euuuyyywovzO3bt0/x8fFavHixJCk3N1cjRoxwvDcAAAAAAAAAAAAAAAAAoOSs+ZjXihUr6tNPP1W9evWC1nfu3KmmTZs6/vjUN998U88//3zQR8YOHTpUd955p6v5CgoKtGLFCu3YsUOS1KBBA910000KCbHmzQEBAAAAAAAAAAAAAAAAoMyy5jLdLbfcojvuuEP33ntv0Porr7yiefPmafny5T5NBgAAAAAAAAAAAAAAAAA431nzMa9dunTRU089pU2bNumaa66RJG3cuFHz589Xamqq3n777aDnnmurV6/W6tWrdejQIRUUFAQ9NnPmzHM+DwAA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", + "text/plain": [ + "<Figure size 3175x500 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Display certain statistics about the number of operations by node\n", + "_ = dinov2_stats.log_nb_ops_by_type(\"stats_ops.png\", log_scale=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configure the model for inference\n", + "Currently, the model has no implementation and exists only as a data structure. To set an implementation, we will specify a backend and a data type." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:11.046810Z", + "iopub.status.busy": "2025-05-19T10:06:11.046666Z", + "iopub.status.idle": "2025-05-19T10:06:11.053580Z", + "shell.execute_reply": "2025-05-19T10:06:11.053327Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import aidge_backend_cpu\n", + "\n", + "dinov2_model.set_backend(\"cpu\")\n", + "dinov2_model.set_datatype(aidge_core.dtype.float32)\n", + "dinov2_model.forward_dims([[1,3,224,224]], True)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, to run inference, we need to schedule the execution. To do so we create a ``Scheduler`` object, which takes the graph and generates an optimized scheduling using a consummer-producer (C-P) heuristic." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:11.054502Z", + "iopub.status.busy": "2025-05-19T10:06:11.054406Z", + "iopub.status.idle": "2025-05-19T10:06:11.063533Z", + "shell.execute_reply": "2025-05-19T10:06:11.063196Z" + } + }, + "outputs": [], + "source": [ + "s = aidge_core.SequentialScheduler(dinov2_model)\n", + "s.generate_scheduling()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition, it is possible to verify the memory usage of the different nodes composing the graph." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:11.064622Z", + "iopub.status.busy": "2025-05-19T10:06:11.064369Z", + "iopub.status.idle": "2025-05-19T10:06:11.291630Z", + "shell.execute_reply": "2025-05-19T10:06:11.291317Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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yp/+9Kfss88+C3xNfX19Ro4cmXXXXTdt27ZNt27dcuihh+a9995r1G7NNdfMTjvtlPvuuy8DBgxIu3btst566zXck/Wmm27Keuutl7Zt22ajjTbKv/71r/n6uueee7L55punQ4cO6dy5c3bZZZc888wzjdrMvVTz008/nX322ScrrbRSNttss4waNSo1NTULXO7pp5+e2travPXWW019yxbpoosuyrrrrpv27dtnpZVWyoABAzJmzJiG+a+99lp+8IMfZO211067du2y8sorZ4899sirr74637KeeOKJbLHFFmnXrl2+8IUv5NRTT21Yp0+2/8tf/tLwPnXs2DE77rhjnnrqqcXWe9lll2X8+PE555xzGoW/SdKuXbtcddVVqampyYgRI5KUA9eamppcddVV8y3rzjvvTE1NTW677baGaW+99VYOOuigdOvWLW3atMm6666b3//+941eN/devdddd11++ctfZrXVVkv79u0zderUxda/KAu6B/CWW26ZL3/5yw3vbfv27dO3b9/86U9/SlIe+T5w4MC0a9cua6+9du6+++75lrsk6wQAAFBEAmAAAIDlwJprrplNNtkk1157bcO0v/zlL3n//fczdOjQBb7m0EMPzXHHHZdBgwblggsuyIEHHpjRo0dnyJAhmT17dqO2L774YvbZZ5/svPPOOeOMM/Lee+9l5513zujRo3P00Udnv/32yymnnJKXXnope+65Z+rr6xtee/fdd2fIkCGZOHFiTj755BxzzDF54IEHMmjQoAUGpnvssUemTZuW008/PQcffHDDyNbRo0fP13b06NHZcssts9pqq33Kd25+V1xxRY488sj0798/I0eOzCmnnJINN9ww48aNa2jz8MMP54EHHsjQoUNz4YUX5rDDDstf//rXbLnllpk2bVpDu7feeitbbbVVnnrqqZxwwgk5+uijM3r06FxwwQXz9XvNNddkxx13zAorrJCzzjorJ554Yp5++ulsttlmC3yfPu7WW29N27Zts+eeey5wfu/evbPZZpvlnnvuyfTp0zNgwICstdZa+eMf/zhf2+uvvz4rrbRShgwZkiSZMGFCvv71r+fuu+/OEUcckQsuuCB9+/bNsGHDMnLkyPle/6tf/Sr/+7//m2OPPTann356s126+b333stOO+2UgQMH5uyzz06bNm0ydOjQXH/99Rk6dGh22GGHnHnmmfnoo4+y++6754MPPmh4bVPXCQAAoFBKAAAAfGaNGjWqlKT08MMPly6++OJSx44dS9OmTSuVSqXSHnvsUdpqq61KpVKp1KtXr9KOO+7Y8Lq///3vpSSl0aNHN1reHXfcMd/0Xr16lZKUHnjggYZpd955ZylJqV27dqXXXnutYfpll11WSlK69957G6ZtuOGGpa5du5YmTZrUMO3f//53qUWLFqX999+/YdpJJ51USlLae++951vPvffeu9SzZ89SXV1dw7THHnuslKQ0atSoRb5Hc5f73//+d4Hz11133dIWW2zR8HyXXXYprbvuuotc5tz3+OMefPDBUpLS1Vdf3TDtRz/6Uammpqb0r3/9q2HapEmTSl26dCklKb3yyiulUqlU+uCDD0qdO3cuHXzwwY2WOX78+FKnTp3mm/5JnTt3Lm2wwQaLbHPkkUeWkpSeeOKJUqlUKp1wwgmlVq1alSZPntzQZubMmaXOnTuXDjrooIZpw4YNK/Xo0aP07rvvNlre0KFDS506dWp4L+69995SktJaa621wPdnUR5++OGFbsu5y/34Z2qLLbYoJSmNGTOmYdqzzz5bSlJq0aJF6Z///GfD9Lmf1Y8ve0nXCQAAoIiMAAYAAFhO7Lnnnpk+fXpuu+22fPDBB7ntttsWevnnG264IZ06dco222yTd999t+Gx0UYbZYUVVsi9997bqH3//v0b3bN14MCBSZJvfvObWWONNeab/vLLLydJ3nnnnTz++OP53ve+ly5dujS0W3/99bPNNtvk9ttvn6+2ww47bL5p+++/f95+++1GdY0ePTrt2rXLbrvtttj3pik6d+6cN998Mw8//PBC27Rr167h59mzZ2fSpEnp27dvOnfunMcee6xh3h133JFNNtkkG264YcO0Ll26ZN999220vLFjx2bKlCnZe++9G22P2traDBw4cL7t8UkffPBBOnbsuMg2c+fPvSTzXnvtldmzZ+emm25qaHPXXXdlypQp2WuvvZIkpVIpN954Y3beeeeUSqVGtQ0ZMiTvv/9+o/VNkgMOOKDR+9NcVlhhhUaj29dee+107tw5/fr1a/gcJvN/Jj/NOgEAABRJy2oXAAAAwJJZddVVM3jw4IwZMybTpk1LXV1ddt999wW2feGFF/L++++na9euC5w/ceLERs8/HvImSadOnZIkq6+++gKnz72P8GuvvZakHM59Ur9+/XLnnXfmo48+SocOHRqm9+7de76222yzTXr06JHRo0dn6623Tn19fa699trssssuiw0+l0RNTU3Dzz/72c9y9913Z+ONN07fvn2z7bbbZp999smgQYMa2kyfPj1nnHFGRo0albfeeiulUqlh3vvvv9/w82uvvdYoOJ+rb9++jZ6/8MILScqB+oKsuOKKi6y/Y8eOjS5xvCBz5899vzbYYIOss846uf766zNs2LAk5cs/r7LKKg11/Pe//82UKVNy+eWX5/LLL1/gcj/5WVnQ9msOX/jCFxptt6T8+VvcZ/LTrBMAAECRCIABAACWI/vss08OPvjgjB8/Pttvv306d+68wHb19fXp2rXrAu+rm5TD5I+rra1dYLuFTf94INpUCxo9Wltbm3322SdXXHFF/ud//if3339/3n777ey3336LXV7btm2TlEPbBZk2bVpDm6QcTD/33HO57bbbcscdd+TGG2/M//zP/2T48OE55ZRTkiQ/+tGPMmrUqBx11FHZZJNN0qlTp9TU1GTo0KGN7n+8pOa+5pprrkn37t3nm9+y5aL/e96vX7/861//ysyZM9OmTZsFtnniiSfSqlWrfPGLX2yYttdee+W0007Lu+++m44dO+aWW27J3nvv3dDf3Lr222+/HHDAAQtc7vrrr9/oeSVG/yaf/jP5adYJAACgSATAAAAAy5Fvf/vbOfTQQ/PPf/4z119//ULb9enTJ3fffXcGDRrUrIFdr169kiTPPffcfPOeffbZrLLKKo1G/y7K/vvvn/POOy+33npr/vKXv2TVVVfNkCFDmlTDJ0eHTps2LW+88Ua23XbbRtM7dOiQvfbaK3vttVdmzZqV73znOznttNNywgknpG3btvnTn/6UAw44IOedd17Da2bMmJEpU6bM1/eLL744X02fnNanT58kSdeuXTN48ODFrtMn7bTTTnnwwQdzww03LDAUf/XVV/P3v/89gwcPbrS999prr5xyyim58cYb061bt0ydOrXRZZVXXXXVdOzYMXV1dZ+qrs+iIq4TAABAU7gHMAAAwHJkhRVWyCWXXJKTTz45O++880Lb7bnnnqmrq8uvfvWr+ebNmTNnviDz0+rRo0c23HDDXHXVVY2W+eSTT+auu+7KDjvssMTLWn/99bP++uvnt7/9bW688cYMHTp0sSNjk2TrrbdO69atc8kll8w3Ovfyyy/PnDlzsv322zdMmzRpUqM2rVu3Tv/+/VMqlTJ79uwk5VGmnxzlfNFFF6Wurq7RtCFDhuTBBx/M448/3jBt8uTJ8428HjJkSFZcccWcfvrpDX183H//+99FruOhhx6arl275rjjjmu41+1cM2bMyIEHHphSqZThw4c3mtevX7+st956uf7663P99denR48e+cY3vtEwv7a2NrvttltuvPHGPPnkk02u67OoiOsEAADQFEYAA4u35ZbJhhsmI0dWuRBoRjU1yZ//nOy6a7UrAYDFWthlbT9uiy22yKGHHpozzjgjjz/+eLbddtu0atUqL7zwQm644YZccMEFC71/cFOdc8452X777bPJJptk2LBhmT59ei666KJ06tQpJ598cpOWtf/+++fYY49NkiW6/HNSHlU7fPjw/PKXv8w3vvGNfOtb30r79u3zwAMP5Nprr822227bKCzfdttt07179wwaNCjdunXLM888k4svvjg77rhjw/1zd9ppp1xzzTXp1KlT+vfvnwcffDB33313Vl555UZ9//SnP80f/vCHbLPNNvnRj36UDh065Le//W3WWGONTJ48ueEetiuuuGIuueSSfPe7381Xv/rVDB06NKuuumpef/31/O///m8GDRqUiy++eKHruPLKK+dPf/pTdtxxx3z1q1/N97///fTv3z/jx4/PlVdemRdffDEXXHBBNt100/leu9dee2X48OFp27Zthg0blhYtGv8t+Jlnnpl77703AwcOzMEHH5z+/ftn8uTJeeyxx3L33Xdn8uTJS7QdPkuKuE4AAABLyghgWN5973vl4KqmJmndOunbNxkxIpkzp9qVfT5dfnk5MF9xxfI2WdDImtNOSzbdNGnfPlnIPfsatunHH9dd17jNzJnJL36R9OqVtGmTrLlm8vvfL7q+I49MNtqo3H7DDeeff999yS67JD16JB06lNt88r6BV145f20fu6feAl155fzr+swzyeqrJ3vskXznO8l22zWef8cd5WV/8pfGJ5+crLHGovsDAJIkl156aS6//PJMnDgxP//5z3PCCSfknnvuyX777ZdBgwYts34GDx6cO+64IyuvvHKGDx+ec889N1//+tdz//33p3fv3k1a1r777pva2tp86UtfysYbb7zEr/vFL36RP/zhD6mrq8uIESNy7LHH5l//+ldOOeWU3HLLLY1Cz0MPPTQffvhhzj///Pzwhz/MzTffnCOPPDJ/+MMfGtpccMEF2X///TN69Oj85Cc/yTvvvJO77747K6ywQqN+V1999dx7773p169fTj/99IwcOTIHHHBADjrooCRpdO/hffbZJ3/961+z2mqr5ZxzzsmPf/zjXHfdddlwww1z4IEHLnYdN9988zzxxBPZc889c8MNN+Swww7Lr3/96/Tr1y9/+9vf8qMf/WiBr9trr71SX1+fadOmZa+99ppvfrdu3fLQQw/lwAMPzE033ZQjjjgiF1xwQSZPnpyzzjprsXV9FhVxnQAAAJZUTemT17QCli/f+14yYUIyalQ5ELz99uSHPyyHjCecsGz6MAJ4yY0cmcyYUf75hBOS996bP/g86aTytDffTH73uwWHxDU15W368VC0c+fGQesuu5S3/amnloP/d95J6uuTRf0y98gjk7XXTsaNS554IvnYpQqTJKefnkyfnmy/fdKtW3LbbckxxyT/3/+X7LRTuc2VVyY//nHy8fv81dSU2y/MlVcmRx01b10ffrjcx7e/nVx2WXLFFcmxx5bfr7mXefzZz5Jrr03WWqscTM+1xRblsPuqqxbe38LMmlX+Q4kFMQIYAD4T3n333fTo0SPDhw/PiSeeWO1yPrWjjjoql112WT788MPU1tZWuxwAAAA+R4wAhiJo0ybp3r08EvTww5PBg5NbbinPmzmzHKyttlp5ROfAgY3DtEmTkr33Ls9v3z5Zb71y6LYo//u/SadO848MnWtBoz1vvrkcsM31738nW22VdOxYHi270UbJI48seU0ffJDsu295nXr0SH7963JQfdRR89osbt2bw1FHJccfn3z96wtvc8opydFHl9drUTp3Lm/XuY+Ph7933JH83/+VA//Bg8uB6CabLDr8TZILLyz/gcBaay14/s9/nvzqV+URyn36lIPe7bZLbrqpcbuamsa1LSr8/aR77km++c1k2LBy8NuiRfmz8OGH8z4DSXlbHX98OayeG6rPmFF+vtVW5eevv14OwldYofw52nPPcig+18knl/944be/TXr3nvcevvBC8o1vlJ/375+MHdu4xlmzkiOOKH+22rYt71tnnLHk6wgAfGpXXnll6urq8t3vfrfapSyx6dOnN3o+adKkXHPNNdlss82EvwAAAFScABiKqF27coCVlEOsBx8sXz74iSfKl9vdbrtyAJaUA7WNNiqHuk8+mRxySPLd7yYPPbTgZY8ZUw5nR48uB7Cf1r77Jl/4Qnkk6KOPloO+Vq2WvKZjjknuv78cdI8dm/z978ljjzXuY3HrviDbb18OExf2WHfdT7/OTfXDHyarrJJsvHH50s4fv2DDLbckAwYkZ59dDri/9KVy2P2JXz4uE++/n3Tp0njahx+WQ9HVVy8HsE89tWTL+vOfkx13TH75y+Tjl9770peSnj2Te+8tP//gg/L23GOPcrj94IPl6Q88UA72t9qqPNp5l12SyZPLYfjYscnLLyefvKzhiy8mN95YDrEff7z8uu98pzwSeNy45NJLy6ONP+7CC8vv8R//WB7pPHp0uQ4AoNncc889ufjii3Paaadl1113zZrL0XfvJpts0jDid8SIEfnqV7+aqVOnLtcjmAEAAFh+tax2AcAyVColf/1rcuedyY9+VB4dOWpU+d+ePcttjj22PHp01Kjy5X5XW608ba4f/aj8+j/+sRw8ftxvflO+5+ytt5Yvw7s0Xn89Oe64ZJ11ys+/+MV58xZX0wcflC//O2ZMsvXW5TajRs1bx7nLX9y6L8hvf7voEHVuSN3cRowoj5Jt3z65667kBz8oh65HHlme//LLyT/+UR6d+uc/J+++W24zaVJ5/ZaVP/6xHNJfdtm8aWuvXQ6k11+/HA6fe255xPBTT5VD/YX58MNyoPvzn88fuCblUPe++8qXzv7738uh8Kqrlkfq3nffvPm9e5fD57Fjk//8J3nllXIQnSRXX10O6R9+OPna18rTZs0qT1911fLzu+5Knn22/Jma+9k4/fRy+D/X66+XP5ObbVYe7dyr16d8AwGAJTVixIg88MADGTRoUC666KJql9MkO+ywQ/70pz/l8ssvT01NTb761a/md7/7Xb7xjW9UuzQAAAA+hwTAUAS33VYenTp7dnl04z77lC99e999SV1dOUj7uJkzk5VXLv9cV1cOv/74x+Stt8ph2cyZ5eDx4/70p2TixPKo27nB2tI45pjk+99PrrmmfAnjPfYoX3J4SWp6+eXyun48oO7UqRxMzvWf/yx+3RdktdWWft2WhY+PFvnKV5KPPkrOOWdeAFxfXw4mR48ur3uSnH9+svvuyf/8T3kU+NK6997kwAPLl2n++MjnTTYpP+badNOkX79ySPyrXy18ee3alQPVK64ojyLv16/x/LmX8J49u/zZ3XLL8vQttpgXQM8NgpPkmWfKwe/c8DcpX865c+fyvLmf01695oW/H3/dx/9g4OPrk5Tvrb3NNuXP1Hbble9/vO22C183AGCp3dfct+poRqeffnpOX9gfGAIAAECFuQQ0FMFWW5UvbfvCC+XRq1ddVb7n7YcfJrW15UssP/74vMczzyQXXFB+7TnnlH/+2c/Kgd/jjydDhsy7hPRcX/lKOUT75KWIF6RFi/nbzJ7d+PnJJ5dHjO64Y/mesP37l0eyNqWmRVmSdV+Qz9IloD9u4MDkzTfLAXZSvjftaqvNC3+TcqBaKpXbLa3/+79k553L91bef/9Ft23Vqvz5ePHFRberrS3fC/qrXy1/Zp95pvH8rbYqB90PP1ze7nNHmW+xRflSzZMnl//95jebti4dOjStfVKu8ZVXyoH29OnlewvvvnvTlwMAAAAAABVmBDAUQYcOSd++80//ylfKo2AnTkw233zBr73//vJ9VPfbr/y8vj55/vlyIPtxffok551XHpVZW5tcfPHC61l11fJlmj/6aF749vjj87f70pfKj6OPLo8IHTUq+fa3F1/TWmuVQ8eHH07WWKM87f33y23mXmZvSdZ9QT4rl4D+pMcfT1ZaKWnTpvx80KDkhhvKQfcKK5SnPf98OXxf1GWYl8R995VHvJ51Vvn+y4tTV1cecb3DDotv26ZN+V68u+9eDnznhv9J+TO2+urle+8+/vi8AHi11cqP884r/xHA3BHA/folb7xRfswdBfz008mUKfN/fj9u7uveeaccpCfJP/85f7sVVyzfT3ivvcr1brddOYT+5P2QAQAAAADgM0QADEX2pS8l++5bHsF53nnlUPS//y3fJ3j99cujb7/4xfLlnR94oBwwnn9+MmHCggO0L32pPDJzyy2Tli2TkSMX3O/AgeXLNf/85+VLFo8bl1x55bz506eX7/+7++7l+7m++WY5zN1tt/L8xdXUsWNywAHlZXTpknTtmpx0Ujn8rKlZ8nVfkKW9BPT48eXH3NGw//lPud411pgXHL7+ejlIfP31cng6Nxzv27cc5t56a3l9v/718j1+x44tXxL74/dF3mef8ujUAw9MTjmlfA/g445LDjpo3uWf//zn8v10n3123utefLEcGo8fX94Oc/vu3z9p3bq8fXfaKfnxj8vbY/z48vzWrefVP2JEuba+fcth6znnJK+9Vr6k95Jo0ya58cbyZb/nhsBzR1ZvtVX5EtZ9+ybdus17zRZbJBddVN6ucy/dPHhwst565e08cmQyZ075PshbbJEMGLDw/gcPLi/ngAPKtU+dWr639cedf345HP7KV8qfqxtuSLp3L19eGgAAAAAAPsNcAhqWU6VSKVOnTs1iLsZcHlW7//7JT35Svp/prrs2Hjn7y1+WL3c7ZEg52O3evdxmYdZeuxzYXXtteZkL0qVL8oc/JLffXg7orr22fMnnuWprk0mTynV96Uvly+tuv305yFzSms4/v3zf1p12Kgd6gwaVR3a2bbvk694cLr20HBoefHD5+Te+UX5+yy3z2gwfXp520knlMPYrXyk/HnmkPL9Vq+Q3vymv34Yblu9/e/755fZzrbBCORieMqUcdu67b/mSzRdeOK/N++8nzz3XuL7vf7/c12WXlUcMz+377bfL86+6Kpk2LTnjjHIAOvfxne/MW8Z775XXr1+/8qjfqVPLYf2iRt1+UuvW5ZB/003Loe+TT5anb7VVefT43Pv/zrXFFuXpc0f/JuWw///7/8p/JPCNb5Q/B2utlVx//aL7btGiHI5Pn16+j/T3v5+cdlrjNh07JmefXX5vv/a15NVXy5/nFr42AQAAAAD4jCsBy6X333+/lKT0fvmur/M/dtih8Qvat19wu6RU2mKLxm1XWWXhbQcMaNy2V6+Ft+3fv3Hb/v0X3rZXr8ZtBwxYeNtVVmncdostFt62ffvGbXfYYeFtP3lI3H33Rbf98MN5bQ84YNFtJ06c1/YHP1h021demdf22GMX2XbwSceUel12dqnXZWeXfr3T4EW23fmEHzW0Pe07i34f9jrm0FKvy84uvTxlcql08cWLrve22+bVO2rUotv+8Y/z2v7xj4tuO2rUvLa33bbothdfPK/tvfcuuu3ZZ89r+9BDi2570knz2j755KLbHnvsvLavvLLotj/4wby2Eycuuu0BB8xr++GHi267++6NP8OLausYUX4U/BhRevLJeW1POmnRbR96aF7bs89edNt7753X1jGizDFiHseIMseIsmV4jHjouONKs2bNKrd1jChzjJjHMaKsiseIWbNmlW6++ebSnDPOWHRb5xHlh2NE+eEYMe/xcQU8RjTwf40yx4h5HCPKHCPKmusYAZ9DNaVSqVTtEBpouqlTp6ZTp05597XXsvLKK8/foLa28WjYjz5a+MJatJh32eCmtp02rfyVuiA1NeVLQX+attOnl+/9uzDPP1++tPHGG5cvl3zGGcnf/578+9/JKqs0bjv3PsRJMmNG+bLLC9OUtu3bz7vk9MyZ5UsQL4u27drNG2k6a1Yye/YCmz317oTs9JcbUvp/bVvNmZOWdQt/z2a2apn6Jra97Tv758udupTrWJg2bcqXBE/KtS5p2zlzyu/FwrRuPe+ey01pW1dX3nYL06pVuX1T29bXL/7+0J9oO3v27Nx5550ZMmRIWn38/tEtW867n3OpVN43FqYpbZuy3xf9GPHxfbkpbQt0jGhy27Zty5+LprZtyn7/GT1GNNpX27ev2DFioRwjyhwjPl3bgh4jZs+enb/cc0+233nn8nfq5+A8YqEcI8ocIz5d22Y8Rsyur8/tt9+eHQYPTquFtyzceUQjjhFNb+sY8enaLsUxYvb06Qv+f2pS2POI+do6RpR/doz4dG0rcIxY4O+TCn4e0ezHCPgc8umH5V2HDo1PABbVrinLXFIfPwFalm0/fsK2MOeeW77EcevWyUYblQPgXr0W/ZqPn2AuTlPatmkz76R4WbZt3XreSfwnlKZ3aAh/k2R2y5aZvYRH9aa0TatW8/4zsyzbtmy55CdhTWlbW7vkn+GmtG3RoultZ89OXdu25Z8X9r7U1Cz5cpvSNvlstK3mMeLTtC3QMaJibYtwjFjYvtrcx4gl4Rjx6do6RpQV6Rgxe3ZKc3/Rk3w+ziOWhGPEp2vrGFG2rPf7ub/g/ngYsjhFOI9YFm0dIz5dW8eIsqYeI1q0WPz/U5NinUd8kmNEmWPEp2tbiWPE4n6fVMTziE/Ttin7PXwOCYCB5dNXvpI8+mi1qwAAAAAAAPhMabH4JgAAAAAAAAAsDwTAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAURMtqFwAAzPPWSxMy7cMZzbLs9iu0zWp9ujXLslm4t16flGnTZjXb8tu3b53V1li52ZbP/N56cXyz7afJ/9tX+3ZvtuWzYK9Oei8fzWyefbVDm9ZZc+WVmmXZLNwrUyfnoznNtE1btk7vFbs0y7JZuFc/mJyP5sxslmV3aNkma3a0TSvtzbcmN9t5Uvv2rfOF1WzTSnvlg8n5aHbz7KdJ0qFVm/S2r1bUq+++l2nNdI6UJO3btM6aqzhPqrS3Xns30z5qpuNvh9ZZrdcqzbJsFu61ie9l2oxm2qZtW6dXV/spLG8EwADwGfHWSxMybMAvmrWP3z1ymhC4gt56fVIO2u3iZu/n9zceIQSukLdeHJ9hXz2h2fv53WNnCIEr6NVJ72X7kVc2ax9/Oep7QuAKemXq5Hzz1suatY97dj5UCFxBr34wOdvc8T/N2sfY7X4gBK6gN9+anP2GXdGsffzhdwcLgSvolQ8mZ/DtlzR7P3fvcLgQuEJeffe97PDrK5u9n9uP/p4QuILeeu3dDNt5ZLP28btbjxICV9BrE9/Lridf2ax93Hzy94TAsJxxCWgA+IxozhGFleyDeZpz5G81+qFy+5B9tbKaa+RvpftgnuYa+VvpPpinuUb+VroP5qnE+YtzpMpqzpG/1eiHNOvI32r0Q1lzjfytdB/M01wjfyvdB7BsCYABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGD7hb3/7W3beeef07NkzNTU1ufnmmxvNL5VKGT58eHr06JF27dpl8ODBeeGFFxq1mTx5cvbdd9+suOKK6dy5c4YNG5YPP/ywUZsnnngim2++edq2bZvVV189Z599dnOvGgAAAAAAAAUnAIZP+Oijj7LBBhvkN7/5zQLnn3322bnwwgtz6aWXZty4cenQoUOGDBmSGTNmNLTZd99989RTT2Xs2LG57bbb8re//S2HHHJIw/ypU6dm2223Ta9evfLoo4/mnHPOycknn5zLL7+82dcPAAAAAACA4mpZ7QLgs2b77bfP9ttvv8B5pVIpI0eOzC9/+cvssssuSZKrr7463bp1y80335yhQ4fmmWeeyR133JGHH344AwYMSJJcdNFF2WGHHXLuueemZ8+eGT16dGbNmpXf//73ad26ddZdd908/vjjOf/88xsFxQAAAAAAANAURgBDE7zyyisZP358Bg8e3DCtU6dOGThwYB588MEkyYMPPpjOnTs3hL9JMnjw4LRo0SLjxo1raPONb3wjrVu3bmgzZMiQPPfcc3nvvfcqtDYAAAAAAAAUjRHA0ATjx49PknTr1q3R9G7dujXMGz9+fLp27dpofsuWLdOlS5dGbXr37j3fMubOW2mllebre+bMmZk5c2bD86lTpyZJZs+endmzZy/NarGcqp8zJ21qmvfveOrnzPH5Wgpz37slfQ/r6uvSqm3zfjXX1dfZphVUV1eXVq2b/+/t6ups16XRlH21Evvp3H5s08qpr5uTNi1qmr0P2/TTa+p3av2cOWnTzH/v7Dypsurn1FVgmzr2Lo0mn/vWzUnrVs27TesceyuqEvvp3H5s10+vSee+FThHmtuPbVo5dXV1adWmuY+/9tOl8Wm+U9vUNu++urzup61atap2CVA1NaVSqVTtIuCzqqamJn/+85+z6667JkkeeOCBDBo0KG+//XZ69OjR0G7PPfdMTU1Nrr/++px++um56qqr8txzzzVaVteuXXPKKafk8MMPz7bbbpvevXvnsssua5j/9NNPZ911183TTz+dfv36zVfLySefnFNOOWW+6WPGjEn79u2X0RoDAAAAAMDyb+5tHOHzyAhgaILu3bsnSSZMmNAoAJ4wYUI23HDDhjYTJ05s9Lo5c+Zk8uTJDa/v3r17JkyY0KjN3Odz23zSCSeckGOOOabh+dSpU7P66qtnq622ysorr7x0K8Zy6ZlJE7PHrdc1ax837Dw0/VbuuviGLNDs2bMzduzYbLPNNkv0F4cvPflGjtvh7Gat6Zzbf5o+X169Wftgnpeen5BjDxnV7P2ce/mB6fOlbotvyAI1ZV996T+v57jtzmz2ms654/j0WW+NZu+HsmfHT8x3f3tDs/Zxzff3yDrdfad+Wk39Tn3mvQnZc+zoZq3pj9vsm34rOfZWyrNTJmTv+65u1j6u3XL/rNPZNv20mrqfvvjShPz4uGubtaYLztk7ffvYppXyzHsTMvTea5q9n+u2+q7j71Joyr767DsTs/8VzXuOlCRXH7xH1unhPKlSXnp2fI476Ipm7eOc3x+cPuss+HecLF5Tv1Ofe3Nivn9+8+6rvz1mj6z9BfspLE8EwNAEvXv3Tvfu3fPXv/61IfCdOnVqxo0bl8MPPzxJsskmm2TKlCl59NFHs9FGGyVJ7rnnntTX12fgwIENbX7xi19k9uzZDV/iY8eOzdprr73Ayz8nSZs2bdKmTZv5prdq1cqlLD6nWrRsmZml+mbvw+dr6S3pflrbojazZ8xp1lpqW9TaphVUW1ub2bOadz+d24/tuvSWZF+txH46tx/btHJa1LbMzPrmvTBSi1rfqcvCkn6ntmjZMjPjPKlIWrSsrcA2dexdFpb43Le2ZWbNbt5tWuvYW1GV2E/n9mO7Lr0lOvetwDnS3H5s08qpra3N7JnNffy1ny4LTflOnVnXvPuq/RSWP81/Yw5Yznz44Yd5/PHH8/jjjydJXnnllTz++ON5/fXXU1NTk6OOOiqnnnpqbrnllvznP//J/vvvn549ezZcJrpfv37ZbrvtcvDBB+ehhx7K/fffnyOOOCJDhw5Nz549kyT77LNPWrdunWHDhuWpp57K9ddfnwsuuKDRCF8AAAAAAABoKiOA4RMeeeSRbLXVVg3P54ayBxxwQK688sr89Kc/zUcffZRDDjkkU6ZMyWabbZY77rgjbdu2bXjN6NGjc8QRR2TrrbdOixYtsttuu+XCCy9smN+pU6fcdddd+eEPf5iNNtooq6yySoYPH55DDjmkcisKAAAAAABA4QiA4RO23HLLlEoLv2RGTU1NRowYkREjRiy0TZcuXTJmzJhF9rP++uvn73//+6euEwAAAAAAAD7JJaABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAAABSEABgAAAAAAACgIATAAAAAAAABAQQiAAQAAAAAAAApCAAwAAAAAAABQEAJgAAAAAAAAgIIQAAMAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAAAFIQAGAAAAAAAAKAgBMAAAAAAAAEBBCIABAAAAAAAACkIADAAAAAAAAFAQAmAAAAAAAACAghAAAwAAAAAAABSEABgAAAAAAACgIATAAAAAAAAAAAUhAAYAAAAAAAAoCAEwAAAAAAAAQEEIgAEAAAAAAAAKQgAMAAAAAAAAUBACYAAAAAAAAICCEAADAAAAAAAAFIQAGAAAAAAAAKAgBMDQRHV1dTnxxBPTu3fvtGvXLn369MmvfvWrlEqlhjalUinDhw9Pjx490q5duwwePDgvvPBCo+VMnjw5++67b1ZcccV07tw5w4YNy4cffljp1QEAAAAAAKBABMDQRGeddVYuueSSXHzxxXnmmWdy1lln5eyzz85FF13U0Obss8/OhRdemEsvvTTjxo1Lhw4dMmTIkMyYMaOhzb777punnnoqY8eOzW233Za//e1vOeSQQ6qxSgAAAAAAABREy2oXAMubBx54ILvsskt23HHHJMmaa66Za6+9Ng899FCS8ujfkSNH5pe//GV22WWXJMnVV1+dbt265eabb87QoUPzzDPP5I477sjDDz+cAQMGJEkuuuii7LDDDjn33HPTs2fP6qwcAAAAAAAAyzUjgKGJNt100/z1r3/N888/nyT597//nX/84x/ZfvvtkySvvPJKxo8fn8GDBze8plOnThk4cGAefPDBJMmDDz6Yzp07N4S/STJ48OC0aNEi48aNq+DaAAAAAAAAUCRGAEMTHX/88Zk6dWrWWWed1NbWpq6uLqeddlr23XffJMn48eOTJN26dWv0um7dujXMGz9+fLp27dpofsuWLdOlS5eGNp80c+bMzJw5s+H51KlTkySzZ8/O7Nmzl83KsVypnzMnbWqa9+946ufM8flaCnPfuyV9D+vq69KqbfN+NdfV19mmFVRXV5dWrZv/7+3q6mzXpdGUfbUS++ncfmzTyqmvm5M2LWqavQ/b9NNr6ndq/Zw5adPMf+/sPKmy6ufUVWCbOvYujSaf+9bNSetWzbtN6xx7K6oS++ncfmzXT69J574VOEea249tWjl1dXVp1aa5j7/206Xxab5T29Q27766vO6nrVq1qnYJUDU1pVKpVO0iYHly3XXX5bjjjss555yTddddN48//niOOuqonH/++TnggAPywAMPZNCgQXn77bfTo0ePhtftueeeqampyfXXX5/TTz89V111VZ577rlGy+7atWtOOeWUHH744fP1e/LJJ+eUU06Zb/qYMWPSvn37Zb+iAAAAAACwnJp7i0b4PDICGJrouOOOy/HHH5+hQ4cmSdZbb7289tprOeOMM3LAAQeke/fuSZIJEyY0CoAnTJiQDTfcMEnSvXv3TJw4sdFy58yZk8mTJze8/pNOOOGEHHPMMQ3Pp06dmtVXXz1bbbVVVl555WW5iiwnnpk0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o3To0KHR/PXXX79KlQEAAAAAAEDlCIAphKFDhyZJjjzyyIZpNTU1KZVKqampSV1dXbVKAwAAAAAAgIoRAFMIr7zySrVLAAAAAAAAgKoTAFMIvXr1qnYJAAAAAAAAUHUCYArjpZdeysiRI/PMM88kSfr3758f//jH6dOnT5UrAwAAAAAAgMpoUe0CYFm48847079//zz00ENZf/31s/7662fcuHFZd911M3bs2GqXBwAAAAAAABVhBDCFcPzxx+foo4/OmWeeOd/0n/3sZ9lmm22qVBkAAAAAAABUjhHAFMIzzzyTYcOGzTf9oIMOytNPP12FigAAAAAAAKDyBMAUwqqrrprHH398vumPP/54unbtWvmCAAAAAAAAoApcAppCOPjgg3PIIYfk5Zdfzqabbpokuf/++3PWWWflmGOOqXJ1AAAAAAAAUBkCYArhxBNPTMeOHXPeeeflhBNOSJL07NkzJ598co488sgqVwcAAAAAAACVIQBmuXbvvfdm0KBBad26dY4++ugcffTR+eCDD5IkHTt2rHJ1AAAAAAAAUFkCYJZrW2+9ddq2bZuvf/3r2WqrrfLNb34zAwcOTMuWPtoAAAAAAAB8/rSodgGwNF555ZX85je/yRprrJHf/e532XzzzdO5c+cMGTIkZ555ZsaNG5f6+vpqlwkAAAAAAAAVIQBmudarV68ceOCBufLKK/Pqq6/mxRdfzIUXXphu3brlkksuyaabbpouXbpUu0wAAAAAAACoCNfJpVDWWmut1NbWpqamJjU1Nbn55psza9asapcFAAAAAAAAFSEAZrn3+uuv57777su9996b++67L++++2423XTTbL755rntttsycODAapcIAAAAAAAAFSEAZrm21lpr5b333sugQYPyjW98I4ceemgGDBiQli19tAEAAAAAAPj8cQ9glmvTp09PkrRo0SItW7ZMq1atUltbW+WqAAAAAAAAoDoEwCzX3nnnnTz44IPZYYcdMm7cuOy4445ZaaWVstNOO+Xcc8/Nww8/nPr6+mqXCQAAAAAAABXhOrks99ZZZ52ss846Oeyww5IkzzzzTMP9gE899dQkyZQpU6pYIQAAAAAAAFSGEcAUyoQJE/LEE0/kiSeeyL///e9MnTo1M2fOrHZZAAAAAAAAUBFGALNcmzhxYu67777cd999uffee/P888+nVatW2XjjjTN06NBstdVW2WSTTapdJgAAAAAAAFSEAJjlWvfu3dOqVasMGDAgu+22W7baaqtsuummadeuXbVLAwAAAAAAgIoTALNcu+iii/K9730vHTp0WGibc845J8cdd1wFqwIAAAAAAIDqcA9glmtnnnlmJk2atND55557bn7xi19UsCIAAAAAAACoHgEwy7XNNtssgwcPzn//+9/55p133nn5+c9/nquvvroKlQEAAAAAAEDlCYBZrl1zzTXp06dPhgwZkqlTpzZM//Wvf53jjz8+V155ZYYOHVrFCgEAAAAAAKByBMAs11q2bJmbbrop7dq1y0477ZQZM2Zk5MiROe644zJq1Kjss88+1S4RAAAAAAAAKqZltQuApdWuXbvcfvvt2WKLLbLRRhvl+eefz6hRo7LffvtVuzQAAAAAAACoKAEwy7Vbbrml4efDDz88P/7xj7PrrrumU6dOjeZ961vfqkZ5AAAAAAAAUFECYJZru+6663zTbrzxxtx4440Nz2tqalJXV1fBqgAAAAAAAKA6BMAs1+rr66tdAgAAAAAAAHxmtKh2AQAAAAAAAAAsGwJgllv//Oc/l7jttGnT8tRTTzVjNQAAAAAAAFB9AmCWW9/97nczZMiQ3HDDDfnoo48W2Obpp5/Oz3/+8/Tp0yePPvpohSsEAAAAAACAynIPYJZbTz/9dC655JL88pe/zD777JMvfelL6dmzZ9q2bZv33nsvzz77bD788MN8+9vfzl133ZX11luv2iUDAAAAAABAsxIAs9xq1apVjjzyyBx55JF55JFH8o9//COvvfZapk+fng022CBHH310ttpqq3Tp0qXapQIAAAAAAEBFCIAphAEDBmTAgAHVLgMAAAAAAACqyj2AAQAAAAAAAApCAAyfwltvvZX99tsvK6+8ctq1a5f11lsvjzzySMP8UqmU4cOHp0ePHmnXrl0GDx6cF154odEyJk+enH333TcrrrhiOnfunGHDhuXDDz+s9KoAAAAAAABQIAJgaKL33nsvgwYNSqtWrfKXv/wlTz/9dM4777ystNJKDW3OPvvsXHjhhbn00kszbty4dOjQIUOGDMmMGTMa2uy777556qmnMnbs2Nx2223529/+lkMOOaQaqwQAAAAAAEBBuAcwNNFZZ52V1VdfPaNGjWqY1rt374afS6VSRo4cmV/+8pfZZZddkiRXX311unXrlptvvjlDhw7NM888kzvuuCMPP/xww72LL7roouywww4599xz07Nnz8quFAAAAAAAAIVgBDCF8/FRts3hlltuyYABA7LHHnuka9eu+cpXvpIrrriiYf4rr7yS8ePHZ/DgwQ3TOnXqlIEDB+bBBx9Mkjz44IPp3LlzQ/ibJIMHD06LFi0ybty4Zq0fAAAAAACA4jICmEKor6/PaaedlksvvTQTJkzI888/n7XWWisnnnhi1lxzzQwbNmyZ9fXyyy/nkksuyTHHHJOf//znefjhh3PkkUemdevWOeCAAzJ+/PgkSbdu3Rq9rlu3bg3zxo8fn65duzaa37Jly3Tp0qWhzSfNnDkzM2fObHg+derUJMns2bMze/bsZbZ+VE/9nLq0qcDf5dTPqfOZqZD6OXVJ0uzbtc42rZi6OXVpU2r+/dQ2ray5+2rrZty2tmll1c2pS+tSbbP3YZtWTiW+U+vnzLFNK6huTl1aNfN+Orcf27Uy6v7fftrc29U2rZy6OXVpVW8/LZq5+2rL+ub7tbBtWll1c+qadXvO7cM2rZy5+2mt/XSptWrVqtolQNXUlEqlUrWLgKU1YsSIXHXVVRkxYkQOPvjgPPnkk1lrrbVy/fXXZ+TIkQ0jb5eF1q1bZ8CAAXnggQcaph155JF5+OGH8+CDD+aBBx7IoEGD8vbbb6dHjx4Nbfbcc8/U1NTk+uuvz+mnn56rrroqzz33XKNld+3aNaecckoOP/zw+fo9+eSTc8opp8w3fcyYMWnfvv0yWz8AAAAAAFjezb1FI3weGQFMIVx99dW5/PLLs/XWW+ewww5rmL7BBhvk2WefXaZ99ejRI/379280rV+/frnxxhuTJN27d0+STJgwoVEAPGHChGy44YYNbSZOnNhoGXPmzMnkyZMbXv9JJ5xwQo455piG51OnTs3qq6+erbbaKiuvvPJSrxfV9+yUCdnnb1c1ez9jvnFA1uncbfENWWpPT3orr477d84o/SczU99s/Vy92YFZp9OCjx0sW89NHZ+DHvhts/fz+02/n7VXtE0r5dnJb+blfz6RkS0fy6ya5tlXLx94cL60Yo/FN2SZeOGDd/LDRy5t1j5+M+CwfLGjbVopT/337bz28OM5adpzzfadev3W+6XfSs6RKuWlD9/KMY9f3Oz9nL/hEemzwmrN3g/JC++/nhfufzJjOv8ts2vqmq2fM9Y/Kmt1sE0r4dWP3sxJT57X7P2c8uWfZM0OX2j2fih7ZeqreeYfT+e2VcZmTos5zdLHL/v/NGu0X71Zls383pj2es597vRm7ePYtX+e1duv0ax9MM/rH7ycJ//+bP7R8+bUNdN+euQXT8pq7Xo1y7KBzwYBMIXw1ltvpW/fvvNNr6+vX+aXshg0aNB8I3eff/759OpV/sLs3bt3unfvnr/+9a8Nge/UqVMzbty4hpG9m2yySaZMmZJHH300G220UZLknnvuSX19fQYOHLjAftu0aZM2bdrMN71Vq1YuZVEQLVrWNmtI+PF+fGYqo0XL8uXSZqa+WbdtrW1aMbUtazOzmQLCT/Zjm1bO3H11Vk19ZjXTL6xt08qqbVnbbNvy433YppVTie/UFi1b2qYVVNuytllDwo/3Y7tWRu3/209n19Q167a1TSuntmVtZrewnxbN3H11Tos5zRYA26aVVduyttm25cf7sE0rZ+5+WtdiTrMFwLYpFF/z38QOKqB///75+9//Pt/0P/3pT/nKV76yTPs6+uij889//jOnn356XnzxxYwZMyaXX355fvjDHyZJampqctRRR+XUU0/NLbfckv/85z/Zf//907Nnz+y6665JyiOGt9tuuxx88MF56KGHcv/99+eII47I0KFD07Nnz2VaLwAAAAAAAJ8fRgBTCMOHD88BBxyQt956K/X19bnpppvy3HPP5eqrr85tt922TPv62te+lj//+c854YQTMmLEiPTu3TsjR47Mvvvu29Dmpz/9aT766KMccsghmTJlSjbbbLPccccdadu2bUOb0aNH54gjjsjWW2+dFi1aZLfddsuFF164TGsFAAAAAADg80UATCHssssuufXWWzNixIh06NAhw4cPz1e/+tXceuut2WabbZZ5fzvttFN22mmnhc6vqanJiBEjMmLEiIW26dKlS8aMGbPMawMAAAAAAODzSwBMYWy++eYZO3ZstcsAAAAAAACAqnEPYAAAAAAAAICCMAKYQlhppZVSU1Mz3/Sampq0bds2ffv2zfe+970ceOCBVagOAAAAAAAAKkMATCEMHz48p512WrbffvtsvPHGSZKHHnood9xxR374wx/mlVdeyeGHH545c+bk4IMPrnK1AAAAAAAA0DwEwBTCP/7xj5x66qk57LDDGk2/7LLLctddd+XGG2/M+uuvnwsvvFAADAAAAAAAQGG5BzCFcOedd2bw4MHzTd96661z5513Jkl22GGHvPzyy5UuDQAAAAAAACpGAEwhdOnSJbfeeut802+99dZ06dIlSfLRRx+lY8eOlS4NAAAAAAAAKsYloCmEE088MYcffnjuvffehnsAP/zww7n99ttz6aWXJknGjh2bLbbYopplAgAAAAAAQLMSAFMIBx98cPr375+LL744N910U5Jk7bXXzv/93/9l0003TZL85Cc/qWaJAAAAAAAA0OwEwBTGoEGDMmjQoGqXAQAAAAAAAFUjAKZwZsyYkVmzZjWatuKKK1apGgAAAAAAAKicFtUuAJaFadOm5YgjjkjXrl3ToUOHrLTSSo0eAAAAAAAA8HkgAKYQjjvuuNxzzz255JJL0qZNm/z2t7/NKaeckp49e+bqq6+udnkAAAAAAABQES4BTSHceuutufrqq7PlllvmwAMPzOabb56+ffumV69eGT16dPbdd99qlwgAAAAAAADNzghgCmHy5MlZa621kpTv9zt58uQkyWabbZa//e1v1SwNAAAAAAAAKkYATCGstdZaeeWVV5Ik66yzTv74xz8mKY8M7ty5cxUrAwAAAAAAgMoRAFMIBx54YP79738nSY4//vj85je/Sdu2bXP00UfnuOOOq3J1AAAAAAAAUBnuAUwhHH300Q0/Dx48OM8++2weffTR9O3bN+uvv34VKwMAAAAAAIDKEQBTSL169UqnTp1c/hkAAAAAAIDPFZeAphDOOuusXH/99Q3P99xzz6y88spZbbXVGi4NDQAAAAAAAEUnAKYQLr300qy++upJkrFjx2bs2LH5y1/+ku233949gAEAAAAAAPjccAloCmH8+PENAfBtt92WPffcM9tuu23WXHPNDBw4sMrVAQAAAAAAQGUYAUwhrLTSSnnjjTeSJHfccUcGDx6cJCmVSqmrq6tmaQAAAAAAAFAxRgBTCN/5zneyzz775Itf/GImTZqU7bffPknyr3/9K3379q1ydQAAAAAAAFAZAmAK4de//nXWXHPNvPHGGzn77LOzwgorJEneeeed/OAHP6hydQAAAAAAAFAZAmAKoVWrVjn22GPnm3700UdXoRoAAAAAAACoDgEwhXD11Vcvcv7+++9foUoAAAAAAACgegTAFMKPf/zjRs9nz56dadOmpXXr1mnfvr0AGAAAAAAAgM+F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AAAAAABKQgAMAAAAAAAAUBICYAAAAAAAAICSEAADAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAAAJSEABgAAAAAAACgJATAAAAAAAABASQiAAQAAAAAAAEpCAAwAAAAAAABQEgJgAAAAAAAAgJIQAAMAAAAAAACUhAAYhum8887L61//+kyePDkzZ87MUUcdlaVLl24xpru7O4sWLcqMGTMyadKkHH300Vm5cuUWY5YtW5YjjzwyEyZMyMyZM3PGGWekv79/NG8KAAAAAAAAJSMAhmFasmRJFi1alF/+8pe54YYb0tfXl8MOOyybNm0aHHP66afn2muvzXe+850sWbIky5cvzzvf+c7B66vVao488sj09vbmF7/4Rb75zW/myiuvzNlnn92ImwQAAAAAAEBJtDR6AbCt+dGPfrTFz1deeWVmzpyZO+64I29+85vT2dmZyy+/PFdddVXe+ta3JkmuuOKK7LvvvvnlL3+Zgw8+OD/+8Y9z77335l//9V8za9as7L///vnsZz+bT3ziEzn33HPT1tbWiJsGAAAAAADANk4ADFups7MzSTJ9+vQkyR133JG+vr4ceuihg2P22WefzJs3L7fccksOPvjg3HLLLdlvv/0ya9aswTGHH354Tj755PzmN7/JAQcc8Lzt9PT0pKenZ/Dn9evXJ0n6+vrS19dXyG0rSnWgmtb25kYvY9RUB6rbXI3GkupANa3ji3u6qo1rSa2tmA/EaP3dvK0FzT8WVav13d+r1f60tVQKXUtre3Nax20/jzVFqfcxrMjH9oH25gy0FtdHra2V5/y//P1arfbXX9OCHn+bxrUU/hiwPam3pgN9A+mvthe+npbm5hGv77PzbU/3m3rqWvTz6UBT0ty8/fzNi1ZPTQf6+9NeKf5v3t5cSfPACPfp7+4rbdvRfabu59S+gfRXxxW6ltZKc9qbtp+/fVEG6qxprW8gtf5in1OLqumzc24v95eB/jpfJ/X3p71S7HuBSiWpZPv4uxep3ppWq/1pK/B9ZK2llnEFlbP9d+9L29OU7eUuU29dh6u1tXXE54RtRaVWq9UavQjYVg0MDOQP//AP09HRkZtvvjlJctVVV2XhwoVbhLVJctBBB+Utb3lLzj///HzoQx/KY489luuvv37w+q6urkycODE/+MEPcsQRRzxvW+eee24+/elPP+/yq666KhMm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XXRRLrvsstx6662ZOHFiDj/88HR3dzdw5bB9Of/88/OVr3wlF198ce67776cf/75+dKXvpS/+Zu/GRyjV2F0bdq0Ka95zWtyySWXvOD19fTkcccdl9/85je54YYbct111+VnP/tZPvShD43WTYDSe7E+7erqyp133plPfepTufPOO/PP//zPWbp0af7wD/9wi3H6FBiOSu25h2gCY94b3vCGvP71r8/FF1+cJBkYGMjcuXNz6qmn5swzz2zw6oAkefrppzNz5swsWbIkb37zm9PZ2ZmXvexlueqqq/Inf/InSZL7778/++67b2655ZYcfPDBDV4xbD82btyY1772tbn00kvzuc99Lvvvv38uvPBCfQpjwJlnnpmf//zn+bd/+7cXvL5Wq2XOnDn56Ec/mo997GNJks7OzsyaNStXXnll3vWud43mcmG79Qd/8AeZNWtWLr/88sHLjj766IwfPz7f+ta39Co0WKVSyXe/+90cddRRSep7/rzvvvsyf/783H777TnwwAOTJD/60Y/y+7//+3niiScyZ86cRt0cKKX/2qcv5Pbbb89BBx2Uxx57LPPmzdOnwLA5Axi2Ib29vbnjjjty6KGHDl7W1NSUQw89NLfccksDVwY8V2dnZ5Jk+vTpSZI77rgjfX19W/TuPvvsk3nz5uldGGWLFi3KkUceuUU/JvoUxoJ/+Zd/yYEHHphjjjkmM2fOzAEHHJCvf/3rg9c/8sgjWbFixRZ9OnXq1LzhDW/QpzCK3vjGN+bGG2/Mb3/72yTJr3/969x888054ogjkuhVGGvq6clbbrkl06ZNGwyVkuTQQw9NU1NTbr311lFfM/DMvqVKpZJp06Yl0afA8LU0egFA/VavXp1qtZpZs2ZtcfmsWbNy//33N2hVwHMNDAzktNNOy5ve9Ka86lWvSpKsWLEibW1tgy/anzVr1qysWLGiAauE7dO3v/3t3Hnnnbn99tufd50+hcZ7+OGH85WvfCWLFy/On//5n+f222/Pn/3Zn6WtrS0nnHDCYC++0GthfQqj58wzz8z69euzzz77pLm5OdVqNZ///Odz3HHHJYlehTGmnp5csWJFZs6cucX1LS0tmT59ur6FBuju7s4nPvGJvPvd786UKVOS6FNg+ATAADCCFi1alHvuuSc333xzo5cCPMfjjz+ej3zkI7nhhhsybty4Ri8HeAEDAwM58MAD84UvfCFJcsABB+See+7JZZddlhNOOKHBqwOe9Y//+I/5h3/4h1x11VV55StfmbvuuiunnXZa5syZo1cBYCv19fXl2GOPTa1Wy1e+8pVGLwfYhvkIaNiG7Ljjjmlubs7KlSu3uHzlypWZPXt2g1YFPOuUU07Jddddl5tuuim77LLL4OWzZ89Ob29vOjo6thivd2H03HHHHVm1alVe+9rXpqWlJS0tLVmyZEkuuuiitLS0ZNasWfoUGmynnXbK/Pnzt7hs3333zbJly5JksBe9FobGOuOMM3LmmWfmXe96V/bbb78cf/zxOf3003Peeecl0asw1tTTk7Nnz86qVau2uL6/vz9r167VtzCKng1/H3vssdxwww2DZ/8m+hQYPgEwbEPa2tryute9LjfeeOPgZQMDA7nxxhuzYMGCBq4Mtm+1Wi2nnHJKvvvd7+YnP/lJdt999y2uf93rXpfW1tYtenfp0qVZtmyZ3oVR8ra3vS1333137rrrrsH/DjzwwBx33HGD/9an0FhvetObsnTp0i0u++1vf5tdd901SbL77rtn9uzZW/Tp+vXrc+utt+pTGEVdXV1patpyd1Jzc3MGBgaS6FUYa+rpyQULFqSjoyN33HHH4Jif/OQnGRgYyBve8IZRXzNsj54Nfx944IH867/+a2bMmLHF9foUGC4fAQ3bmMWLF+eEE07IgQcemIMOOigXXnhhNm3alIULFzZ6abDdWrRoUa666qp8//vfz+TJkwe/e2Xq1KkZP358pk6dmg984ANZvHhxpk+fnilTpuTUU0/NggULcvDBBzd49bB9mDx58uD3cj9r4sSJmTFjxuDl+hQa6/TTT88b3/jGfOELX8ixxx6b2267LV/72tfyta99LUlSqVRy2mmn5XOf+1z22muv7L777vnUpz6VOXPm5Kijjmrs4mE78o53vCOf//znM2/evLzyla/Mv//7v+eCCy7I+9///iR6FRph48aNefDBBwd/fuSRR3LXXXdl+vTpmTdv3pA9ue++++btb397TjrppFx22WXp6+vLKaeckne9612ZM2dOg24VlMuL9elOO+2UP/mTP8mdd96Z6667LtVqdXDf0vTp09PW1qZPgWGr1Gq1WqMXAQzPxRdfnL/8y7/MihUrsv/+++eiiy5ypBc0UKVSecHLr7jiipx44olJku7u7nz0ox/N1VdfnZ6enhx++OG59NJLfUwPNNAhhxyS/fffPxdeeGESfQpjwXXXXZezzjorDzzwQHbfffcsXrw4J5100uD1tVot55xzTr72ta+lo6Mjv/d7v5dLL700e++9dwNXDduXDRs25FOf+lS++93vZtWqVZkzZ07e/e535+yzz05bW1sSvQqj7ac//Wne8pa3PO/yE044IVdeeWVdPbl27dqccsopufbaa9PU1JSjjz46F110USZNmjSaNwVK68X69Nxzz33ep8k966abbsohhxySRJ8CwyMABgAAAAAAACgJ3wEMAAAAAAAAUBICYAAAAAAAAICSEAADAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAAAJSEABgAAAAAAACgJATAAAAAAAABASQiAAQAAoA4nnnhijjrqqEYvAwAAAF5US6MXAAAAAI1WqVRe9PpzzjknX/7yl1Or1UZpRQAAAPDSCIABAADY7j311FOD/77mmmty9tlnZ+nSpYOXTZo0KZMmTWrE0gAAAGBYfAQ0AAAA273Zs2cP/jd16tRUKpUtLps0adLzPgL6kEMOyamnnprTTjstO+ywQ2bNmpWvf/3r2bRpUxYuXJjJkyfn5S9/eX74wx9usa177rknRxxxRCZNmpRZs2bl+OOPz+rVq0f5FgMAAFBWAmAAAAB4ib75zW9mxx13zG233ZZTTz01J598co455pi88Y1vzJ133pnDDjssxx9/fLq6upIkHR0deetb35oDDjggv/rVr/KjH/0oK1euzLHHHtvgWwIAAEBZCIABAADgJXrNa16TT37yk9lrr71y1llnZdy4cdlxxx1z0kknZa+99srZZ5+dNWvW5D/+4z+SJBdffHEOOOCAfOELX8g+++yTAw44IN/4xjdy00035be//W2Dbw0AAABl4DuAAQAA4CV69atfPfjv5ubmzJgxI/vtt9/gZbNmzUqSrFq1Kkny61//OjfddNMLfp/wQw89lL333rvgFQMAAFB2AmAAAAB4iVpbW7f4uVKpbHFZpVJJkgwMDCRJNm7cmHe84x05//zznzfXTjvtVOBKAQAA2F4IgAEAAGCUvPa1r80//dM/ZbfddktLi7fkAAAAjDzfAQwAAACjZNGiRVm7dm3e/e535/bbb89DDz2U66+/PgsXLky1Wm308gAAACgBATAAAACMkjlz5uTnP/95qtVqDjvssOy333457bTTMm3atDQ1eYsOAADA1qvUarVaoxcBAAAAAAAAwNZzeDEAAAAAAABASQiAAQAAAAAAAEpCAAwAAAAAAABQEgJgAAAAAAAAgJIQAAMAAAAAAACUhAAYAAAAAAAAoCQEwAAAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAEBJCIABAAAAAAAASkIADAAAAAAAAFASAmAAAAAAAACAkhAAAwAAAAAAAJSEABgAAAAAAACgJATAAAAAAAAAACUhAAYAAAAAAAAoCQEwAAAAAAAAQEkIgAEAAAAAAABKQgAMAAAAAAAAUBICYAAAAAAAAICSEAADAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAAAJSEABgAAAAAAACgJATAAAAAAAABASQiAAQAAAAAAAEpCAAwAAAAAAABQEgJgAAAAAAAAgJIQAAMAAAAAAACUhAAYAAAAAAAAoCQEwAAAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAEBJCIABAAAAAAAASkIADAAAAAAAAFASAmAAAAAAAACAkhAAAwAAAAAAAJSEABgAAAAAAACgJATAAAAAAAAAACUhAAYAAAAAAAAoCQEwAAAAAAAAQEkIgAEAAAAAAABKQgAMAAAAAAAAUBICYAAAAAAAAICSEAADAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAAAJSEABgAAAAAAACgJATAAAAAAAABASQiAAQAAAAAAAEpCAAwAAAAAAABQEgJgAAAAAAAAgJIQAAMAAAAAAACUhAAYAAAAAAAAoCQEwAAAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAEBJCIABAAAAAAAASkIADAAAAAAAAFASAmAAAAAAAACAkhAAAwAAAAAAAJSEABgAAAAAAACgJATAAAAAAAAAACUhAAYAAAAAAAAoCQEwAAAAAAAAQEkIgAEAAAAAAABKQgAMAAAAAAAAUBICYAAAAAAAAICSEAADAAAAAAAAlIQAGAAAAAAAAKAkBMAAAAAAAAAAJSEABgAAAAAAACgJATAAAAAAAABASQiAAQAAAAAAAEpCAAwAAAAAAABQEgJgAAAAAAAAgJIQAAMAAAAAAACUhAAYAAAAAAAAoCT+f4pMT52ok22hAAAAAElFTkSuQmCC", + "text/plain": [ + "<IPython.core.display.Image object>" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "_ = aidge_core.generate_optimized_memory_info(s, \"mem_strategy_dino\", wrapping=False, display_names=False)\n", + "Image(filename=\"./mem_strategy_dino/memory_info.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then compare the modified model with the original one, whose operators have not been fused:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2025-05-19T10:06:11.292765Z", + "iopub.status.busy": "2025-05-19T10:06:11.292648Z", + "iopub.status.idle": "2025-05-19T10:06:12.238678Z", + "shell.execute_reply": "2025-05-19T10:06:12.238117Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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B+Ooo45q8D6VlZUxbty4GDx4cLRr1y66d+8ep556asyfP79Wv379+sUBBxwQzz33XOywww7Rvn372Hrrrauvyfrwww/H1ltvHe3atYvtt98+/vWvf9X7Wc8880zstttu0bFjx+jcuXMcdNBBMXny5Fp9qk7V/M4778RRRx0V66+/fuy6665x1113RSqVavBxr7jiikin0zFz5syV3WXLdfPNN8fgwYOjQ4cOsf7668cOO+wQEydOrG6fNm1anHHGGbHFFltE+/bto2vXrnHYYYfF1KlT6z3WW2+9FXvssUe0b98+Ntpoo7jsssuqx1S3/1//+tfq/bTuuuvG/vvvH2+//fYK6/3Nb34Ts2bNimuvvbZW+BsR0b59+7j77rsjlUrFpZdeGhG5wDWVSsXdd99d77GeeOKJSKVS8dhjj1VvmzlzZpx44onRvXv3KCkpicGDB8edd95Z635V1+r94x//GD/72c+id+/e0aFDh1iwYMEK61+ehq4BvOeee8ZWW21VvW87dOgQm266aTz44IMRkVv5PmTIkGjfvn1sscUW8fTTT9d73KaMCQAAIIkEwAAAAHmgX79+sdNOO8Uf/vCH6m1//etf48svv4wRI0Y0eJ9TTz01Ro8eHbvsskvceOONccIJJ8SECRNi+PDhUV5eXqvvBx98EEcddVQceOCBceWVV8b8+fPjwAMPjAkTJsQPf/jDOProo2Ps2LHx4YcfxuGHHx6VlZXV93366adj+PDhMWfOnLjkkkvivPPOi5deeil22WWXBgPTww47LBYvXhxXXHFFnHzyydUrWydMmFCv74QJE2LPPfeM3r17r+Keq++3v/1tnHPOObHlllvGuHHjYuzYsbHddtvFK6+8Ut3ntddei5deeilGjBgRN910U5x22mnxt7/9Lfbcc89YvHhxdb+ZM2fG0KFD4+23346LLroofvjDH8aECRPixhtvrPdz77333th///1jnXXWiauvvjouvvjieOedd2LXXXdtcD/V9L//+7/Rrl27OPzwwxts79+/f+y6667xzDPPxJIlS2KHHXaITTbZJO6///56fe+7775Yf/31Y/jw4RERMXv27PjWt74VTz/9dJx11llx4403xqabbhqjRo2KcePG1bv/L37xi/jzn/8cF1xwQVxxxRXNdurm+fPnxwEHHBBDhgyJa665JkpKSmLEiBFx3333xYgRI2K//faLq666KhYtWhSHHnpofPXVV9X3XdkxAQAAJEoWAACANuuuu+7KRkT2tddey95yyy3ZddddN7t48eJsNpvNHnbYYdmhQ4dms9lstm/fvtn999+/+n4vvPBCNiKyEyZMqPV4jz/+eL3tffv2zUZE9qWXXqre9sQTT2QjItu+ffvstGnTqrf/5je/yUZE9tlnn63ett1222W7deuWnTt3bvW2f//739mCgoLsscceW73t5z//eTYiskceeWS9cR555JHZXr16ZTOZTPW2N998MxsR2bvuumu5+6jqcT/77LMG2wcPHpzdY489qm8fdNBB2cGDBy/3Mav2cU0vv/xyNiKy99xzT/W2s88+O5tKpbL/+te/qrfNnTs326VLl2xEZKdMmZLNZrPZr776Ktu5c+fsySefXOsxZ82ale3UqVO97XV17tw5u+222y63zznnnJONiOxbb72VzWaz2YsuuihbVFSUnTdvXnWf0tLSbOfOnbMnnnhi9bZRo0Zle/bsmf38889rPd6IESOynTp1qt4Xzz77bDYisptsskmD+2d5XnvttUbnsupxaz6n9thjj2xEZCdOnFi97d13381GRLagoCD7z3/+s3p71XO15mM3dUwAAABJZAUwAABAnjj88MNjyZIl8dhjj8VXX30Vjz32WKOnf37ggQeiU6dO8Z3vfCc+//zz6q/tt98+1llnnXj22Wdr9d9yyy1rXbN1yJAhERHx7W9/OzbeeON62z/66KOIiPj0009j0qRJcfzxx0eXLl2q+22zzTbxne98J/7yl7/Uq+20006rt+3YY4+NTz75pFZdEyZMiPbt28chhxyywn2zMjp37hwzZsyI1157rdE+7du3r/53eXl5zJ07NzbddNPo3LlzvPnmm9Vtjz/+eOy0006x3XbbVW/r0qVLjBw5stbjPfXUU/HFF1/EkUceWWs+0ul0DBkypN581PXVV1/Fuuuuu9w+Ve1Vp2Q+4ogjory8PB5++OHqPk8++WR88cUXccQRR0RERDabjYceeigOPPDAyGaztWobPnx4fPnll7XGGxFx3HHH1do/zWWdddaptbp9iy22iM6dO8egQYOqn4cR9Z+TqzImAACAJCls7QIAAABomg033DCGDRsWEydOjMWLF0cmk4lDDz20wb7vv/9+fPnll9GtW7cG2+fMmVPrds2QNyKiU6dOERHRp0+fBrdXXUd42rRpEZEL5+oaNGhQPPHEE7Fo0aLo2LFj9fb+/fvX6/ud73wnevbsGRMmTIi99torKisr4w9/+EMcdNBBKww+myKVSlX/+8ILL4ynn346dtxxx9h0001j7733jqOOOip22WWX6j5LliyJK6+8Mu66666YOXNmZLPZ6rYvv/yy+t/Tpk2rFZxX2XTTTWvdfv/99yMiF6g3ZL311ltu/euuu26tUxw3pKq9an9tu+22MXDgwLjvvvti1KhREZE7/fMGG2xQXcdnn30WX3zxRdx+++1x++23N/i4dZ8rDc1fc9hoo41qzVtE7vm3oufkqowJAAAgSQTAAAAAeeSoo46Kk08+OWbNmhX77rtvdO7cucF+lZWV0a1btwavqxuRC5NrSqfTDfZrbHvNQHRlNbR6NJ1Ox1FHHRW//e1v49e//nW8+OKL8cknn8TRRx+9wsdr165dRORC24YsXry4uk9ELph+77334rHHHovHH388Hnroofj1r38dY8aMibFjx0ZExNlnnx133XVXnHvuubHTTjtFp06dIpVKxYgRI2pd/7ipqu5z7733Ro8ePeq1FxYu/+P5oEGD4l//+leUlpZGSUlJg33eeuutKCoqis0226x62xFHHBGXX355fP7557HuuuvGo48+GkceeWT1z6uq6+ijj47jjjuuwcfdZpttat1uidW/Eav+nFyVMQEAACSJABgAACCPfO9734tTTz01/vnPf8Z9993XaL8BAwbE008/HbvsskuzBnZ9+/aNiIj33nuvXtu7774bG2ywQa3Vv8tz7LHHxvXXXx//+7//G3/9619jww03jOHDh69UDXVXhy5evDg+/vjj2HvvvWtt79ixYxxxxBFxxBFHRFlZWXz/+9+Pyy+/PC666KJo165dPPjgg3HcccfF9ddfX32fpUuXxhdffFHvZ3/wwQf1aqq7bcCAARER0a1btxg2bNgKx1TXAQccEC+//HI88MADDYbiU6dOjRdeeCGGDRtWa76POOKIGDt2bDz00EPRvXv3WLBgQa3TKm+44Yax7rrrRiaTWaW62qIkjgkAAGBluAYwAABAHllnnXXi1ltvjUsuuSQOPPDARvsdfvjhkclk4he/+EW9toqKinpB5qrq2bNnbLfddnH33XfXesz//Oc/8eSTT8Z+++3X5MfaZpttYptttok77rgjHnrooRgxYsQKV8ZGROy1115RXFwct956a73VubfffntUVFTEvvvuW71t7ty5tfoUFxfHlltuGdlsNsrLyyMit8q07irnm2++OTKZTK1tw4cPj5dffjkmTZpUvW3evHn1Vl4PHz481ltvvbjiiiuqf0ZNn3322XLHeOqpp0a3bt1i9OjR1de6rbJ06dI44YQTIpvNxpgxY2q1DRo0KLbeeuu477774r777ouePXvG7rvvXt2eTqfjkEMOiYceeij+85//rHRdbVESxwQAALAyrAAGVmzPPSO22y5i3LhWLgSayXPPRQwdGjF/fkQjp9EEgLaksdPa1rTHHnvEqaeeGldeeWVMmjQp9t577ygqKor3338/HnjggbjxxhsbvX7wyrr22mtj3333jZ122ilGjRoVS5YsiZtvvjk6deoUl1xyyUo91rHHHhsXXHBBRESTTv8ckVtVO2bMmPjZz34Wu+++e3z3u9+NDh06xEsvvRR/+MMfYu+9964Vlu+9997Ro0eP2GWXXaJ79+4xefLkuOWWW2L//fevvn7uAQccEPfee2906tQpttxyy3j55Zfj6aefjq5du9b62T/60Y/i97//fXznO9+Js88+Ozp27Bh33HFHbLzxxjFv3rzqa9iut956ceutt8YxxxwT3/zmN2PEiBGx4YYbxvTp0+PPf/5z7LLLLnHLLbc0OsauXbvGgw8+GPvvv39885vfjJNOOim23HLLmDVrVowfPz4++OCDuPHGG2PnnXeud98jjjgixowZE+3atYtRo0ZFQUHtvwW/6qqr4tlnn40hQ4bEySefHFtuuWXMmzcv3nzzzXj66adj3rx5TZqHtiSJYwIAAGgqK4Ah3x1/fEQqlfsqLo7YdNOISy+NqKho7crWTrffngvM11svNyfLW1lTWpoL1lOpiBorRmr54IOIddetH0qOH79s3qu+alzXbrk/86c/jejbN6KkJKJfv4g771zW/tvfRuy2W8T66+e+hg2LePXV2o9R8zlX9bXPPsv/uccfH3HwwbW3Pfhgrubrr4/o2TPiqqtqt//4x7nHfu652tv33DPimGNWPFYAIG677ba4/fbbY86cOfGTn/wkLrroonjmmWfi6KOPjl122WWN/Zxhw4bF448/Hl27do0xY8bEddddF9/61rfixRdfjP79+6/UY40cOTLS6XRsvvnmseOOOzb5fj/96U/j97//fWQymbj00kvjggsuiH/9618xduzYePTRR2uFnqeeemosXLgwbrjhhjjzzDPjkUceiXPOOSd+//vfV/e58cYb49hjj40JEybE+eefH59++mk8/fTTsc4669T6uX369Ilnn302Bg0aFFdccUWMGzcujjvuuDjxxBMjImpde/ioo46Kv/3tb9G7d++49tpr4wc/+EH88Y9/jO222y5OOOGEFY5xt912i7feeisOP/zweOCBB+K0006LX/7ylzFo0KB4/vnn4+yzz27wfkcccURUVlbG4sWL44gjjqjX3r1793j11VfjhBNOiIcffjjOOuusuPHGG2PevHlx9dVXr7CutiiJYwIAAGiqVLbuOa2A/HL88RGzZ0fcdVcu3PvLXyLOPDPi8ssjLrpozfwMK4Cbbty4iKVLc/++6KLlryj9wQ8i3n8/4q9/jfjXv3L7uKby8oidd47YcMOIl16qHSaPH5+7f81r7aVSEd27L7++gw7KPV8uuyz3xwKffhpRWRlR9R/AI0fm/r3zzrlw9uqrI/70p4i3347o3TvXp+ZzrkpJSS4wbszxx+fqf+SR3O077sg9T2+7LeKEEyKOPDK3rx5/fNl9hgzJ1XfiiRFVK4eWLs3tz1tvzd1vZZWV5f5Qoi4rgAGgzfj888+jZ8+eMWbMmLj44otbu5xVdu6558ZvfvObWLhwYaTT6dYuBwAAgLWIFcCQBCUlET165FZ1nn56btXmo4/m2kpLIy64IBfedeyYC9VqrqicOzcXvvXuHdGhQ8TWW0f84Q/L/3l//nNEp04Rda5rVm38+Poh2iOP5ALKKv/+dy5wW3fd3GrZ7bePeP31ptf01Ve5sLJjx9zq0V/+MhdUn3vusj4rGntzOPfc3MrVb31r+f3++teIJ5+MuO66xvv87GcRAwdGHH54w+2pVG7eq75WFP4+/njE3/+e+yOBYcNyq3932mlZ+BuRm9MzzsiF0QMH5oLaysqIv/2t9mNVPeeqvpYX/tZ1zTURZ58d8cc/Lgtxhw6NePHFZSvXv/oqF4pfeGHtOXv55dy8Dh2au/33v0fsuGOunp49c/u+5ur3PfeMOOus3LxssEHE8OG57X/5S8Tmm0e0b597rKlTa9c4bVrEgQfmxtWxY8Tgwbn7AADNbvz48ZHJZOKYPDrjx5IlS2rdnjt3btx7772x6667Cn8BAABocQJgSKL27XMrHSNy4dfLL+fCtrfeijjssNzpet9/P9e+dGkufP3znyP+85+IU07JnV637ml/q0ycmAtnJ0zIBbCrauTIiI02injttYg33sgFd0VFTa/pvPNygeGjj0Y89VTECy9EvPlm7Z+xorE3ZN99I9ZZp/GvwYNXfcxVZs+OOPnkiHvvzQXcDXnmmYgHHoj41a8af5yFC3Ohf58+uZW9b7+9/J/76KMRO+yQC2B7984FoBdcEFHnPyxrWbw4txK5S5fa2597LqJbt4gttsj90cHcucv/2VUuvDDiF7+IeOyxiO99b9n2oUNz43nttdztF17I1XfIIRGvvLJsVfWzz+aC6379ImbOjNhvv4j/9/9yf1Bw660Rv/tdbnVzTXffnVv1++KLuRXHH38c8f3v5wLeSZMiTjop9/yr6cwzc0Hz889H/N//5VZC1zndIwCwZj3zzDNxyy23xOWXXx4HH3xw9OvXr7VLarKddtqpesXvpZdeGt/85jdjwYIFeb2CGQAAgPxV2NoFAGtQNptbqfnEE7kVltOn507TO316RK9euT4XXJBbCXrXXRFXXJELAi+4YNljnH127v73359bWVnTr36Vu37s//5vxB57rF6t06dHjB6dW2UaEbHZZsvaVlTTV1/lQr2JEyP22ivX5667lo2x6vFXNPaG3HHH8gPRqpB6VWWzudMhn3ZaLoytu/I0IhemHn98xO9/n1sd3ZAttshdu3ebbSK+/DK3knjnnXMh8EYbNXyfjz6K+Mc/cqd2/tOfIj7/PLfad+7c2qdzrunCC3P7b9iwZdv22ScXoPbvH/HhhxE/+UkuOH/55YjlrXD5618j/ud/cs/Rb3+7dttmm+Xm/bnncquSn3su9xzr0SNi441zjz106LJTNUdE/PrXufD7lltyq6EHDoz45JNczWPGRFRd52+zzXKhd5Wf/CRiwIDctYer9mVVyFtl+vRc+Lz11rnbm2zS+LgAgDXi0ksvjZdeeil22WWXuPnmm1u7nJWy3377xYMPPhi33357pFKp+OY3vxm/+93vYvfdd2/t0gAAAFgLCYAhCR57LLc6sbw8d7reo47KXTP1ueciMpncSsqaSksjunbN/TuTyYWh99+fW1FZVpZrr7sy9cEHI+bMya2i/H//b/VrPu+83MrLe+/NhYuHHZYL5ZpS00cf5cZaM6Du1CkX5FX5v/9b8dgbUnWd2+Zy8825AHt512c++eTcHC7vPwx32in3VWXnnSMGDYr4zW9yK2wbUlmZC0onTMjtr4iIG26IOPTQXJjavn3t/lddlVs9/dxzudC4yogRy/699da5EHrAgFy/qkC+Idtskwudf/7z3NzVXVG75565x7jootz30aNz2/fYI3f7W9/KrQY++eTc9smTc/ug5qnFd9klt5J4xoxccByRW01e0+TJudOB11RzX0ZEnHNObmXzk0/mnp+HHJKrHwBoNs8196U6mtEVV1wRVzT2B4YAAADQwpwCGpJg6NDcqWzffz+3evXuu3PXLV24MLci8403cu1VX5MnR9x4Y+6+116b+/eFF+ZOrztpUu46qVWnkK7yjW9EbLhhbtVpNrv8egoK6vcpL699+5JLcqtV998/d7rjLbfMrUpdmZqWpyljb0hznwL6mWdyq1lLSiIKCyM23TS3fYcdIo47blmf667LtRcWRowalVvlW1iY2/8NKSrKzdEHHzT+s3v2zAXcVeFvRC40zmZzgWlN112XC4CffHLFwecmm+Sur7u8nx2xbIXvzJm5VcRffVW7veo6wHPn5q7/W7XKfI89cs+Dl17KPQfqrh5ekY4dV65/RO6PEz76KHfq8f/7v9z85NlKJAAAAAAA1k5WAEMSdOy4LEis6RvfyK2CnTMnYrfdGr7viy/mrh979NG525WVEf/9by6QranqlLl77pkLVm+5pfF6NtwwF+4tWrQsfJs0qX6/zTfPff3wh7nrCt91V+66sCuqaZNNcoHna68tW+X55Ze5PlWrZpsy9oY09ymgb7qp9jVqP/kkF27fd9+yVakvv5yrvcr//E/u9MQvvdT4CuVMJhdU7rdf4z97l11y1xVeuHDZ6tv//jcX2Nc8bfQ110RcfnnutNs77LDiMc2YkQtte/Zccd++fSP+/vdc2LvPPrlTcq+7bq5t6NDcc+aGG3Knbe7WLbd9991zIfhf/7rsVNERufD6oYdyAXbVKuAXX8w9XmOnwa6636OP1t72z3/W79enT+5U3aedlluV/Nvf5k5HDgAAAAAAbZgVwJBkm28eMXJkxLHHRjz8cMSUKRGvvhpx5ZURf/5zrs9mm0U89VQuXJw8OeLUUyNmz2788Z59Nhe6nXtu4z93yJDc6Zp/8pPcNWInTowYP35Z+5IlEWedlVsNOm1aLrR77bVcMNeUmtZdN7dadvToXD1vv50LCAsKlgWBTRl7Q3r3zoXpjX317bv8fT5rVi7srloN+3//l7s9b17u9sYbR2y11bKvqlNUDxiwLLQcNKh2n969c2PbaquI9dfP9bn00tzq3I8+injzzVxYPm1abuVqlYsuyo2/ylFH5U5/fcIJEe+8E/H887l9eOKJy07/fPXVERdfnFtp3K9fbjyzZuVC44jc99Gjc4Hp1Km56/kedFBu3wwfvvx9U6VPn9zcz5mTu8+CBbntm2yS2z8331z7GtN9+uSuQ3z77cuu/xuRu37xxx/nQtl3380F5T//ee704gXL+fV22mm51fKjR0e8917952dE7vn9xBO5582bb+aeZ1XPTwAAAAAAaMMEwJCnstlsLFiwIFZwMubcqtpjj404//zcNXIPPrj2ytmf/Szim9/MBXF77hnRo0euT2O22CJ3iuI//CH3mA3p0iXi97+P+MtfcteI/cMfcqd8rpJO51aMHntsLgA9/PDcqZfHjm16TTfckLtu6wEH5K7RussuuYCu5rVqVzT25nDbbbnVx1XXqd1999ztuitOV9f8+bmfMWhQbtXvggW5wLzmyu1PP42YPn3Z7XXWyQXrX3yRW9k7cmTEgQfmViVXufXW3GmWDz00t6K36uu663Lt6XTEW29FfPe7ubkbNSp3jd0XXsid1rqpNtooFwJ//nntEHjo0Nzq8T33rN1/jz1y22sGwL17555jr74ase22uWB31Kjc82d5Nt4490cMjzySu99tt+WuOV1TJhNx5pm5/bvPPrmx/vrXTR8fAAAAAAC0liyQl7788stsRGS/zJ0At/7XfvvVvkOHDg33i8hm99ijdt8NNmi87w471O7bt2/jfbfcsnbfLbdsvG/fvrX77rBD43032KB23z32aLxvhw61++63X+N96x4SDz10+X0XLlzW97jjlt93zpxlfc84Y7l9j+19Ynaf/udn9+l/fvaBTsvZDxHZ7H/+s+xxf/7z5fd99dVlfa+5Zvl9n312Wd9bbll+38ceW9b3rruW3/f++5f1vf/+5fe9665lfR97bPl9b7llWd9nn11+32uuWdb31VeX3/fnP1/W9z//WX7fCy5Y1nfKlOX2/Z8eO2aH7XJZdt+hV2T/cvfdy3/c445b9rgLFy6/76GH1n4OL6+v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lYpx48bV2j5v3rwYOXJkrLfeetG5c+cYNWpULFy4sFaft956K3bbbbdo165d9OnTJ6655ppmGA0AAAAAAABrEwEw1LFo0aLYdttt41e/+tVy+/3pT3+Kf/7zn9GrV696bSNHjoy33347nnrqqXjsscfi+eefj1NOOaW6fcGCBbH33ntH375944033ohrr702Lrnkkrj99tvX+HgAAAAAAABYexS2dgHQ1uy7776x7777LrfPzJkz4+yzz44nnngi9t9//1ptkydPjscffzxee+212GGHHSIi4uabb4799tsvrrvuuujVq1dMmDAhysrK4s4774zi4uIYPHhwTJo0KW644YZaQTEAAAAAAACsDCuAYSVVVlbGMcccE6NHj47BgwfXa3/55Zejc+fO1eFvRMSwYcOioKAgXnnlleo+u+++exQXF1f3GT58eLz33nsxf/785h8EAAAAAAAAiWQFMKykq6++OgoLC+Occ85psH3WrFnRrVu3WtsKCwujS5cuMWvWrOo+/fv3r9Wne/fu1W3rr79+vcctLS2N0tLS6tsLFiyIiIjy8vIoLy9f9QHRqjKVmSgqSddvSNX/+5xMZcZc56FMJhNFxQ38vVUqVb296nsmY47zUSZTEcVFDc1xw33Ncf7JZCqiOF1nQr++WbW96rs5zk+VmYooKWjgRdtIX3OcfyorKqIk1fDruGp71ffKCnOcjyorKqKk1t+4Zxv6VVzd1xznn0xFJoqztd9zVd2q2l71PVPhfXU+ylRkorCy5n9VZqOxX8/mOP9kKjJRUFlUZ2s2ClLZiIjqtqrv5jj/VFRkIpspWan+5QXmOJ9UlFdGRaZdve1V77oqvp7/qu/l5ZWRTbXuHBcV1T3uwNojlc1ms61dBLRVqVQq/vSnP8XBBx8cERFvvPFG7L///vHmm29WX/u3X79+ce6558a5554bERFXXHFF3H333fHee+/Veqxu3brF2LFj4/TTT4+99947+vfvH7/5zW+q2995550YPHhwvPPOOzFo0KB6tVxyySUxduzYetsnTpwYHTp0WEMjBgAAAACA/HfQQQe1dgnQaqwAhpXwwgsvxJw5c2LjjTeu3pbJZOL888+PcePGxdSpU6NHjx4xZ86cWverqKiIefPmRY8ePSIiokePHjF79uxafapuV/Wp66KLLorzzjuv+vaCBQuiT58+MXTo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yZPj8ccfj9deey122GGHiIi4+eabY7/99ovrrrsuevXqFRMmTIiysrK48847o7i4OAYPHhyTJk2KG264oVZQDAAAAAAAACvDCmBYCVOmTIlZs2bFsGHDqrd16tQphgwZEi+//HJERLz88svRuXPn6vA3ImLYsGFRUFAQr7zySnWf3XffPYqLi6v7DB8+PN57772YP39+C40GAAAAAACApLECGFbCrFmzIiKie/futbZ37969um3WrFnRrVu3Wu2FhYXRpUuXWn369+9f7zGq2tZff/16P7u0tDRKS0urby9YsCAiIsrLy6O8vHx1hpV3MpWZKGrX8OErU5lps/sjU5mJopL0Kt2vrY6puWQymSgqafhvlDKZtrs/MplMFBU3/W+rqvq25TE1l0ymIoqLGpvjija7P5ZX94ru11bH1FwymYooLkw12tZW98fy6m5IcTrXt3ItfR2XpPNzjksKmj7HNe/XVsfUXCorGt9XlRVtd39UVlRESarpc1zVd218HVdWVES7VMO/19r8HK/C37O35TE1l8qKTKP7qrKi7T7nMxWZKM42fY6r+rblMTWXTEUmirINf87MtOH9kanIRGHlyv+3ZFseU3PJ289OFZkoqCxqcv+qvmvjHFdUZCIyxY22tdX9UVGRiWymZJXuV17QNsfUXCrKKyOTadfg9vJU290XFeWVUdFA3Y32//r5UFFR2Waet0VFTT8OQdKkstlstrWLgLYqlUrFn/70pzj44IMjIuKll16KXXbZJT755JPo2bNndb/DDz88UqlU3HfffXHFFVfE3XffHe+9916tx+rWrVuMHTs2Tj/99Nh7772jf//+8Zvf/Ka6/Z133onBgwfHO++8E4MGDapXyyWXXBJjx46tt33ixInRoUOHNTRiAAAAAADIf1WXcYS1kRXAsBJ69OgRERGzZ8+uFQDPnj07tttuu+o+c+bMqXW/ioqKmDdvXvX9e/ToEbNnz67Vp+p2VZ+6LrroojjvvPOqby9YsCD69OkTQ4cOja5du67ewPLMR/+ZEaO/e32Dbdc+en5sstVGLVxR03w0eWaMPuyWlb7ftQ+cFZsM6t0MFbVdH743K0aP+l2Dbdf+blQM2KLh10lr+/D92XHeGfc0uX9RcUGceOag2HST7WLzgb2asbK254OPZscPRv+xwbYbrx0Rm27SvcG21vb+1Dlx1sX3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J9km624Qg9fv2dpl0Iz6dOgem60rMIL8s+w3cqfiftG13RatWAvNY9kcFxdtJvwFmp1EjLx1zjnnxLbbbhtTpkyJyy67LN5555348ssvo6ysLGbNmhV/+ctfYtddd40xY8bENttsE6+99lprlwwAAAAAAADNygpg8lbHjh3jo48+iq5d65+2qlu3bvHtb387vv3tb8fPf/7zePzxx+Pjjz+O//f//l8rVAoAAAAAAAAtQwBM3rryyiub3HefffZpxkoAAAAAAACgbXAKaBJhyZIlsXjx4urb06ZNi3HjxsUTTzzRilUBAAAAAABAyxIAkwgHHXRQ3HPPPRER8cUXX8SQIUPi+uuvj4MPPjhuvfXWVq4OAAAAAAAAWoYAmER48803Y7fddouIiAcffDC6d+8e06ZNi3vuuSduuummVq4OAAAAAAAAWoYAmERYvHhxrLvuuhER8eSTT8b3v//9KCgoiG9961sxbdq0Vq4OAAAAAAAAWoYAmETYdNNN45FHHomPP/44nnjiidh7770jImLOnDmx3nrrtXJ1AAAAAAAA0DIEwCTCmDFj4oILLoh+/frFkCFDYqeddoqI3Grgb3zjG61cHQAAAAAAALSMwtYuANaEQw89NHbdddf49NNPY9ttt63evtdee8X3vve9VqwMAAAAAAAAWo4AmMTo0aNH9OjRo9a2HXfcsZWqAQAAAAAAgJYnACZvff/7329y34cffrgZKwEAAAAAAIC2wTWAyVudOnWq/lpvvfXib3/7W7z++uvV7W+88Ub87W9/i06dOrVilQAAAAAAANByrAAmb911113V/77wwgvj8MMPj9tuuy3S6XRERGQymTjjjDNivfXWa60SAQAAAAAAoEVZAUwi3HnnnXHBBRdUh78REel0Os4777y48847W7EyAAAAAAAAaDkCYBKhoqIi3n333Xrb33333aisrGyFigAAAAAAAKDlOQU0iXDCCSfEqFGj4sMPP4wdd9wxIiJeeeWVuOqqq+KEE05o5eoAAAAAAACgZQiASYTrrrsuevToEddff318+umnERHRs2fPGD16dJx//vmtXB0AAAAAAAC0DAEwea+ioiImTpwYxx13XPzoRz+KBQsWRETEeuut18qVAQAAAAAAQMtyDWDyXmFhYZx22mmxdOnSiMgFv8JfAAAAAAAA1kYCYBJhxx13jH/961+tXQYAAAAAAAC0KqeAJhHOOOOMOP/882PGjBmx/fbbR8eOHWu1b7PNNq1UGQAAAAAAALQcATCJMGLEiIiIOOecc6q3pVKpyGazkUqlIpPJtFZpAAAAAAAA0GIEwCTClClTWrsEAAAAAAAAaHUCYBKhb9++rV0CAAAAAAAAtDoBMInx4Ycfxrhx42Ly5MkREbHlllvGD37wgxgwYEArVwYAAAAAAAAto6C1C4A14Yknnogtt9wyXn311dhmm21im222iVdeeSUGDx4cTz31VGuXBwAAAAAAAC3CCmAS4cc//nH88Ic/jKuuuqre9gsvvDC+853vtFJlAAAAAAAA0HKsACYRJk+eHKNGjaq3/cQTT4x33nmnFSoCAAAAAACAlicAJhE23HDDmDRpUr3tkyZNim7durV8QQAAAAAAANAKnAKaRDj55JPjlFNOiY8++ih23nnniIh48cUX4+qrr47zzjuvlasDAAAAAACAliEAJhEuvvjiWHfddeP666+Piy66KCIievXqFZdcckmcc845rVwdAAAAAAAAtAyngCavPfvss1FWVhapVCp++MMfxowZM+LLL7+ML7/8MmbMmBE/+MEPIpVKrdGfmclk4uKLL47+/ftH+/btY8CAAfGLX/wistlsdZ9sNhtjxoyJnj17Rvv27WPYsGHx/vvv13qcefPmxciRI2O99daLzp07x6hRo2LhwoVrtFYAAAAAAADWLgJg8tpee+0VnTt3jm9/+9vxi1/8Il588cVo3759rLvuus32M6+++uq49dZb45ZbbonJkyfH1VdfHddcc03cfPPN1X2uueaauOmmm+K2226LV155JTp27BjDhw+PpUuXVvcZOXJkvP322/HUU0/FY489Fs8//3yccsopzVY3AAAAAAAAyScAJq9NmTIlfvWrX8XGG28cv/vd72K33XaLzp07x/Dhw+Oqq66KV155JSorK9foz3zppZfioIMOiv333z/69esXhx56aOy9997x6quvRkRu9e+4cePiZz/7WRx00EGxzTbbxD333BOffPJJPPLIIxERMXny5Hj88cfjjjvuiCFDhsSuu+4aN998c/zxj3+MTz75ZI3WCwAAAAAAwNpDAExe69u3b5xwwgkxfvz4mDp1anzwwQdx0003Rffu3ePWW2+NnXfeObp06bJGf+bOO+8cf/vb3+K///1vRET8+9//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XXeNPffcM/bYY4/Yfvvt6wW2q+PAAw+Myy+/PDbeeOMYPHhw/Otf/4obbrghTjzxxIiISKVSce6558Zll10Wm222WfTv3z8uvvji6NWrVxx88MERETFo0KDYZ5994uSTT47bbrstysvL46yzzooRI0ZEr17JXwUIAAAAAABA8xAAk/cGDhwYAwcOjNNOOy0iIiZPnlx9PeDLLrssIiK++OKLNfbzbr755rj44ovjjDPOiDlz5kSvXr3i1FNPjTFjxlT3+dGPfhSLFi2KU045Jb744ovYdddd4/HHH4927dpV95kwYUKcddZZsddee0VBQUEccsghcdNNN62xOgEAAAAAAFj7CIBJlNmzZ8dbb70Vb731Vvz73/+OBQsWNHja5NWx7rrrxrhx42LcuHGN9kmlUnHppZfGpZde2mifLl26xMSJK3/dKgAAAAAAAGiMAJi8NmfOnHjuueeqTwH93//+N4qKimLHHXeMESNGxNChQ2OnnXZq7TIBAAAAAACgRQiAyWs9evSIoqKi2GGHHeKQQw6JoUOHxs477xzt27dv7dIAAAAAAACgxQmAyWs333xzHH/88dGxY8dG+1x77bUxevToFqwKAAAAAAAAWkdBaxcAq+Oqq66KuXPnNtp+3XXXxU9/+tMWrAgAAAAAAABajwCYvLbrrrvGsGHD4rPPPqvXdv3118dPfvKTuOeee1qhMgAAAAAAAGh5AmDy2r333hsDBgyI4cOHx4IFC6q3//KXv4wf//jHMX78+BgxYkQrVggAAAAAAAAtRwBMXissLIyHH3442rdvHwcccEAsXbo0xo0bF6NHj4677rorjjrqqNYuEQAAAAAAAFpMYWsXAKurffv28Ze//CX22GOP2H777eO///1v3HXXXXH00Ue3dmkAAAAAAADQogTA5LVHH320+t+nn356/OAHP4iDDz44OnXqVKvtu9/9bmuUBwAAAAAAAC1KAExeO/jgg+tte+ihh+Khhx6qvp1KpSKTybRgVcCa9vGUz2rd7tChJHr37dpK1dAcpn08NyK17HaH9sWxUe8urVcQa9zUT+fVut2hXXFs3GP9VqqG5vDRnNpz3LGkOPpuaI6T5MO5dea4uDj6dTHHSZGNiA++mBvZGtvWKSqO/p3McXJk46OvPq/1nqtjYXH0W8f76uTIxseLZ9ec4mhfWBK923drtYpYdTM+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", + "text/plain": [ + "<IPython.core.display.Image object>" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compile the model\n", + "clone_dinov2.set_backend(\"cpu\")\n", + "clone_dinov2.set_datatype(aidge_core.dtype.float32)\n", + "clone_dinov2.forward_dims([[1,3,224,224]], True)\n", + "\n", + "# Generate scheduling\n", + "s = aidge_core.SequentialScheduler(clone_dinov2)\n", + "s.generate_scheduling()\n", + "\n", + "# Visualize memory usage\n", + "_ = aidge_core.generate_optimized_memory_info(s, \"mem_strategy_og_dino\", wrapping=False, display_names=False)\n", + "Image(filename=\"./mem_strategy_og_dino/memory_info.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial the following concepts were studied:\n", + "- Graph transformations, in particular the `fuse_to_metaops` recipe;\n", + "- Static analysis, to measure the graph's complexity in terms of number of operations;\n", + "- Memory information generation, to visualize the graph's memory usage over inference time.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "aidge", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/source/Tutorial/tiling.html b/source/Tutorial/tiling.html index 456f03a3422a64f6b519aba463e68669a71a24b6..4ea182afe84494b2f511be34cc859278162c7709 100644 --- a/source/Tutorial/tiling.html +++ b/source/Tutorial/tiling.html @@ -59,11 +59,11 @@ <script src="../../_static/js/navbar_height.js?v=9f396bc2"></script> <link rel="index" title="Index" href="../../genindex.html" /> <link rel="search" title="Search" href="../../search.html" /> - <link rel="next" title="Export a MNIST model to a CPP standalone project" href="export_cpp.html" /> + <link rel="next" title="Export 101" href="export_cpp.html" /> <link rel="prev" title="Post Training Quantization with AIDGE" href="ptq.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> @@ -337,18 +337,24 @@ <li class="toctree-l1"><a class="reference internal" href="101_first_step.html">Aidge demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="database.html">Database MNIST</a></li> -<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation with Aidge</a></li> +<li class="toctree-l1"><a class="reference internal" href="database.html">Data provider tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="graph_matching.html">Graph matching and manipulation</a></li> <li class="toctree-l1"><a class="reference internal" href="scheduling.html">Understanding Aidge’s scheduling</a></li> <li class="toctree-l1"><a class="reference internal" href="learning.html">Training a simple Neural Network</a></li> <li class="toctree-l1"><a class="reference internal" href="ONNX.html">Aidge ONNX tutorial</a></li> +<li class="toctree-l1"><a class="reference internal" href="static_analysis.html">Perform static analysis on a neural network model</a></li> +<li class="toctree-l1"><a class="reference internal" href="backend_cuda.html">Backend CUDA example</a></li> </ul> <ul class="current nav bd-sidenav"> <li class="toctree-l1"><a class="reference internal" href="ptq.html">Post Training Quantization with AIDGE</a></li> <li class="toctree-l1 current active"><a class="current reference internal" href="#">Aidge tiling demonstration</a></li> </ul> <ul class="nav bd-sidenav"> -<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export a MNIST model to a CPP standalone project</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp.html">Export 101</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_quant.html">Quantized model C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_cpp_add_impl.html">Add a custom operator to the C++ export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_trt.html">TensorRT export</a></li> +<li class="toctree-l1"><a class="reference internal" href="export_stm32.html">STM32 export</a></li> </ul> </div> </nav></div> @@ -473,7 +479,7 @@ <div class="prompt empty docutils container"> </div> <div class="output_area rendered_html docutils container"> -<img src="https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpMZWFreVJlTFVfMCgibGVha3lyZWx1MDxici8+PHN1Yj48ZW0+KExlYWt5UmVMVSMwKTwvZW0+PC9zdWI+Iik6Ojpyb290Q2xzClByb2R1Y2VyXzIoImJuMF9zY2FsZTxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkJhdGNoTm9ybTJEXzAoImJuMDxici8+PHN1Yj48ZW0+KEJhdGNoTm9ybTJEIzApPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8zKCJibjBfc2hpZnQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMzKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl81KCJibjBfYmF0Y2hfdmFyaWFuY2U8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8wKCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNCgiYm4wX2JhdGNoX21lYW48YnIvPjxzdWI+PGVtPihQcm9kdWNlciM0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpDb252MkRfMCgiY29udjA8YnIvPjxzdWI+PGVtPihDb252MkQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzEoImNvbnYwX2I8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpSZUxVXzAoInJlbHUwPGJyLz48c3ViPjxlbT4oUmVMVSMwKTwvZW0+PC9zdWI+IikKTGVha3lSZUxVXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8Q29udjJEXzAKUHJvZHVjZXJfMi0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8QmF0Y2hOb3JtMkRfMApCYXRjaE5vcm0yRF8wLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifFJlTFVfMApQcm9kdWNlcl8zLS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzUtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjQifEJhdGNoTm9ybTJEXzAKUHJvZHVjZXJfMC0tPnwiMCBbMzIsIDMsIDMsIDNdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8Q29udjJEXzAKUHJvZHVjZXJfNC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MyJ8QmF0Y2hOb3JtMkRfMApDb252MkRfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzEtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8wCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg=="/></div> +<img src="https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpDb252MkRfMCgiY29udjA8YnIvPjxzdWI+PGVtPihDb252MkQjMCk8L2VtPjwvc3ViPiIpCkxlYWt5UmVMVV8wKCJsZWFreXJlbHUwPGJyLz48c3ViPjxlbT4oTGVha3lSZUxVIzApPC9lbT48L3N1Yj4iKTo6OnJvb3RDbHMKUHJvZHVjZXJfMigiYm4wX3NjYWxlPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMSgiY29udjBfYjxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkJhdGNoTm9ybTJEXzAoImJuMDxici8+PHN1Yj48ZW0+KEJhdGNoTm9ybTJEIzApPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8wKCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMygiYm4wX3NoaWZ0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNCgiYm4wX2JhdGNoX21lYW48YnIvPjxzdWI+PGVtPihQcm9kdWNlciM0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl81KCJibjBfYmF0Y2hfdmFyaWFuY2U8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpSZUxVXzAoInJlbHUwPGJyLz48c3ViPjxlbT4oUmVMVSMwKTwvZW0+PC9zdWI+IikKQ29udjJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8QmF0Y2hOb3JtMkRfMApMZWFreVJlTFVfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMApQcm9kdWNlcl8yLS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzEtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8wCkJhdGNoTm9ybTJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClByb2R1Y2VyXzAtLT58IjAgWzMyLCAzLCAzLCAzXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifENvbnYyRF8wClByb2R1Y2VyXzMtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifEJhdGNoTm9ybTJEXzAKUHJvZHVjZXJfNC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MyJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl81LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz40InxCYXRjaE5vcm0yRF8wCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg=="/></div> </div> <p>Let’s create an input to link to the model.</p> <div class="nbinput nblast docutils container"> @@ -577,7 +583,7 @@ True <div class="prompt empty docutils container"> </div> <div class="output_area rendered_html docutils container"> -<img src="https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpMZWFreVJlTFVfMCgibGVha3lyZWx1MDxici8+PHN1Yj48ZW0+KExlYWt5UmVMVSMwKTwvZW0+PC9zdWI+Iik6Ojpyb290Q2xzClByb2R1Y2VyXzE4KCJibjBfc2NhbGU8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKQmF0Y2hOb3JtMkRfMCgiYm4wPGJyLz48c3ViPjxlbT4oQmF0Y2hOb3JtMkQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE5KCJibjBfc2hpZnQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMjEoImJuMF9iYXRjaF92YXJpYW5jZTxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIxKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8yMCgiYm4wX2JhdGNoX21lYW48YnIvPjxzdWI+PGVtPihQcm9kdWNlciMyMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUmVMVV8wKCJyZWx1MDxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpCkNvbmNhdF8wKCJDb25jYXQ8YnIvPjxzdWI+PGVtPihDb25jYXQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE2KCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTYpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzE3KCJjb252MF9iPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTcpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8wKCJjb252MF8wPGJyLz48c3ViPjxlbT4oQ29udjJEIzApPC9lbT48L3N1Yj4iKQpTbGljZV8wKCJjb252MF9TbGljZV8wPGJyLz48c3ViPjxlbT4oU2xpY2UjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzAoImNvbnYwX1NsaWNlXzBfc3RhcnRzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMSgiY29udjBfU2xpY2VfMF9lbmRzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMigiY29udjBfU2xpY2VfMF9heGVzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMygiY29udjBfU2xpY2VfMF9zdGVwczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzMpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8xKCJjb252MF8xNjxici8+PHN1Yj48ZW0+KENvbnYyRCMxKTwvZW0+PC9zdWI+IikKU2xpY2VfMSgiY29udjBfU2xpY2VfMTxici8+PHN1Yj48ZW0+KFNsaWNlIzEpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl80KCJjb252MF9TbGljZV8xX3N0YXJ0czxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzQpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzUoImNvbnYwX1NsaWNlXzFfZW5kczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzUpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzYoImNvbnYwX1NsaWNlXzFfYXhlczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzYpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzcoImNvbnYwX1NsaWNlXzFfc3RlcHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM3KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpDb252MkRfMigiY29udjBfMzI8YnIvPjxzdWI+PGVtPihDb252MkQjMik8L2VtPjwvc3ViPiIpClNsaWNlXzIoImNvbnYwX1NsaWNlXzI8YnIvPjxzdWI+PGVtPihTbGljZSMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfOCgiY29udjBfU2xpY2VfMl9zdGFydHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM4KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl85KCJjb252MF9TbGljZV8yX2VuZHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM5KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xMCgiY29udjBfU2xpY2VfMl9heGVzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTApPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzExKCJjb252MF9TbGljZV8yX3N0ZXBzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8zKCJjb252MF80ODxici8+PHN1Yj48ZW0+KENvbnYyRCMzKTwvZW0+PC9zdWI+IikKU2xpY2VfMygiY29udjBfU2xpY2VfMzxici8+PHN1Yj48ZW0+KFNsaWNlIzMpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8xMigiY29udjBfU2xpY2VfM19zdGFydHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMTMoImNvbnYwX1NsaWNlXzNfZW5kczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEzKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xNCgiY29udjBfU2xpY2VfM19heGVzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTQpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzE1KCJjb252MF9TbGljZV8zX3N0ZXBzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTUpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkxlYWt5UmVMVV8wLS0+fCIwIFs0LCAzLCA2NiwgNjZdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8U2xpY2VfMApMZWFreVJlTFVfMC0tPnwiMCBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifFNsaWNlXzEKTGVha3lSZUxVXzAtLT58IjAgWzQsIDMsIDY2LCA2Nl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4wInxTbGljZV8yCkxlYWt5UmVMVV8wLS0+fCIwIFs0LCAzLCA2NiwgNjZdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8U2xpY2VfMwpQcm9kdWNlcl8xOC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8QmF0Y2hOb3JtMkRfMApCYXRjaE5vcm0yRF8wLS0+fCIwIFs0LCAzMiwgNjQsIDY0XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifFJlTFVfMApQcm9kdWNlcl8xOS0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl8yMS0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+NCJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl8yMC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MyJ8QmF0Y2hOb3JtMkRfMApDb25jYXRfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMApQcm9kdWNlcl8xNi0tPnwiMCBbMzIsIDMsIDMsIDNdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8Q29udjJEXzEKUHJvZHVjZXJfMTYtLT58IjAgWzMyLCAzLCAzLCAzXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifENvbnYyRF8yClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMwpQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzAKUHJvZHVjZXJfMTctLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8xClByb2R1Y2VyXzE3LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxDb252MkRfMgpQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzMKQ29udjJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8Q29uY2F0XzAKU2xpY2VfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMApQcm9kdWNlcl8wLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8wClByb2R1Y2VyXzEtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzAKUHJvZHVjZXJfMi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8wClByb2R1Y2VyXzMtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzAKQ29udjJEXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MSJ8Q29uY2F0XzAKU2xpY2VfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMQpQcm9kdWNlcl80LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8xClByb2R1Y2VyXzUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzEKUHJvZHVjZXJfNi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8xClByb2R1Y2VyXzctLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzEKQ29udjJEXzItLT58IjA8YnIvPiZkYXJyOzxici8+MiJ8Q29uY2F0XzAKU2xpY2VfMi0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMgpQcm9kdWNlcl84LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8yClByb2R1Y2VyXzktLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzIKUHJvZHVjZXJfMTAtLT58IjAgWzRdIEludDg8YnIvPiZkYXJyOzxici8+MyJ8U2xpY2VfMgpQcm9kdWNlcl8xMS0tPnwiMCBbNF0gSW50NjQ8YnIvPiZkYXJyOzxici8+NCJ8U2xpY2VfMgpDb252MkRfMy0tPnwiMDxici8+JmRhcnI7PGJyLz4zInxDb25jYXRfMApTbGljZV8zLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifENvbnYyRF8zClByb2R1Y2VyXzEyLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8zClByb2R1Y2VyXzEzLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4yInxTbGljZV8zClByb2R1Y2VyXzE0LS0+fCIwIFs0XSBJbnQ4PGJyLz4mZGFycjs8YnIvPjMifFNsaWNlXzMKUHJvZHVjZXJfMTUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzMKaW5wdXQwKChpbiMwKSk6OjppbnB1dENscy0tLT58IiBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjAgWzQsIDMyLCA2NCwgNjRdIEZsb2F0MzI8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg=="/></div> +<img src="https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpDb25jYXRfMCgiQ29uY2F0PGJyLz48c3ViPjxlbT4oQ29uY2F0IzApPC9lbT48L3N1Yj4iKQpMZWFreVJlTFVfMCgibGVha3lyZWx1MDxici8+PHN1Yj48ZW0+KExlYWt5UmVMVSMwKTwvZW0+PC9zdWI+Iik6Ojpyb290Q2xzClByb2R1Y2VyXzE4KCJibjBfc2NhbGU8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKQmF0Y2hOb3JtMkRfMCgiYm4wPGJyLz48c3ViPjxlbT4oQmF0Y2hOb3JtMkQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE5KCJibjBfc2hpZnQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMjAoImJuMF9iYXRjaF9tZWFuPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMjApPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzE2KCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTYpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzIxKCJibjBfYmF0Y2hfdmFyaWFuY2U8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMyMSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUmVMVV8wKCJyZWx1MDxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE3KCJjb252MF9iPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTcpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8wKCJjb252MF8wPGJyLz48c3ViPjxlbT4oQ29udjJEIzApPC9lbT48L3N1Yj4iKQpTbGljZV8wKCJjb252MF9TbGljZV8wPGJyLz48c3ViPjxlbT4oU2xpY2UjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzAoImNvbnYwX1NsaWNlXzBfMTxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzApPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzEoImNvbnYwX1NsaWNlXzBfMjxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzIoImNvbnYwX1NsaWNlXzBfMzxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzMoImNvbnYwX1NsaWNlXzBfNDxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzMpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8xKCJjb252MF8xNjxici8+PHN1Yj48ZW0+KENvbnYyRCMxKTwvZW0+PC9zdWI+IikKU2xpY2VfMSgiY29udjBfU2xpY2VfMTxici8+PHN1Yj48ZW0+KFNsaWNlIzEpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl80KCJjb252MF9TbGljZV8xXzE8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl81KCJjb252MF9TbGljZV8xXzI8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl82KCJjb252MF9TbGljZV8xXzM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM2KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl83KCJjb252MF9TbGljZV8xXzQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM3KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpDb252MkRfMigiY29udjBfMzI8YnIvPjxzdWI+PGVtPihDb252MkQjMik8L2VtPjwvc3ViPiIpClNsaWNlXzIoImNvbnYwX1NsaWNlXzI8YnIvPjxzdWI+PGVtPihTbGljZSMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfOCgiY29udjBfU2xpY2VfMl8xPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjOCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfOSgiY29udjBfU2xpY2VfMl8yPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjOSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMTAoImNvbnYwX1NsaWNlXzJfMzxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEwKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xMSgiY29udjBfU2xpY2VfMl80PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8zKCJjb252MF80ODxici8+PHN1Yj48ZW0+KENvbnYyRCMzKTwvZW0+PC9zdWI+IikKU2xpY2VfMygiY29udjBfU2xpY2VfMzxici8+PHN1Yj48ZW0+KFNsaWNlIzMpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8xMigiY29udjBfU2xpY2VfM18xPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzEzKCJjb252MF9TbGljZV8zXzI8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMTQoImNvbnYwX1NsaWNlXzNfMzxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzE0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xNSgiY29udjBfU2xpY2VfM180PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTUpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbmNhdF8wLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifEJhdGNoTm9ybTJEXzAKTGVha3lSZUxVXzAtLT58IjAgWzQsIDMsIDY2LCA2Nl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4wInxTbGljZV8wCkxlYWt5UmVMVV8wLS0+fCIwIFs0LCAzLCA2NiwgNjZdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8U2xpY2VfMQpMZWFreVJlTFVfMC0tPnwiMCBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifFNsaWNlXzIKTGVha3lSZUxVXzAtLT58IjAgWzQsIDMsIDY2LCA2Nl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4wInxTbGljZV8zClByb2R1Y2VyXzE4LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxCYXRjaE5vcm0yRF8wCkJhdGNoTm9ybTJEXzAtLT58IjAgWzQsIDMyLCA2NCwgNjRdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClByb2R1Y2VyXzE5LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzIwLS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4zInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMApQcm9kdWNlcl8xNi0tPnwiMCBbMzIsIDMsIDMsIDNdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8Q29udjJEXzEKUHJvZHVjZXJfMTYtLT58IjAgWzMyLCAzLCAzLCAzXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifENvbnYyRF8yClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMwpQcm9kdWNlcl8yMS0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+NCJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzAKUHJvZHVjZXJfMTctLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8xClByb2R1Y2VyXzE3LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxDb252MkRfMgpQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzMKQ29udjJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8Q29uY2F0XzAKU2xpY2VfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMApQcm9kdWNlcl8wLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8wClByb2R1Y2VyXzEtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzAKUHJvZHVjZXJfMi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8wClByb2R1Y2VyXzMtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzAKQ29udjJEXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MSJ8Q29uY2F0XzAKU2xpY2VfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMQpQcm9kdWNlcl80LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8xClByb2R1Y2VyXzUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzEKUHJvZHVjZXJfNi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8xClByb2R1Y2VyXzctLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzEKQ29udjJEXzItLT58IjA8YnIvPiZkYXJyOzxici8+MiJ8Q29uY2F0XzAKU2xpY2VfMi0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMgpQcm9kdWNlcl84LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8yClByb2R1Y2VyXzktLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzIKUHJvZHVjZXJfMTAtLT58IjAgWzRdIEludDg8YnIvPiZkYXJyOzxici8+MyJ8U2xpY2VfMgpQcm9kdWNlcl8xMS0tPnwiMCBbNF0gSW50NjQ8YnIvPiZkYXJyOzxici8+NCJ8U2xpY2VfMgpDb252MkRfMy0tPnwiMDxici8+JmRhcnI7PGJyLz4zInxDb25jYXRfMApTbGljZV8zLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifENvbnYyRF8zClByb2R1Y2VyXzEyLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8zClByb2R1Y2VyXzEzLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4yInxTbGljZV8zClByb2R1Y2VyXzE0LS0+fCIwIFs0XSBJbnQ4PGJyLz4mZGFycjs8YnIvPjMifFNsaWNlXzMKUHJvZHVjZXJfMTUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzMKaW5wdXQwKChpbiMwKSk6OjppbnB1dENscy0tLT58IiBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjAgWzQsIDMyLCA2NCwgNjRdIEZsb2F0MzI8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg=="/></div> </div> <p>Now we run the transformed model and compare it’s ouput value to the previous one.</p> <div class="nbinput nblast docutils container"> @@ -636,7 +642,7 @@ True title="next page"> <div class="prev-next-info"> <p class="prev-next-subtitle">next</p> - <p class="prev-next-title">Export a MNIST model to a CPP standalone project</p> + <p class="prev-next-title">Export 101</p> </div> <i class="fa-solid fa-angle-right"></i> </a> diff --git a/source/Tutorial/tiling.ipynb b/source/Tutorial/tiling.ipynb index 348f23a0324ccd44c7d872661f77ff5395dfbf73..b8325d72bb96448b79010b800d959dcb8c0147b5 100644 --- a/source/Tutorial/tiling.ipynb +++ b/source/Tutorial/tiling.ipynb @@ -19,10 +19,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.326573Z", - "iopub.status.busy": "2025-05-11T15:22:26.326489Z", - "iopub.status.idle": "2025-05-11T15:22:26.547399Z", - "shell.execute_reply": "2025-05-11T15:22:26.547077Z" + "iopub.execute_input": "2025-05-19T10:06:13.739825Z", + "iopub.status.busy": "2025-05-19T10:06:13.739573Z", + "iopub.status.idle": "2025-05-19T10:06:14.063371Z", + "shell.execute_reply": "2025-05-19T10:06:14.062983Z" } }, "outputs": [], @@ -47,10 +47,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.549005Z", - "iopub.status.busy": "2025-05-11T15:22:26.548895Z", - "iopub.status.idle": "2025-05-11T15:22:26.551018Z", - "shell.execute_reply": "2025-05-11T15:22:26.550817Z" + "iopub.execute_input": "2025-05-19T10:06:14.065335Z", + "iopub.status.busy": "2025-05-19T10:06:14.065159Z", + "iopub.status.idle": "2025-05-19T10:06:14.067670Z", + "shell.execute_reply": "2025-05-19T10:06:14.067402Z" } }, "outputs": [], @@ -83,10 +83,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.551948Z", - "iopub.status.busy": "2025-05-11T15:22:26.551866Z", - "iopub.status.idle": "2025-05-11T15:22:26.553743Z", - "shell.execute_reply": "2025-05-11T15:22:26.553545Z" + "iopub.execute_input": "2025-05-19T10:06:14.068602Z", + "iopub.status.busy": "2025-05-19T10:06:14.068480Z", + "iopub.status.idle": "2025-05-19T10:06:14.070689Z", + "shell.execute_reply": "2025-05-19T10:06:14.070442Z" } }, "outputs": [], @@ -105,17 +105,17 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.554581Z", - "iopub.status.busy": "2025-05-11T15:22:26.554454Z", - "iopub.status.idle": "2025-05-11T15:22:26.557074Z", - "shell.execute_reply": "2025-05-11T15:22:26.556897Z" + "iopub.execute_input": "2025-05-19T10:06:14.071549Z", + "iopub.status.busy": "2025-05-19T10:06:14.071432Z", + "iopub.status.idle": "2025-05-19T10:06:14.074561Z", + "shell.execute_reply": "2025-05-19T10:06:14.074324Z" } }, "outputs": [ { "data": { "text/html": [ - "<img src=\"https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpMZWFreVJlTFVfMCgibGVha3lyZWx1MDxici8+PHN1Yj48ZW0+KExlYWt5UmVMVSMwKTwvZW0+PC9zdWI+Iik6Ojpyb290Q2xzClByb2R1Y2VyXzIoImJuMF9zY2FsZTxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkJhdGNoTm9ybTJEXzAoImJuMDxici8+PHN1Yj48ZW0+KEJhdGNoTm9ybTJEIzApPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8zKCJibjBfc2hpZnQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMzKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl81KCJibjBfYmF0Y2hfdmFyaWFuY2U8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8wKCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNCgiYm4wX2JhdGNoX21lYW48YnIvPjxzdWI+PGVtPihQcm9kdWNlciM0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpDb252MkRfMCgiY29udjA8YnIvPjxzdWI+PGVtPihDb252MkQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzEoImNvbnYwX2I8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpSZUxVXzAoInJlbHUwPGJyLz48c3ViPjxlbT4oUmVMVSMwKTwvZW0+PC9zdWI+IikKTGVha3lSZUxVXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8Q29udjJEXzAKUHJvZHVjZXJfMi0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8QmF0Y2hOb3JtMkRfMApCYXRjaE5vcm0yRF8wLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifFJlTFVfMApQcm9kdWNlcl8zLS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzUtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjQifEJhdGNoTm9ybTJEXzAKUHJvZHVjZXJfMC0tPnwiMCBbMzIsIDMsIDMsIDNdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8Q29udjJEXzAKUHJvZHVjZXJfNC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MyJ8QmF0Y2hOb3JtMkRfMApDb252MkRfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzEtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8wCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg==\"/>" + "<img src=\"https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpDb252MkRfMCgiY29udjA8YnIvPjxzdWI+PGVtPihDb252MkQjMCk8L2VtPjwvc3ViPiIpCkxlYWt5UmVMVV8wKCJsZWFreXJlbHUwPGJyLz48c3ViPjxlbT4oTGVha3lSZUxVIzApPC9lbT48L3N1Yj4iKTo6OnJvb3RDbHMKUHJvZHVjZXJfMigiYm4wX3NjYWxlPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMSgiY29udjBfYjxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkJhdGNoTm9ybTJEXzAoImJuMDxici8+PHN1Yj48ZW0+KEJhdGNoTm9ybTJEIzApPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8wKCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMygiYm4wX3NoaWZ0PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfNCgiYm4wX2JhdGNoX21lYW48YnIvPjxzdWI+PGVtPihQcm9kdWNlciM0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl81KCJibjBfYmF0Y2hfdmFyaWFuY2U8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpSZUxVXzAoInJlbHUwPGJyLz48c3ViPjxlbT4oUmVMVSMwKTwvZW0+PC9zdWI+IikKQ29udjJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8QmF0Y2hOb3JtMkRfMApMZWFreVJlTFVfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMApQcm9kdWNlcl8yLS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzEtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8wCkJhdGNoTm9ybTJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClByb2R1Y2VyXzAtLT58IjAgWzMyLCAzLCAzLCAzXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifENvbnYyRF8wClByb2R1Y2VyXzMtLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifEJhdGNoTm9ybTJEXzAKUHJvZHVjZXJfNC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MyJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl81LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz40InxCYXRjaE5vcm0yRF8wCmlucHV0MCgoaW4jMCkpOjo6aW5wdXRDbHMtLS0+fCImZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjA8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg==\"/>" ], "text/plain": [ "<IPython.core.display.Image object>" @@ -141,10 +141,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.557864Z", - "iopub.status.busy": "2025-05-11T15:22:26.557787Z", - "iopub.status.idle": "2025-05-11T15:22:26.559560Z", - "shell.execute_reply": "2025-05-11T15:22:26.559379Z" + "iopub.execute_input": "2025-05-19T10:06:14.075442Z", + "iopub.status.busy": "2025-05-19T10:06:14.075328Z", + "iopub.status.idle": "2025-05-19T10:06:14.077436Z", + "shell.execute_reply": "2025-05-19T10:06:14.077193Z" } }, "outputs": [], @@ -165,10 +165,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.560372Z", - "iopub.status.busy": "2025-05-11T15:22:26.560250Z", - "iopub.status.idle": "2025-05-11T15:22:26.562219Z", - "shell.execute_reply": "2025-05-11T15:22:26.562030Z" + "iopub.execute_input": "2025-05-19T10:06:14.078820Z", + "iopub.status.busy": "2025-05-19T10:06:14.078700Z", + "iopub.status.idle": "2025-05-19T10:06:14.081058Z", + "shell.execute_reply": "2025-05-19T10:06:14.080813Z" } }, "outputs": [], @@ -186,10 +186,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.562975Z", - "iopub.status.busy": "2025-05-11T15:22:26.562898Z", - "iopub.status.idle": "2025-05-11T15:22:26.564747Z", - "shell.execute_reply": "2025-05-11T15:22:26.564561Z" + "iopub.execute_input": "2025-05-19T10:06:14.081870Z", + "iopub.status.busy": "2025-05-19T10:06:14.081757Z", + "iopub.status.idle": "2025-05-19T10:06:14.083966Z", + "shell.execute_reply": "2025-05-19T10:06:14.083721Z" } }, "outputs": [], @@ -215,10 +215,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.565491Z", - "iopub.status.busy": "2025-05-11T15:22:26.565353Z", - "iopub.status.idle": "2025-05-11T15:22:26.566821Z", - "shell.execute_reply": "2025-05-11T15:22:26.566634Z" + "iopub.execute_input": "2025-05-19T10:06:14.084812Z", + "iopub.status.busy": "2025-05-19T10:06:14.084701Z", + "iopub.status.idle": "2025-05-19T10:06:14.086427Z", + "shell.execute_reply": "2025-05-19T10:06:14.086190Z" } }, "outputs": [], @@ -238,10 +238,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.567522Z", - "iopub.status.busy": "2025-05-11T15:22:26.567390Z", - "iopub.status.idle": "2025-05-11T15:22:26.572347Z", - "shell.execute_reply": "2025-05-11T15:22:26.572129Z" + "iopub.execute_input": "2025-05-19T10:06:14.087234Z", + "iopub.status.busy": "2025-05-19T10:06:14.087121Z", + "iopub.status.idle": "2025-05-19T10:06:14.091948Z", + "shell.execute_reply": "2025-05-19T10:06:14.091694Z" } }, "outputs": [], @@ -270,10 +270,10 @@ "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.573212Z", - "iopub.status.busy": "2025-05-11T15:22:26.573090Z", - "iopub.status.idle": "2025-05-11T15:22:26.575488Z", - "shell.execute_reply": "2025-05-11T15:22:26.575296Z" + "iopub.execute_input": "2025-05-19T10:06:14.092785Z", + "iopub.status.busy": "2025-05-19T10:06:14.092671Z", + "iopub.status.idle": "2025-05-19T10:06:14.095413Z", + "shell.execute_reply": "2025-05-19T10:06:14.095168Z" } }, "outputs": [ @@ -311,17 +311,17 @@ "execution_count": 11, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.576308Z", - "iopub.status.busy": "2025-05-11T15:22:26.576223Z", - "iopub.status.idle": "2025-05-11T15:22:26.578157Z", - "shell.execute_reply": "2025-05-11T15:22:26.577982Z" + "iopub.execute_input": "2025-05-19T10:06:14.096270Z", + "iopub.status.busy": "2025-05-19T10:06:14.096151Z", + "iopub.status.idle": "2025-05-19T10:06:14.098481Z", + "shell.execute_reply": "2025-05-19T10:06:14.098247Z" } }, "outputs": [ { "data": { "text/html": [ - "<img src=\"https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpMZWFreVJlTFVfMCgibGVha3lyZWx1MDxici8+PHN1Yj48ZW0+KExlYWt5UmVMVSMwKTwvZW0+PC9zdWI+Iik6Ojpyb290Q2xzClByb2R1Y2VyXzE4KCJibjBfc2NhbGU8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKQmF0Y2hOb3JtMkRfMCgiYm4wPGJyLz48c3ViPjxlbT4oQmF0Y2hOb3JtMkQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE5KCJibjBfc2hpZnQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMjEoImJuMF9iYXRjaF92YXJpYW5jZTxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIxKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8yMCgiYm4wX2JhdGNoX21lYW48YnIvPjxzdWI+PGVtPihQcm9kdWNlciMyMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUmVMVV8wKCJyZWx1MDxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpCkNvbmNhdF8wKCJDb25jYXQ8YnIvPjxzdWI+PGVtPihDb25jYXQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE2KCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTYpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzE3KCJjb252MF9iPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTcpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8wKCJjb252MF8wPGJyLz48c3ViPjxlbT4oQ29udjJEIzApPC9lbT48L3N1Yj4iKQpTbGljZV8wKCJjb252MF9TbGljZV8wPGJyLz48c3ViPjxlbT4oU2xpY2UjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzAoImNvbnYwX1NsaWNlXzBfc3RhcnRzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMSgiY29udjBfU2xpY2VfMF9lbmRzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMigiY29udjBfU2xpY2VfMF9heGVzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMygiY29udjBfU2xpY2VfMF9zdGVwczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzMpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8xKCJjb252MF8xNjxici8+PHN1Yj48ZW0+KENvbnYyRCMxKTwvZW0+PC9zdWI+IikKU2xpY2VfMSgiY29udjBfU2xpY2VfMTxici8+PHN1Yj48ZW0+KFNsaWNlIzEpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl80KCJjb252MF9TbGljZV8xX3N0YXJ0czxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzQpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzUoImNvbnYwX1NsaWNlXzFfZW5kczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzUpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzYoImNvbnYwX1NsaWNlXzFfYXhlczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzYpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzcoImNvbnYwX1NsaWNlXzFfc3RlcHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM3KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpDb252MkRfMigiY29udjBfMzI8YnIvPjxzdWI+PGVtPihDb252MkQjMik8L2VtPjwvc3ViPiIpClNsaWNlXzIoImNvbnYwX1NsaWNlXzI8YnIvPjxzdWI+PGVtPihTbGljZSMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfOCgiY29udjBfU2xpY2VfMl9zdGFydHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM4KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl85KCJjb252MF9TbGljZV8yX2VuZHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM5KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xMCgiY29udjBfU2xpY2VfMl9heGVzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTApPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzExKCJjb252MF9TbGljZV8yX3N0ZXBzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8zKCJjb252MF80ODxici8+PHN1Yj48ZW0+KENvbnYyRCMzKTwvZW0+PC9zdWI+IikKU2xpY2VfMygiY29udjBfU2xpY2VfMzxici8+PHN1Yj48ZW0+KFNsaWNlIzMpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8xMigiY29udjBfU2xpY2VfM19zdGFydHM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxMik8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMTMoImNvbnYwX1NsaWNlXzNfZW5kczxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEzKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xNCgiY29udjBfU2xpY2VfM19heGVzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTQpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzE1KCJjb252MF9TbGljZV8zX3N0ZXBzPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTUpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkxlYWt5UmVMVV8wLS0+fCIwIFs0LCAzLCA2NiwgNjZdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8U2xpY2VfMApMZWFreVJlTFVfMC0tPnwiMCBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifFNsaWNlXzEKTGVha3lSZUxVXzAtLT58IjAgWzQsIDMsIDY2LCA2Nl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4wInxTbGljZV8yCkxlYWt5UmVMVV8wLS0+fCIwIFs0LCAzLCA2NiwgNjZdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8U2xpY2VfMwpQcm9kdWNlcl8xOC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8QmF0Y2hOb3JtMkRfMApCYXRjaE5vcm0yRF8wLS0+fCIwIFs0LCAzMiwgNjQsIDY0XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifFJlTFVfMApQcm9kdWNlcl8xOS0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl8yMS0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+NCJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl8yMC0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MyJ8QmF0Y2hOb3JtMkRfMApDb25jYXRfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMApQcm9kdWNlcl8xNi0tPnwiMCBbMzIsIDMsIDMsIDNdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8Q29udjJEXzEKUHJvZHVjZXJfMTYtLT58IjAgWzMyLCAzLCAzLCAzXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifENvbnYyRF8yClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMwpQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzAKUHJvZHVjZXJfMTctLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8xClByb2R1Y2VyXzE3LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxDb252MkRfMgpQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzMKQ29udjJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8Q29uY2F0XzAKU2xpY2VfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMApQcm9kdWNlcl8wLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8wClByb2R1Y2VyXzEtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzAKUHJvZHVjZXJfMi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8wClByb2R1Y2VyXzMtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzAKQ29udjJEXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MSJ8Q29uY2F0XzAKU2xpY2VfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMQpQcm9kdWNlcl80LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8xClByb2R1Y2VyXzUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzEKUHJvZHVjZXJfNi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8xClByb2R1Y2VyXzctLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzEKQ29udjJEXzItLT58IjA8YnIvPiZkYXJyOzxici8+MiJ8Q29uY2F0XzAKU2xpY2VfMi0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMgpQcm9kdWNlcl84LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8yClByb2R1Y2VyXzktLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzIKUHJvZHVjZXJfMTAtLT58IjAgWzRdIEludDg8YnIvPiZkYXJyOzxici8+MyJ8U2xpY2VfMgpQcm9kdWNlcl8xMS0tPnwiMCBbNF0gSW50NjQ8YnIvPiZkYXJyOzxici8+NCJ8U2xpY2VfMgpDb252MkRfMy0tPnwiMDxici8+JmRhcnI7PGJyLz4zInxDb25jYXRfMApTbGljZV8zLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifENvbnYyRF8zClByb2R1Y2VyXzEyLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8zClByb2R1Y2VyXzEzLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4yInxTbGljZV8zClByb2R1Y2VyXzE0LS0+fCIwIFs0XSBJbnQ4PGJyLz4mZGFycjs8YnIvPjMifFNsaWNlXzMKUHJvZHVjZXJfMTUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzMKaW5wdXQwKChpbiMwKSk6OjppbnB1dENscy0tLT58IiBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjAgWzQsIDMyLCA2NCwgNjRdIEZsb2F0MzI8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg==\"/>" + "<img src=\"https://mermaid.ink/img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7ICdjdXJ2ZSc6ICdtb25vdG9uZVknfSwgJ2ZvbnRGYW1pbHknOiAnVmVyZGFuYScgfSB9JSUKZmxvd2NoYXJ0IFRCCgpDb25jYXRfMCgiQ29uY2F0PGJyLz48c3ViPjxlbT4oQ29uY2F0IzApPC9lbT48L3N1Yj4iKQpMZWFreVJlTFVfMCgibGVha3lyZWx1MDxici8+PHN1Yj48ZW0+KExlYWt5UmVMVSMwKTwvZW0+PC9zdWI+Iik6Ojpyb290Q2xzClByb2R1Y2VyXzE4KCJibjBfc2NhbGU8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKQmF0Y2hOb3JtMkRfMCgiYm4wPGJyLz48c3ViPjxlbT4oQmF0Y2hOb3JtMkQjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE5KCJibjBfc2hpZnQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxOSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMjAoImJuMF9iYXRjaF9tZWFuPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMjApPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzE2KCJjb252MF93PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTYpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzIxKCJibjBfYmF0Y2hfdmFyaWFuY2U8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMyMSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUmVMVV8wKCJyZWx1MDxici8+PHN1Yj48ZW0+KFJlTFUjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzE3KCJjb252MF9iPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTcpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8wKCJjb252MF8wPGJyLz48c3ViPjxlbT4oQ29udjJEIzApPC9lbT48L3N1Yj4iKQpTbGljZV8wKCJjb252MF9TbGljZV8wPGJyLz48c3ViPjxlbT4oU2xpY2UjMCk8L2VtPjwvc3ViPiIpClByb2R1Y2VyXzAoImNvbnYwX1NsaWNlXzBfMTxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzApPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzEoImNvbnYwX1NsaWNlXzBfMjxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzIoImNvbnYwX1NsaWNlXzBfMzxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzMoImNvbnYwX1NsaWNlXzBfNDxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzMpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8xKCJjb252MF8xNjxici8+PHN1Yj48ZW0+KENvbnYyRCMxKTwvZW0+PC9zdWI+IikKU2xpY2VfMSgiY29udjBfU2xpY2VfMTxici8+PHN1Yj48ZW0+KFNsaWNlIzEpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl80KCJjb252MF9TbGljZV8xXzE8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl81KCJjb252MF9TbGljZV8xXzI8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM1KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl82KCJjb252MF9TbGljZV8xXzM8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM2KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl83KCJjb252MF9TbGljZV8xXzQ8YnIvPjxzdWI+PGVtPihQcm9kdWNlciM3KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpDb252MkRfMigiY29udjBfMzI8YnIvPjxzdWI+PGVtPihDb252MkQjMik8L2VtPjwvc3ViPiIpClNsaWNlXzIoImNvbnYwX1NsaWNlXzI8YnIvPjxzdWI+PGVtPihTbGljZSMyKTwvZW0+PC9zdWI+IikKUHJvZHVjZXJfOCgiY29udjBfU2xpY2VfMl8xPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjOCk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfOSgiY29udjBfU2xpY2VfMl8yPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjOSk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMTAoImNvbnYwX1NsaWNlXzJfMzxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzEwKTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xMSgiY29udjBfU2xpY2VfMl80PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTEpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbnYyRF8zKCJjb252MF80ODxici8+PHN1Yj48ZW0+KENvbnYyRCMzKTwvZW0+PC9zdWI+IikKU2xpY2VfMygiY29udjBfU2xpY2VfMzxici8+PHN1Yj48ZW0+KFNsaWNlIzMpPC9lbT48L3N1Yj4iKQpQcm9kdWNlcl8xMigiY29udjBfU2xpY2VfM18xPGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTIpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzClByb2R1Y2VyXzEzKCJjb252MF9TbGljZV8zXzI8YnIvPjxzdWI+PGVtPihQcm9kdWNlciMxMyk8L2VtPjwvc3ViPiIpOjo6cHJvZHVjZXJDbHMKUHJvZHVjZXJfMTQoImNvbnYwX1NsaWNlXzNfMzxici8+PHN1Yj48ZW0+KFByb2R1Y2VyIzE0KTwvZW0+PC9zdWI+Iik6Ojpwcm9kdWNlckNscwpQcm9kdWNlcl8xNSgiY29udjBfU2xpY2VfM180PGJyLz48c3ViPjxlbT4oUHJvZHVjZXIjMTUpPC9lbT48L3N1Yj4iKTo6OnByb2R1Y2VyQ2xzCkNvbmNhdF8wLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifEJhdGNoTm9ybTJEXzAKTGVha3lSZUxVXzAtLT58IjAgWzQsIDMsIDY2LCA2Nl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4wInxTbGljZV8wCkxlYWt5UmVMVV8wLS0+fCIwIFs0LCAzLCA2NiwgNjZdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8U2xpY2VfMQpMZWFreVJlTFVfMC0tPnwiMCBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifFNsaWNlXzIKTGVha3lSZUxVXzAtLT58IjAgWzQsIDMsIDY2LCA2Nl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4wInxTbGljZV8zClByb2R1Y2VyXzE4LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxCYXRjaE5vcm0yRF8wCkJhdGNoTm9ybTJEXzAtLT58IjAgWzQsIDMyLCA2NCwgNjRdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MCJ8UmVMVV8wClByb2R1Y2VyXzE5LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzIwLS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4zInxCYXRjaE5vcm0yRF8wClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMApQcm9kdWNlcl8xNi0tPnwiMCBbMzIsIDMsIDMsIDNdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MSJ8Q29udjJEXzEKUHJvZHVjZXJfMTYtLT58IjAgWzMyLCAzLCAzLCAzXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjEifENvbnYyRF8yClByb2R1Y2VyXzE2LS0+fCIwIFszMiwgMywgMywgM10gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4xInxDb252MkRfMwpQcm9kdWNlcl8yMS0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+NCJ8QmF0Y2hOb3JtMkRfMApQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzAKUHJvZHVjZXJfMTctLT58IjAgWzMyXSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjIifENvbnYyRF8xClByb2R1Y2VyXzE3LS0+fCIwIFszMl0gRmxvYXQzMjxici8+JmRhcnI7PGJyLz4yInxDb252MkRfMgpQcm9kdWNlcl8xNy0tPnwiMCBbMzJdIEZsb2F0MzI8YnIvPiZkYXJyOzxici8+MiJ8Q29udjJEXzMKQ29udjJEXzAtLT58IjA8YnIvPiZkYXJyOzxici8+MCJ8Q29uY2F0XzAKU2xpY2VfMC0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMApQcm9kdWNlcl8wLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8wClByb2R1Y2VyXzEtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzAKUHJvZHVjZXJfMi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8wClByb2R1Y2VyXzMtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzAKQ29udjJEXzEtLT58IjA8YnIvPiZkYXJyOzxici8+MSJ8Q29uY2F0XzAKU2xpY2VfMS0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMQpQcm9kdWNlcl80LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8xClByb2R1Y2VyXzUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzEKUHJvZHVjZXJfNi0tPnwiMCBbNF0gSW50ODxici8+JmRhcnI7PGJyLz4zInxTbGljZV8xClByb2R1Y2VyXzctLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzEKQ29udjJEXzItLT58IjA8YnIvPiZkYXJyOzxici8+MiJ8Q29uY2F0XzAKU2xpY2VfMi0tPnwiMDxici8+JmRhcnI7PGJyLz4wInxDb252MkRfMgpQcm9kdWNlcl84LS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8yClByb2R1Y2VyXzktLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjIifFNsaWNlXzIKUHJvZHVjZXJfMTAtLT58IjAgWzRdIEludDg8YnIvPiZkYXJyOzxici8+MyJ8U2xpY2VfMgpQcm9kdWNlcl8xMS0tPnwiMCBbNF0gSW50NjQ8YnIvPiZkYXJyOzxici8+NCJ8U2xpY2VfMgpDb252MkRfMy0tPnwiMDxici8+JmRhcnI7PGJyLz4zInxDb25jYXRfMApTbGljZV8zLS0+fCIwPGJyLz4mZGFycjs8YnIvPjAifENvbnYyRF8zClByb2R1Y2VyXzEyLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4xInxTbGljZV8zClByb2R1Y2VyXzEzLS0+fCIwIFs0XSBJbnQ2NDxici8+JmRhcnI7PGJyLz4yInxTbGljZV8zClByb2R1Y2VyXzE0LS0+fCIwIFs0XSBJbnQ4PGJyLz4mZGFycjs8YnIvPjMifFNsaWNlXzMKUHJvZHVjZXJfMTUtLT58IjAgWzRdIEludDY0PGJyLz4mZGFycjs8YnIvPjQifFNsaWNlXzMKaW5wdXQwKChpbiMwKSk6OjppbnB1dENscy0tLT58IiBbNCwgMywgNjYsIDY2XSBGbG9hdDMyPGJyLz4mZGFycjs8YnIvPjAifExlYWt5UmVMVV8wClJlTFVfMC0tLT58IjAgWzQsIDMyLCA2NCwgNjRdIEZsb2F0MzI8YnIvPiZkYXJyOyJ8b3V0cHV0MCgob3V0IzApKTo6Om91dHB1dENscwpjbGFzc0RlZiBpbnB1dENscyBmaWxsOiNhZmEKY2xhc3NEZWYgb3V0cHV0Q2xzIGZpbGw6I2ZmYQpjbGFzc0RlZiBleHRlcm5hbENscyBmaWxsOiNjY2MKY2xhc3NEZWYgcHJvZHVjZXJDbHMgZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHMgZmlsbDojZjlmOWZmLHN0cm9rZS13aWR0aDoxcHgsc3Ryb2tlLWRhc2hhcnJheTogNSA1CmNsYXNzRGVmIG1ldGFDbHMgc3Ryb2tlLXdpZHRoOjVweApjbGFzc0RlZiByb290Q2xzIHN0cm9rZTojZjAwCmNsYXNzRGVmIHByb2R1Y2VyQ2xzX3Jvb3RDbHMgc3Ryb2tlOiNmMDAsZmlsbDojY2NmCmNsYXNzRGVmIGdlbmVyaWNDbHNfcm9vdENscyBzdHJva2U6I2YwMCxmaWxsOiNmOWY5ZmYsc3Ryb2tlLXdpZHRoOjFweCxzdHJva2UtZGFzaGFycmF5OiA1IDUKY2xhc3NEZWYgbWV0YUNsc19yb290Q2xzIHN0cm9rZTojZjAwLHN0cm9rZS13aWR0aDo1cHgKCg==\"/>" ], "text/plain": [ "<IPython.core.display.Image object>" @@ -348,10 +348,10 @@ "execution_count": 12, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.578864Z", - "iopub.status.busy": "2025-05-11T15:22:26.578788Z", - "iopub.status.idle": "2025-05-11T15:22:26.584117Z", - "shell.execute_reply": "2025-05-11T15:22:26.583910Z" + "iopub.execute_input": "2025-05-19T10:06:14.099260Z", + "iopub.status.busy": "2025-05-19T10:06:14.099162Z", + "iopub.status.idle": "2025-05-19T10:06:14.104690Z", + "shell.execute_reply": "2025-05-19T10:06:14.104421Z" } }, "outputs": [], @@ -367,10 +367,10 @@ "execution_count": 13, "metadata": { "execution": { - "iopub.execute_input": "2025-05-11T15:22:26.584936Z", - "iopub.status.busy": "2025-05-11T15:22:26.584848Z", - "iopub.status.idle": "2025-05-11T15:22:26.586908Z", - "shell.execute_reply": "2025-05-11T15:22:26.586716Z" + "iopub.execute_input": "2025-05-19T10:06:14.105604Z", + "iopub.status.busy": "2025-05-19T10:06:14.105486Z", + "iopub.status.idle": "2025-05-19T10:06:14.107949Z", + "shell.execute_reply": "2025-05-19T10:06:14.107704Z" } }, "outputs": [ diff --git a/source/UserGuide/architecture.html b/source/UserGuide/architecture.html index 68a110cd15311f08e56f6305f155ba9a96203407..a9f49756e600a1740c8ba32fc90f1c8a258f953e 100644 --- a/source/UserGuide/architecture.html +++ b/source/UserGuide/architecture.html @@ -60,7 +60,7 @@ <link rel="prev" title="User Guide" href="index.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/benchmark.html b/source/UserGuide/benchmark.html index 9bc142355f32524d71f3a8dabcbe33163c41f8f5..3034863a3c1c8fddc5743f780ced4499da439503 100644 --- a/source/UserGuide/benchmark.html +++ b/source/UserGuide/benchmark.html @@ -60,7 +60,7 @@ <link rel="prev" title="Learn model" href="learnModel.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/data.html b/source/UserGuide/data.html index 889f69c4bef76149902f83189a5a478d136e4e02..9f5b966e3a3e97c82b32f4b489a85178b90d5a4e 100644 --- a/source/UserGuide/data.html +++ b/source/UserGuide/data.html @@ -60,7 +60,7 @@ <link rel="prev" title="Framework architecture" href="architecture.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/ensureRobustness.html b/source/UserGuide/ensureRobustness.html index 01187a4124fa1db7afac55b4dd8b2aaa68295a86..be744eef92a7a43f4fb650e4b7ffa96fae39f017 100644 --- a/source/UserGuide/ensureRobustness.html +++ b/source/UserGuide/ensureRobustness.html @@ -60,7 +60,7 @@ <link rel="prev" title="Benchmark neural network model" href="benchmark.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/executeGraph.html b/source/UserGuide/executeGraph.html index f2b79d256962744a3053083c303caee85a0404a1..a23fc67fe066224c96f225318db20c0026261f7a 100644 --- a/source/UserGuide/executeGraph.html +++ b/source/UserGuide/executeGraph.html @@ -60,7 +60,7 @@ <link rel="prev" title="Static analysis" href="staticAnalysis.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/export.html b/source/UserGuide/export.html index f1cb5ab90daf82c05ce39f01b3f5c6709316c6bc..868bcb84a3d74d16739e88d82af43dc3a4359751 100644 --- a/source/UserGuide/export.html +++ b/source/UserGuide/export.html @@ -60,7 +60,7 @@ <link rel="prev" title="Optimize graph" href="optimizeGraph.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/index.html b/source/UserGuide/index.html index 73b22ef38240421e376cbb2c0594cfb064a2acf2..2a21fe48d7a7f05b63caa4d06d4ab42bcbc2a6a2 100644 --- a/source/UserGuide/index.html +++ b/source/UserGuide/index.html @@ -60,7 +60,7 @@ <link rel="prev" title="Quick Start" href="../GetStarted/quickStart.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/interoperability.html b/source/UserGuide/interoperability.html index 5b2964298ce5202448890368623ad195e9609135..59871c50b45361e3480f1931006e5cb9d904538a 100644 --- a/source/UserGuide/interoperability.html +++ b/source/UserGuide/interoperability.html @@ -60,7 +60,7 @@ <link rel="prev" title="Load and store model" href="loadStoreModel.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/learnEdge.html b/source/UserGuide/learnEdge.html index 0e35ef94a46fee406e82cc28d18e75e0c89a79b9..afc17fab22f6759cac93e742aa9f099c2959f3c7 100644 --- a/source/UserGuide/learnEdge.html +++ b/source/UserGuide/learnEdge.html @@ -60,7 +60,7 @@ <link rel="prev" title="Perform an export" href="export.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/learnModel.html b/source/UserGuide/learnModel.html index e8c271d3d2376dbd074a68f0bc86d3074ba30122..ef74bdd206229bb88a8a5818afb984e362872bf6 100644 --- a/source/UserGuide/learnModel.html +++ b/source/UserGuide/learnModel.html @@ -60,7 +60,7 @@ <link rel="prev" title="Runtime graph execution" href="executeGraph.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/loadStoreModel.html b/source/UserGuide/loadStoreModel.html index c71c6771cb7b45ff8addf03711695305aa80fd27..4b904f425b6b680e965e60d45f48920156d7d6db 100644 --- a/source/UserGuide/loadStoreModel.html +++ b/source/UserGuide/loadStoreModel.html @@ -60,7 +60,7 @@ <link rel="prev" title="Computational graph" href="modelGraph.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/modelGraph.html b/source/UserGuide/modelGraph.html index 92406cc7294f1f30bb6ee8f8b2272be3b90f857d..f0bbc37549902bad24a671fe19170d3c204b5886 100644 --- a/source/UserGuide/modelGraph.html +++ b/source/UserGuide/modelGraph.html @@ -60,7 +60,7 @@ <link rel="prev" title="Data" href="data.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/optimizeGraph.html b/source/UserGuide/optimizeGraph.html index 2f142833510e4787421b68b0f9a9e87a87a986d6..a0aa6ce46e17e423510edb3eadef508a99523f2e 100644 --- a/source/UserGuide/optimizeGraph.html +++ b/source/UserGuide/optimizeGraph.html @@ -68,7 +68,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="prev" title="Ensure robustness" href="ensureRobustness.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/staticAnalysis.html b/source/UserGuide/staticAnalysis.html index 99715f005fb55f19150b36a7b593ebe60c194dfe..fbcbadcefe884ad06da56f64557ac270ff72fef5 100644 --- a/source/UserGuide/staticAnalysis.html +++ b/source/UserGuide/staticAnalysis.html @@ -60,7 +60,7 @@ <link rel="prev" title="Transform graph" href="transformGraph.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head> diff --git a/source/UserGuide/transformGraph.html b/source/UserGuide/transformGraph.html index a7c2fdb8819216bb8595d96595cdd01866e12e1f..bfcfa6b79b10a9b353ce8d6bec11a4d22a9e4320 100644 --- a/source/UserGuide/transformGraph.html +++ b/source/UserGuide/transformGraph.html @@ -68,7 +68,7 @@ window.addEventListener("load", () => mermaid.run()); <link rel="prev" title="Plateform interoperability" href="interoperability.html" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="docsearch:language" content="en"/> - <meta name="docsearch:version" content="0.6.0" /> + <meta name="docsearch:version" content="0.6.1" /> </head>