blob: 39e2194e37a2d1fcb5a51f46dde4ca5fb408a833 [file] [log] [blame]
.. DO NOT EDIT. THIS FILE WAS AUTOMATICALLY GENERATED BY
.. TVM'S MONKEY-PATCHED VERSION OF SPHINX-GALLERY. TO MAKE
.. CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "how_to/compile_models/from_paddle.py"
.. only:: html
.. note::
:class: sphx-glr-download-link-note
This tutorial can be used interactively with Google Colab! You can also click
:ref:`here <sphx_glr_download_how_to_compile_models_from_paddle.py>` to run the Jupyter notebook locally.
.. image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg
:align: center
:target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/a608d8b69371e9bc149dd89f6db2c38e/from_paddle.ipynb
:width: 300px
.. rst-class:: sphx-glr-example-title
.. _sphx_glr_how_to_compile_models_from_paddle.py:
Compile PaddlePaddle Models
===========================
**Author**: `Ziyuan Ma <https://github.com/ZiyuanMa/>`_
This article is an introductory tutorial to deploy PaddlePaddle models with Relay.
To begin, we'll install PaddlePaddle>=2.1.3:
.. code-block:: bash
%%shell
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
For more details, refer to the official install instructions at:
https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html
.. GENERATED FROM PYTHON SOURCE LINES 33-41
.. code-block:: default
import tarfile
import paddle
import numpy as np
import tvm
from tvm import relay
from tvm.contrib.download import download_testdata
.. GENERATED FROM PYTHON SOURCE LINES 42-45
Load pretrained ResNet50 model
---------------------------------------------
We load a pretrained ResNet50 provided by PaddlePaddle.
.. GENERATED FROM PYTHON SOURCE LINES 45-55
.. code-block:: default
url = "https://bj.bcebos.com/x2paddle/models/paddle_resnet50.tar"
model_path = download_testdata(url, "paddle_resnet50.tar", module="model")
with tarfile.open(model_path) as tar:
names = tar.getnames()
for name in names:
tar.extract(name, "./")
model = paddle.jit.load("./paddle_resnet50/model")
.. GENERATED FROM PYTHON SOURCE LINES 56-59
Load a test image
---------------------------------------------
A single cat dominates the examples!
.. GENERATED FROM PYTHON SOURCE LINES 59-80
.. code-block:: default
from PIL import Image
import paddle.vision.transforms as T
transforms = T.Compose(
[
T.Resize((256, 256)),
T.CenterCrop(224),
T.ToTensor(),
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
]
)
img_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true"
img_path = download_testdata(img_url, "cat.png", module="data")
img = Image.open(img_path).resize((224, 224))
img = transforms(img)
img = np.expand_dims(img, axis=0)
.. GENERATED FROM PYTHON SOURCE LINES 81-83
Compile the model with relay
---------------------------------------------
.. GENERATED FROM PYTHON SOURCE LINES 83-93
.. code-block:: default
target = "llvm"
shape_dict = {"inputs": img.shape}
mod, params = relay.frontend.from_paddle(model, shape_dict)
with tvm.transform.PassContext(opt_level=3):
executor = relay.build_module.create_executor(
"graph", mod, tvm.cpu(0), target, params
).evaluate()
.. GENERATED FROM PYTHON SOURCE LINES 94-96
Execute on TVM
---------------------------------------------
.. GENERATED FROM PYTHON SOURCE LINES 96-99
.. code-block:: default
dtype = "float32"
tvm_output = executor(tvm.nd.array(img.astype(dtype))).numpy()
.. GENERATED FROM PYTHON SOURCE LINES 100-103
Look up synset name
---------------------------------------------
Look up prediction top 1 index in 1000 class synset.
.. GENERATED FROM PYTHON SOURCE LINES 103-119
.. code-block:: default
synset_url = "".join(
[
"https://gist.githubusercontent.com/zhreshold/",
"4d0b62f3d01426887599d4f7ede23ee5/raw/",
"596b27d23537e5a1b5751d2b0481ef172f58b539/",
"imagenet1000_clsid_to_human.txt",
]
)
synset_name = "imagenet1000_clsid_to_human.txt"
synset_path = download_testdata(synset_url, synset_name, module="data")
with open(synset_path) as f:
synset = f.readlines()
top1 = np.argmax(tvm_output[0])
print(f"TVM prediction top-1 id: {top1}, class name: {synset[top1]}")
.. rst-class:: sphx-glr-script-out
.. code-block:: none
TVM prediction top-1 id: 282, class name: 282: 'tiger cat',
.. rst-class:: sphx-glr-timing
**Total running time of the script:** ( 1 minutes 10.711 seconds)
.. _sphx_glr_download_how_to_compile_models_from_paddle.py:
.. only:: html
.. container:: sphx-glr-footer sphx-glr-footer-example
.. container:: sphx-glr-download sphx-glr-download-python
:download:`Download Python source code: from_paddle.py <from_paddle.py>`
.. container:: sphx-glr-download sphx-glr-download-jupyter
:download:`Download Jupyter notebook: from_paddle.ipynb <from_paddle.ipynb>`
.. only:: html
.. rst-class:: sphx-glr-signature
`Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_