百度飞桨第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
收藏
请登录后评论