diff --git a/python/dllib/src/bigdl/dllib/examples/onnx/README.md b/python/dllib/src/bigdl/dllib/examples/onnx/README.md new file mode 100644 index 00000000000..1dc94bbef1c --- /dev/null +++ b/python/dllib/src/bigdl/dllib/examples/onnx/README.md @@ -0,0 +1,46 @@ +# ONNX ResNet-50 Model Loading in BigDL + + +## Download model file + * [Download model](https://s3.amazonaws.com/download.onnx/models/opset_9/resnet50.tar.gz) + * Uncompress the file + ``` + tar -zxvf resnet50.tar.gz + + . + ├── model.onnx + ├── test_data_set_0 + ├── test_data_set_1 + └── .... + ``` + +## How to run this example: + * Import library dependencies +``` +import numpy as np +from bigdl.contrib.onnx import load +``` + + * Set target ONNX ResNet-50 model path + ``` + restnet_path = "uncompressed/file/path/model.onnx" + ``` + + * Load ONNX ResNet-50 model into BigDL + ``` + restnet = load(restnet_path) + ``` + + * Create a sample tensor and pass it through loaded BigDL model + ``` + restnet_tensor = np.random.random([10, 3, 224, 224]) + restnet_out = restnet.forward(restnet_tensor) + ``` + + +## Known issues: + * ONNX feature only has Python API in BigDL. + * Loaded ONNX model is limited for inference. + * Most of operators defined in ONNX are not being supported by BigDL for now. + * Missing feature of exporting BigDL model into ONNX format. + \ No newline at end of file diff --git a/python/dllib/src/bigdl/dllib/examples/onnx/__init__.py b/python/dllib/src/bigdl/dllib/examples/onnx/__init__.py new file mode 100644 index 00000000000..2151a805423 --- /dev/null +++ b/python/dllib/src/bigdl/dllib/examples/onnx/__init__.py @@ -0,0 +1,15 @@ +# +# Copyright 2016 The BigDL Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# diff --git a/python/dllib/src/bigdl/dllib/examples/onnx/load_onnx_resnet.py b/python/dllib/src/bigdl/dllib/examples/onnx/load_onnx_resnet.py new file mode 100644 index 00000000000..d4c2bfc8371 --- /dev/null +++ b/python/dllib/src/bigdl/dllib/examples/onnx/load_onnx_resnet.py @@ -0,0 +1,30 @@ +# +# Copyright 2016 The BigDL Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import numpy as np +from bigdl.contrib.onnx import load + + +def load_onnx_resnet(): + restnet_path = "./resnet-50.onnx" + restnet_tensor = np.random.random([10, 3, 224, 224]) + restnet = load(restnet_path) + restnet_out = restnet.forward(restnet_tensor) + return restnet_out + + +if __name__ == "__main__": + load_onnx_resnet()