Paddle Lite是什么,快速上手Python推理,pdmodel使用

简介: “Paddle Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。”

Paddle Lite是什么



“Paddle Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。”


ResNet50 模型是什么



设置参数命令


python python_demo.py --model_file ./resnet50/inference.pdmodel --params_file ./resnet50/inference.pdiparams --batch_size 2


Resnet是残差网络(Residual Network)的缩写,该系列网络广泛用于目标分类等领域以及作为计算机视觉任务主干经典神经网络的一部分,典型的网络有resnet50, resnet101等。Resnet网络的证明网络能够向更深(包含更多隐藏层)的方向发展。


AI paddle 模型使用 ResNet50 模型



快速上手Python推理


2. 模型准备


下载 ResNet50 模型后解压,得到 Paddle 推理格式的模型,位于文件夹 ResNet50 下。如需查看模型结构,可参考模型结构可视化文档


wget https://paddle-inference-dist.bj.bcebos.com/Paddle-Inference-Demo/resnet50.tgz
tar zxf resnet50.tgz
# 获得模型目录即文件如下
resnet50/
├── inference.pdmodel
├── inference.pdiparams.info
└── inference.pdiparams


3. 推理代码


将以下代码保存为 python_demo.py 文件:


import argparse
import numpy as np
# 引用 paddle inference 推理库
import paddle.inference as paddle_infer
def main():
    args = parse_args()
    # 创建 config
    config = paddle_infer.Config(args.model_file, args.params_file)
    # 根据 config 创建 predictor
    predictor = paddle_infer.create_predictor(config)
    # 获取输入的名称
    input_names = predictor.get_input_names()
    input_handle = predictor.get_input_handle(input_names[0])
    # 设置输入
    fake_input = np.random.randn(args.batch_size, 3, 318, 318).astype("float32")
    input_handle.reshape([args.batch_size, 3, 318, 318])
    input_handle.copy_from_cpu(fake_input)
    # 运行predictor
    predictor.run()
    # 获取输出
    output_names = predictor.get_output_names()
    output_handle = predictor.get_output_handle(output_names[0])
    output_data = output_handle.copy_to_cpu() # numpy.ndarray类型
    print("Output data size is {}".format(output_data.size))
    print("Output data shape is {}".format(output_data.shape))
def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--model_file", type=str, help="model filename")
    parser.add_argument("--params_file", type=str, help="parameter filename")
    parser.add_argument("--batch_size", type=int, default=1, help="batch size")
    return parser.parse_args()
if __name__ == "__main__":
    main()


4. 执行程序


# 参数输入为本章节第2步中下载的 ResNet50 模型
python python_demo.py --model_file ./resnet50/inference.pdmodel --params_file ./resnet50/inference.pdiparams --batch_size 2


成功执行之后,得到的推理输出结果如下:


# 程序输出结果如下
Output data size is 2000
Output data shape is (2, 1000)


快速上手Python推理 — Paddle-Inference documentation


pdmodel使用



Python 应用开发说明


Python 代码调用 Paddle Lite 执行预测库仅需以下五步:


(1) 引入必要的库


from paddlelite.lite import *
import numpy as np


(2) 指定模型文件,创建 predictor


# 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)


(3) 设置模型输入 (下面以全一输入为例)


input_tensor = predictor.get_input(0)
input_tensor.from_numpy(np.ones((1, 3, 224, 224)).astype("float32"))


如果模型有多个输入,每一个模型输入都需要准确设置 shape 和 data。


(4) 执行预测


predictor.run()


(5) 获得预测结果并将预测结果转化为 numpy 数组


output_tensor = predictor.get_output(0)
output_data = output_tensor.numpy()
print(output_data)


详细的 Python API 说明文档位于 Python API 文件夹内。


目录
相关文章
|
6月前
|
存储 计算机视觉 异构计算
使用python&C++对bubbliiiing的yolo系列进行opencv.dnn进行推理部署
使用python&C++对bubbliiiing的yolo系列进行opencv.dnn进行推理部署
85 0
|
4月前
|
机器学习/深度学习 Python
【Python】已解决:ModuleNotFoundError: No module named ‘paddle’
【Python】已解决:ModuleNotFoundError: No module named ‘paddle’
542 1
|
4月前
|
机器学习/深度学习 文字识别 开发者
【Python】已解决:(paddleocr导包报错)ModuleNotFoundError: No module named ‘paddle’
【Python】已解决:(paddleocr导包报错)ModuleNotFoundError: No module named ‘paddle’
364 0
|
6月前
|
数据可视化 Python
Python用 PyMC3 贝叶斯推理案例研究:抛硬币和保险索赔发生结果可视化
Python用 PyMC3 贝叶斯推理案例研究:抛硬币和保险索赔发生结果可视化
|
11月前
|
人工智能 知识图谱 Python
python实现知识推理,图可达,pydatalog,kanren,sympy
python实现知识推理,图可达,pydatalog,kanren,sympy
152 0
|
机器学习/深度学习 Python
【Python机器学习】实验06 贝叶斯推理3
【Python机器学习】实验06 贝叶斯推理
73 0
|
数据可视化 Linux 计算机视觉
|
机器学习/深度学习 存储 人工智能
【paddle领航团基础python课程】三岁水课—结营大作业
【paddle领航团基础python课程】三岁水课—结营大作业
154 0
【paddle领航团基础python课程】三岁水课—结营大作业
|
Java C语言 Python
【paddle领航团基础python课程】三岁水课—python基础
大家好,这里是三岁,别的不会,擅长白话,今天就是我们的白话系列,内容就是大家看的迷迷茫茫的python基础,由于python是自学的,我也翻看了很多的教学视频和书籍,也看过部分的文档,写过自己的心得与笔记,那么接下看看,让我们一起来看看内容
131 0
【paddle领航团基础python课程】三岁水课—python基础
|
Python
[Paddle领航团python基础课程大作业一]英文词频的统计任务
[Paddle领航团python基础课程大作业一]英文词频的统计任务
165 0

热门文章

最新文章