diff --git a/docs/quick_start/java_demo.md b/docs/quick_start/java_demo.md index dd0058c5766..942eb62819d 100644 --- a/docs/quick_start/java_demo.md +++ b/docs/quick_start/java_demo.md @@ -1,17 +1,88 @@ # Java 完整示例 -本章节包含2部分内容:(1) [Java 示例程序](java_demo.html#id1);(2) [Java 应用开发说明](java_demo.html#id8)。 +## 概述 -## Java 示例程序 +本教程提供了 Paddle Lite 执行推理的示例程序,通过输入、执行推理、打印推理结果的方式,演示了基于 Java API 接口的推理基本流程,用户能够快速了解 Paddle Lite 执行推理相关 API 的使用。 +本教程以 Android Studio 工程为案例,介绍 Java API 推理流程,工程文件夹为[lite/demo/java/android](https://github.com/PaddlePaddle/Paddle-Lite/blob/develop/lite/demo/java/android)。其中和 Java API 相关的代码在[lite/demo/java/android/PaddlePredictor/app/src/main/java/com/baidu/paddle/lite/MainActivity.java](https://github.com/PaddlePaddle/Paddle-Lite/blob/develop/lite/demo/java/android/PaddlePredictor/app/src/main/java/com/baidu/paddle/lite/MainActivity.java)文件中。 -本章节展示的所有Java 示例代码位于 [demo/java](https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/java) 。 + +使用 Paddle Lite 执行推理主要包括以下步骤: + +- 配置 config 信息:创建 MobileConfig ,用于配置模型路径、运行设备环境等相关信息 + +- 模型加载:通过 `setModelFromFile` 接口配置模型路径。 + +- 创建 predictor 对象:通过 `PaddlePredictor.createPaddlePredictor` 接口创建 PaddlePredictor 对象,完成模型解析和环境初始化。 + +- 输入数据:推理之前需要向输入 Tensor 中填充数据。即通过 `predictor.getInput(num)` 接口获取第 `num` 个输入 Tensor ,先做 `resize` 处理,给 Tensor 分配相应的空间;然后通过 `setData` 接口对 Tensor 进行赋值处理。(如果输入数据是图片,则需要进行预处理,再将预处理后的数据赋值给输入 tensor ) + +- 执行推理:使用 predictor 对象的成员函数 `run` 进行模型推理 + +- 输出数据:推理执行结束后,通过 `predictor.getOutput(num)` 接口获取第 `num` 个输出 Tensor。 + +其流程图如下: + + +

+ + +## Java 应用开发说明 + +Java 代码调用 Paddle-Lite 执行预测仅需五步: + +(1) 设置 MobileConfig 信息 + +```java +MobileConfig config = new MobileConfig(); +config.setModelDir(modelPath); +config.setPowerMode(PowerMode.LITE_POWER_HIGH); +config.setThreads(1); +``` + +(2) 指定模型文件,创建 PaddlePredictor + +```java +PaddlePredictor predictor = PaddlePredictor.createPaddlePredictor(config); +``` + +(3) 设置模型输入 (下面以第 i 个输入为 i 为例) + +```java +float[] inputBuffer = new float[10000]; +for (int i = 0; i < 10000; ++i) { + inputBuffer[i] = i; +} +Tensor input = predictor.getInput(0); +input.resize({100, 100}); +input.setData(inputBuffer); +``` + +如果模型有多个输入,每一个模型输入都需要准确设置 shape 和 data。 + +(4) 执行预测 + +```java +predictor.run(); +``` + +(5) 获得预测结果 + +```java +Tensor output = predictor.getOutput(0); +``` +详细的 Java API 说明文档位于[Java API](../api_reference/java_api_doc)。更多 Java 应用预测开发可以参考位于位于[Paddle-Lite-Demo](https://github.com/PaddlePaddle/Paddle-Lite-Demo)的工程示例代码。 + + +## Android Studio 工程 Java 示例程序 + +本章节展示的所有 Android Studio 工程代码位于 [demo/java](https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/java) 。下面将要下载的预测库也已经包含了上述 Android Studio 工程。 ### 1. 环境准备 -要编译和运行Android Java 示例程序,你需要准备: +要编译和运行 Android Java 示例程序,你需准备: -1. 一台armv7或armv8架构的安卓手机 -2. 一台装有AndroidStudio的开发机 +1. 一台 armv7 或 armv8 架构的安卓手机 +2. 一台装有 Android Studio 的开发机 ### 2. 下载预编译的预测库 @@ -21,12 +92,12 @@ | Arch |with_extra|arm_stl|with_cv|下载| |:-------:|:-----:|:-----:|:-----:|:-------:| -|armv8|OFF|c++_static|OFF|[v2.8](https://github.com/PaddlePaddle/Paddle-Lite/releases/download/v2.8/inference_lite_lib.android.armv8.gcc.c++_static.tar.gz)| +|armv8|OFF|c++_static|OFF|[v2.9](https://github.com/PaddlePaddle/Paddle-Lite/releases/download/v2.9/inference_lite_lib.android.armv8.gcc.c++_static.tar.gz)| **解压后内容结构如下:** ```shell -inference_lite_lib.android.armv8 Paddle-Lite 预测库 +inference_lite_lib.android.armv8.gcc.c++_static Paddle-Lite 预测库 ├── cxx C++ 预测库 │   ├── include C++ 预测库头文件 │   └── lib C++ 预测库文件 @@ -47,27 +118,29 @@ inference_lite_lib.android.armv8 Paddle-Lite 预测库 #### 自动化脚本方法 -在Java Andriod Demo文件夹下,我们准备了一个脚本`prepare_demo.bash`,输入手机架构参数例如`arm64-v8a`,即可自动打包所有预测部署所需文件。 +在下载下来的预测库的`demo/java/android`文件夹下,为了让您更快上手,我们准备了一个脚本`prepare_demo.bash`,输入手机架构参数例如`arm64-v8a`,即可自动准备好所有预测部署所需的文件。 -``` -cd inference_lite_lib.android.armv8/demo/java/android +```shell +cd inference_lite_lib.android.armv8.gcc.c++_static/demo/java/android bash prepare_demo.bash arm8 ``` -以上命令自动进行了以下三步操作: +以上命令自动进行以下三步操作: -1. 拷贝JNI动态链接库`libpaddle_lite_jni.so`到`PaddlePredictor/app/src/main/jniLibs/arm64-v8a/` -2. 拷贝JAR包`PaddlePredictor.jar` 到 `PaddlePredictor/app/libs/` +1. 拷贝 JNI 动态链接库`libpaddle_lite_jni.so`到`PaddlePredictor/app/src/main/jniLibs/arm64-v8a/` +2. 拷贝 JAR 包`PaddlePredictor.jar` 到 `PaddlePredictor/app/libs/` 3. 自动下载并解压所有模型文件,拷贝到`PaddlePredictor/app/src/main/assets/` **注意:** 目前脚本输入手机架构参数仅支持 `arm7 | arm8 | armeabi-v7a | arm64-v8a`。 #### 手动拷贝方法 -(1) 把Java JNI动态链接库和Java JAR包拷贝进安卓demo程序文件夹下: +如果你不想运行上面的脚本,你可以手动进行下面操作。 + +(1) 把 Java JNI 动态链接库和 Java JAR 包拷贝进安卓 demo 程序文件夹下: ```shell -cd inference_lite_lib.android.armv8/demo/java/android +cd inference_lite_lib.android.armv8.gcc.c++_static/demo/java/android # 请替换<架构文件夹>为手机架构名称,例如 arm64-v8a cp ../../../java/so/libpaddle_lite_jni.so PaddlePredictor/app/src/main/jniLibs/<架构文件夹> cp ../../../java/jar/PaddlePredictor.jar PaddlePredictor/app/libs/ @@ -75,7 +148,7 @@ cp ../../../java/jar/PaddlePredictor.jar PaddlePredictor/app/libs/ (2) 下载模型文件 -下载以下5个模型,并解压缩到 `PaddlePredictor/app/src/main/assets` 文件夹中。解压之后,assets文件夹里要包含解压后的五个以`.nb`结尾的模型文件,但不需要保存原压缩`.tar.gz`文件。 +下载以下 5 个模型,并解压缩到 `PaddlePredictor/app/src/main/assets` 文件夹中。解压之后,assets文件夹里要包含解压后的五个以`.nb`结尾的模型文件,但不需要保存原压缩`.tar.gz`文件。 | 模型| 下载地址| | :-- | :-- | @@ -85,15 +158,15 @@ cp ../../../java/jar/PaddlePredictor.jar PaddlePredictor/app/libs/ | mobilenet_v2_relu_opt.nb| http://paddle-inference-dist.bj.bcebos.com/mobilenet_v2_relu_opt.nb.tar.gz | | resnet50_opt.nb| http://paddle-inference-dist.bj.bcebos.com/resnet50_opt.nb.tar.gz | -注意:模型要求为naive buffer格式,您可以通过 [opt工具](../user_guides/model_optimize_tool) 将Paddle模型转为naive buffer存储格式。 +注意:模型要求为 naive buffer 格式,您可以通过 [opt工具](../user_guides/model_optimize_tool) 将 Paddle 模型转为naive buffer存储格式。 ### 4. 运行预测示例程序 -1. 用AndroidStudio打开`inference_lite_lib.android.armv8/demo/java/android/PaddlePredictor`文件夹(需要联网),打开后工程会自动build完成。 -2. 设置手机:手机USB连接电脑,打开`设置 -> 开发者模式 -> USB调试 -> 允许(授权)当前电脑调试手机`,并确认AndroidStudio可以识别接入的手机设备。 -3. 按下AndroidStudio的Run按钮,AndroidStudio会自动编译APP并安装到手机。在手机上打开安装成功的APP,大概会等10秒,然后看到类似以下输出: +1. 用 Android Studio 打开`inference_lite_lib.android.armv8.gcc.c++_static/demo/java/android/PaddlePredictor`文件夹(需联网),打开后工程会自动 build 完成。 +2. 设置手机:手机 USB 连接电脑,打开`设置 -> 开发者模式 -> USB调试 -> 允许(授权)当前电脑调试手机`,并确认 Android Studio 可识别接入的手机设备。 +3. 按下 Android Studio 的 Run 按钮,Android Studio 会自动编译 APP 并安装到手机。在手机上打开安装成功的 APP ,大概会等 10 秒,然后看到类似以下输出: -``` +```shell lite_naive_model output: 50.213173, -28.872887 expected: 50.2132, -28.8729 @@ -110,51 +183,6 @@ mobilenet_v2 test:true time: xxx ms ``` -该 demo 程序跑我们的 5 个模型,第一个模型结果将真正的头两个数字输出,并在第二行附上期望的正确值。你应该要看到他们的误差小于0.001。后面四个模型如果你看到 `test:true` 字样,说明模型输出通过了我们在 demo 程序里对其输出的测试。time 代表该测试花费的时间。 - -**注意:** 在这一步中,如果遇到Andriod Studio编译/安装失败等问题,请参考[Andriod示例](../demo_guides/android_app_demo.html#android-demo)中部署方法章节的详细步骤和注意事项。 - -## Java 应用开发说明 - -Java代码调用Paddle-Lite执行预测库仅需以下五步: - -(1) 设置config信息 - -```java -MobileConfig config = new MobileConfig(); -config.setModelDir(modelPath); -config.setPowerMode(PowerMode.LITE_POWER_HIGH); -config.setThreads(1); -``` - -(2) 创建predictor - -```java -PaddlePredictor predictor = PaddlePredictor.createPaddlePredictor(config); -``` - -(3) 设置模型输入 (下面以全一输入为例) - -```java -float[] inputBuffer = new float[10000]; -for (int i = 0; i < 10000; ++i) { - inputBuffer[i] = i; -} -Tensor input = predictor.getInput(0); -input.resize({100, 100}); -input.setData(inputBuffer); -``` - -(4) 执行预测 - -```java -predictor.run(); -``` - -(5) 获得预测结果 - -```java -Tensor output = predictor.getOutput(0); -``` +该 demo 程序跑 5 个模型,第一个模型结果将真正的头两个数字输出,并在第二行附上期望的正确值。你应该要看到他们的误差小于 0.001 。后面四个模型如果你看到 `test:true` 字样,说明模型输出通过了我们在 demo 程序里对其输出的测试。time 代表该测试花费的时间。 -详细的Java API说明文档位于[Java API](../api_reference/java_api_doc)。更多Java应用预测开发可以参考位于位于[Paddle-Lite-Demo](https://github.com/PaddlePaddle/Paddle-Lite-Demo)的工程示例代码。 +**注意:** 在这一步中,如果遇到 Andriod Studio 编译/安装失败等问题,请参考[Andriod示例](../demo_guides/android_app_demo.html#android-demo)中部署方法章节的详细步骤和注意事项。 diff --git a/docs/quick_start/python_demo.md b/docs/quick_start/python_demo.md index 0c64eadc70e..7d61c0bcfdf 100644 --- a/docs/quick_start/python_demo.md +++ b/docs/quick_start/python_demo.md @@ -1,155 +1,187 @@ # Python 完整示例 -Python 支持的平台包括:Windows X86_CPU / macOS X86_CPU / Linux X86_CPU / Linux ARM_CPU (ARM Linux)。 +## 概述 -本章节包含2部分内容:(1) [Python 示例程序](python_demo.html#id1);(2) [Python 应用开发说明](python_demo.html#id6)。 +本教程提供了用 Paddle Lite 执行推理的 Python 示例程序,通过输入、执行推理、打印推理结果的方式,演示了基于 Python API 接口的推理基本流程,用户能够快速了解 Paddle Lite 执行推理相关 API 的使用。本教程以`mobilenetv1_light_api.py`和 `mobilenetv1_full_api.py`为案例,介绍 Python API 推理流程,相关代码放置在[lite/demo/python](https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/python)文件夹中。 -## Python 示例程序 +使用 Paddle Lite 执行推理主要包括以下步骤: -本章节展示的所有Python 示例代码位于 [demo/python](https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/python) 。 +- 创建 config 对象:创建 `` 对象 ,用于配置模型路径、运行设备环境等相关信息 -### 1. 环境准备 +- 模型加载:通过 `config.set_model_from_file` 接口配置模型路径。 -如果是Windows X86_CPU / macOS X86_CPU / Linux X86_CPU 平台,不需要进行特定环境准备。 +- 创建 predictor 对象:通过 `create_paddle_predictor` 接口创建 `` 对象,完成模型解析和环境初始化。 -如果是ARM Linux平台,需要编译PaddleLite,环境配置参考[文档](../source_compile/compile_env),推荐使用docker。 +- 输入数据:推理之前需要向输入 tensor 中填充数据。即通过 `predictor.get_input(num)` 接口获取第 `num` 个输入 tensor , 其类型为·``,调用 tensor 的`from_numpy`方法给其输入数据。 -### 2. 安装python预测库 +- 执行推理:使用 predictor 对象的成员函数 `run` 进行模型推理 -PyPI源目前仅提供Windows X86_CPU / macOS X86_CPU / Linux X86_CPU 平台的pip安装包,执行如下命令。 +- 输出数据:推理执行结束后,通过 `predictor.get_output(num)` 接口获取第 `num` 个输出 tensor。 -```shell -# 当前最新版本是 2.8 -python -m pip install paddlelite==2.8 -``` +其流程图如下: -如果您需要使用AMRLinux平台的Python预测功能,请参考[源码编译(ARMLinux)](../source_compile/compile_linux)编译、安装PaddleLite的python包。 +

-### 3. 准备预测部署模型 +## Python 应用开发说明 -(1) 模型下载:下载[mobilenet_v1](http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz)模型后解压,得到Paddle非combined形式的模型,位于文件夹 `mobilenet_v1` 下。可通过模型可视化工具[Netron](https://lutzroeder.github.io/netron/)打开文件夹下的`__model__`文件,查看模型结构。 +Python代码调用 Paddle-Lite 执行预测库仅需以下五步: +(1) 引入必要的库 -```shell -wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz -tar zxf mobilenet_v1.tar.gz +```py +from paddlelite.lite import * +import numpy as np ``` -(2) 模型转换:Paddle的原生模型需要经过[opt](../user_guides/model_optimize_tool)工具转化为Paddle-Lite可以支持的naive_buffer格式。 +(2) 指定模型文件,创建 predictor -- Linux X86_CPU 平台:通过pip安装paddlelite,即可获得paddle_lite_opt命令工具 +```py +# 1. Set config information +config = MobileConfig() +# 2. Set the path to the model generated by opt tools +config.set_model_from_file(args.model_dir) +# 3. Create predictor by config +predictor = create_paddle_predictor(config) +``` - ```shell - paddle_lite_opt --model_dir=./mobilenet_v1 \ - --optimize_out=mobilenet_v1_opt \ - --optimize_out_type=naive_buffer \ - --valid_targets=x86 - ``` -- MAC X86_CPU 平台: paddle_lite_opt工具使用方式同Linux。 +(3) 设置模型输入 (下面以全一输入为例) -- Windows X86_CPU 平台:windows 暂不支持命令行方式直接运行模型转换器,需要编写python脚本 +```py +input_tensor = predictor.get_input(0) +input_tensor.from_numpy(np.ones((1, 3, 224, 224)).astype("float32")) +``` - ```python - import paddlelite.lite as lite +如果模型有多个输入,每一个模型输入都需要准确设置 shape 和 data。 - a=lite.Opt() - # 非combined形式 - a.set_model_dir("D:\\YOU_MODEL_PATH\\mobilenet_v1") +(4) 执行预测 - # conmbined形式,具体模型和参数名称,请根据实际修改 - # a.set_model_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__model__") - # a.set_param_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__params__") +```py +predictor.run() +``` - a.set_optimize_out("mobilenet_v1_opt") - a.set_valid_places("x86") +(5) 获得预测结果并将预测结果转化为numpy数组 - a.run() - ``` +```py +output_tensor = predictor.get_output(0) +output_data = output_tensor.numpy() +print(output_data) +``` -- ARMLinux 平台:编写python脚本转换模型 +详细的 Python API 说明文档位于[ Python API ](../api_reference) 文件夹内。 - ```python - import paddlelite.lite as lite - a=lite.Opt() - # 非combined形式 - a.set_model_dir("D:\\YOU_MODEL_PATH\\mobilenet_v1") - # conmbined形式,具体模型和参数名称,请根据实际修改 - # a.set_model_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__model__") - # a.set_param_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__params__") +## mobilenetv1_light_api.py 和 mobilenetv1_full_api.py 示例程序 - a.set_optimize_out("mobilenet_v1_opt") - a.set_valid_places("arm") # 设置为arm +Paddle Lite Python 版本支持的平台包括:Windows X86_CPU / macOS X86_CPU / Linux X86_CPU / Linux ARM_CPU (ARM Linux)。 - a.run() - ``` -以上命令执行成功之后将在同级目录生成名为`mobilenet_v1_opt.nb`的优化后模型文件。 +### 1. 环境准备 -### 4. 下载和运行预测示例程序 +如果是Windows X86_CPU / macOS X86_CPU / Linux X86_CPU 平台,不需要进行特定环境准备。 -从[demo/python](https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/python)下载预测示例文件`mobilenetv1_light_api.py`和`mobilenetv1_full_api.py`,并运行Python预测程序。 +如果是ARM Linux平台,需要编译PaddleLite,环境配置参考[文档](../source_compile/compile_env),推荐使用docker。 -```shell -# light api的输入为优化后模型文件mobilenet_v1_opt.nb -python mobilenetv1_light_api.py --model_dir=mobilenet_v1_opt.nb +### 2. 安装python预测库 -# full api的输入为优化千的模型文件夹mobilenet_v1 -python mobilenetv1_full_api.py --model_dir=./mobilenet_v1 +PyPI 源目前仅提供 Windows X86_CPU / macOS X86_CPU / Linux X86_CPU 平台的 pip 安装包,执行如下命令。 -# 运行成功后,将在控制台输出如下内容 -[1L, 1000L] -[0.00019130950386170298, 0.0005920541007071733, 0.00011230241216253489, 6.27333574811928e-05, 0.0001275067188544199, 0.0013214796781539917, 3.138116153422743e-05, 6.52207963867113e-05, 4.780858944286592e-05, 0.0002588215284049511] +```shell +# 当前最新版本是 2.9 +python -m pip install paddlelite==2.9 ``` -## Python 应用开发说明 +如果您需要使用 AMRLinux 平台的 Python 预测功能,请参考[源码编译(ARMLinux)](../source_compile/compile_linux)编译、安装PaddleLite 的 python 包。 + +### 3. 准备预测部署模型 -Python代码调用Paddle-Lite执行预测库仅需以下六步: +(1) 模型下载:下载[mobilenet_v1](http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz)模型后解压,得到 Paddle 非 combined 形式的模型,位于文件夹 `mobilenet_v1` 下。可通过模型可视化工具[Netron](https://lutzroeder.github.io/netron/)打开文件夹下的`__model__`文件,查看模型结构。 -(1) 设置config信息 -```python -from paddlelite.lite import * -import numpy as np -from PIL import Image -config = MobileConfig() -config.set_model_from_file("./mobilenet_v1_opt.nb") +```shell +wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz +tar zxf mobilenet_v1.tar.gz ``` -(2) 创建predictor +(2) 模型转换:Paddle 原生模型需经[opt](../user_guides/model_optimize_tool)工具转化为Paddle-Lite可以支持的naive_buffer格式。 -```python -predictor = create_paddle_predictor(config) +- Linux X86_CPU 平台:通过pip安装paddlelite的同时,就已经获得 paddle_lite_opt 可执行文件了 + +```shell +paddle_lite_opt --model_dir=./mobilenet_v1 \ + --optimize_out=mobilenet_v1_opt \ + --optimize_out_type=naive_buffer \ + --valid_targets=x86 ``` +- MAC X86_CPU 平台: paddle_lite_opt工具使用方式同Linux。 -(3) 从图片读入数据 +- Windows X86_CPU 平台:暂不支持命令行方式直接运行模型转换器,需编写 python 脚本 ```python -image = Image.open('./example.jpg') -# resize the inputed image into shape (224, 224) -resized_image = image.resize((224, 224), Image.BILINEAR) -# put it from HWC to NCHW format -image_data = np.array(resized_image).transpose(2, 0, 1).reshape(1, 3, 224, 224) -``` +import paddlelite.lite as lite -(4) 设置输入数据 +a=lite.Opt() +# 非combined形式 +a.set_model_dir("D:\\YOU_MODEL_PATH\\mobilenet_v1") -```python -input_tensor = predictor.get_input(0) -input_tensor.from_numpy(image_data) +# conmbined形式,具体模型和参数名称,请根据实际修改 +# a.set_model_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__model__") +# a.set_param_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__params__") + +a.set_optimize_out("mobilenet_v1_opt") +a.set_valid_places("x86") + +a.run() ``` -(5) 执行预测 +- ARMLinux 平台:编写python脚本转换模型 + ```python -predictor.run() +import paddlelite.lite as lite + +a=lite.Opt() +# 非combined形式 +a.set_model_dir("D:\\YOU_MODEL_PATH\\mobilenet_v1") + +# conmbined形式,具体模型和参数名称,请根据实际修改 +# a.set_model_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__model__") +# a.set_param_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__params__") + +a.set_optimize_out("mobilenet_v1_opt") +a.set_valid_places("x86") # 设置为x86 + +a.run() ``` -(6) 得到输出数据 -```python -output_tensor = predictor.get_output(0) -print(output_tensor.shape()) -print(output_tensor.numpy()) +以上命令执行成功之后将在同级目录生成名为`mobilenet_v1_opt.nb`的优化后模型文件。 + +### 4. 下载和运行预测示例程序 + +从[demo/python](https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/python)下载预测示例文件`mobilenetv1_light_api.py`和`mobilenetv1_full_api.py`,并运行此程序。 + +```py +# light api的输入为优化后模型文件mobilenet_v1_opt.nb +python mobilenetv1_light_api.py --model_dir=mobilenet_v1_opt.nb +# 运行成功后,将在控制台输出类似如下内容 +[[1.91309489e-04 5.92054741e-04 1.12302143e-04 6.27333211e-05 + 1.27506457e-04 1.32147770e-03 3.13812016e-05 6.52206727e-05 + 4.78084912e-05 2.58819520e-04 1.53155532e-03 1.12548303e-04 + ... + ... +]] ``` -详细的Python API说明文档位于[Python API](../api_reference/python_api_doc)。更多Python应用预测开发可以参考位于位于[Paddle-Lite-Demo](https://github.com/PaddlePaddle/Paddle-Lite-Demo)的工程示例代码。 +```py +# full api的输入为未使用paddle_lite_opt工具优化前的模型文件夹mobilenet_v1 +python mobilenetv1_full_api.py --model_dir=./mobilenet_v1 + +# 运行成功后,将在控制台输出类似如下内容 +Loading topology data from ./mobilenet_v1/__model__ +Loading non-combined params data from ./mobilenet_v1 +1. Model is successfully loaded! +[[1.91309489e-04 5.92054741e-04 1.12302143e-04 6.27333211e-05 + 1.27506457e-04 1.32147770e-03 3.13812016e-05 6.52206727e-05 + ... + ... +]] +```