百度飞桨第6课|教你5种简单高效的部署与推理(3)
收藏
PaddleHub简介
飞桨生态下的预训练模型管理工具
PaddleHub便捷地获取飞桨生态下的预训练模型,结合Fine-tune API 快速完成迁移学习到应用部署的全流程工作
Hub 模型转换
hub 模型转换前期→paddlepaddle 2.模型训练 + 训练结果保存为.pdparams的参数字典
1.导入库
import paddlehub as hub
from paddlehub.module.module import moduleinfo#装饰器,模型基本信息
from paddlehub.module.module import runnable #命令行推理 cmd
from paddlehub.module.module import serving #模型部署
from io import BytesIO #图片转换base64编码发送给服务器
import argparse#解析命令行参数
import json #传送数据格式
@moduleinfo(
name="mnist_predict",
version="1.0.0",
summary="This is a PaddleHub Module. Just for test.",
author="7hinc",
author_email="",
type="cv/my_mnist",
)
2.定义类
class MnistPredict:
def __init__(self):
#命令行调用
self.parser = argparse.ArgumentParser(
description="Run the mnist_predict module.",
prog='hub run mnist_predict', usage='%(prog)s’,
add_help=True)
self.parser.add_argument(
'--input_img’,
type=str,
default=None,
help="img to predict")
def mnist_predict(self, img_path):
print('forward’)
model.eval()
tensor_img = load_image(img_path)
paddle.disable_static()
result = model(paddle.to_tensor(tensor_img))
return result.numpy().astype('int32')
3.装饰器
@runnable
def runnable(self, argvs): #命令行推理
print('runnable’)
args = self.parser.parse_args(argvs)
return self.mnist_predict(args.input_img)
@serving
def serving(self, img_b64): #服务部署
print('serving') model.eval()
img_b = base64.b64decode(img_b64)
tensor_img = load_image(BytesIO(img_b))
paddle.disable_static()
result = model(paddle.to_tensor(tensor_img))
# 应该返回JSON格式数据
# 从numpy读出的数据格式是 numpy.int32
res = {
'res': int(result.numpy().astype('int32')[0][0]) }
return json.dumps(res)
Hub模型安装
使用paddlehub现成模型进行测试
pip install paddlehub paddlepaddle #paddlehub依赖paddlepaddle
hub install senta_bilstm #安装senta_bilstm(情感分析)
服务部署
开启模型服务
配置好服务端,在客户端通过POST请求获取预测结果
import requests
import json
text = [“Paddle开发者各个都是人才,说话又好听,我超喜欢这里的"]
data = {"texts": text, "batch_size": 1}
url = “127.0.0.1/predict/senta_bilstm"
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
内网穿透-端口映射
小程序开发
1.样式:ajax、表单
2.逻辑
在表单提交中绑定方法,在JS中实现逻辑功能。
0
收藏
请登录后评论