在上一篇中,本人介绍了如何使用Web服务部署深度学习模型,见知乎链接:刘聪NLP:Web服务部署深度学习模型。

有同学提问:“是否可以在web上有输入数据的接口,通过深度学习模型的计算数据的结果,将输出结果在web端显示。”

本人回答:当然可以了,现在我就来带着大家实现这一需求。完成之后,我们就变成全栈工程师了,哈哈哈哈~~~~

如果在web上有输入数据的接口,那面我们应该有一个页面,来输入数据;我们依然以文本分类为例(一法通,则万法通),那么就需要先写一个html页面

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><title>Classification</title></head><body><div align="center" style="margin-top:80px"><img src="{{url_for('static', filename='lcong.jpg') }}" alt="lcong" height = "200px" /></div><div align="center" style="margin-top:10px"><form method="POST" name = "form1"><input type="text" name = "News" placeholder = "Your news here" value="{{ var }}" style="width:400px; height:200px;"/><input type="submit" value = "Get Answer" /><input type="text" name = "result" placeholder = "Your label appears here" readonly="readonly" value="{{ result }}" style="width:400px; height:40px;"/></form></div></body>
</html>

由于,本人不是很精通web界面的编写,因此就随便写了一个,有点丑(不喜勿喷),就将就看吧,主要还是介绍思路及流程。如果有精通之人,可以自行修改,修改成自己喜欢的样子。页面如下图:

左边文本框,输入新闻文本;点击“Get Label”按钮,可以获得该新闻所属的类别;最终显示在右边文本框中。

(划重点)接下来,我们开始使用web服务挂起模型。通俗地讲,其实本人就是通过flask框架,搭建了一个web服务,来获取外部的输入;并且使用挂载的模型进行预测;最后将预测结果通过web服务传出。

from gevent import monkey
monkey.patch_all()
from flask import Flask, request, render_template
from gevent import wsgi
import json
from ClassificationModel import ClassificationModeldef start_sever(http_id, port, gpu_id, vocab_file, gpu_memory_fraction, model_path, max_seq_length):model = ClassificationModel()model.load_model(gpu_id, vocab_file, gpu_memory_fraction, model_path, max_seq_length)print("load model ending!")app = Flask(__name__)@app.route('/')def index():return "This is News Classification Model Server"@app.route('/news-classification-from-page', methods=["GET", 'POST'])def response_request_from_page():if request.method == 'POST':text = request.form.get('News')label, label_name = model.predict(text)return render_template("index.html", result=label_name, var1=text)return render_template("index.html")server = wsgi.WSGIServer((str(http_id), port), app)server.serve_forever()

其中,http_id为web服务的地址;port为端口号;gpu_id、vocab_file、gpu_memory_fraction、model_path和max_seq_length为加载模型所需要的参数,详细见上一篇文档介绍。

************************************************************************************

最后我们在服务器上输入对应http地址及字段,如图:

接下来,在左边框内输入新闻,点击Get Label按钮,得到结果,如图:

其中,有两个要注意的事项;(1)html文件需要放入templates文件夹下;(2)html中所显示的图片要放到static文件夹下。

以上就是通过web服务部署深度学习模型的全部内容,喜欢的同学还请多多点赞~~~~~


广告时间,推荐几篇本人之前写的一些文章:

刘聪NLP:短文本相似度算法研究

刘聪NLP:阅读笔记:开放域检索问答(ORQA)

刘聪NLP:Web服务部署深度学习模型

刘聪NLP:NEZHA(哪吒)论文阅读笔记

刘聪NLP:UniLM论文阅读笔记

刘聪NLP:检索系列文章之DeepCT论文笔记

喜欢的同学,可以关注一下专栏,关注一下作者,还请多多点赞~~~~~~

amd 深度学习模型部署_Web服务部署深度学习模型-续集相关推荐

  1. 深度学习模型保存_Web服务部署深度学习模型

    本文的目的是介绍如何使用Web服务快速部署深度学习模型,虽然TF有TFserving可以进行模型部署,但是对于Pytorch无能为力(如果要使用的话需要把torch模型进行转换,有些麻烦):因此,本文 ...

  2. 药盒识别/垃圾分类—高精度AI模型训练及边缘部署分享

    这是AI应用的时代. 工厂:高速照相机拍下传送带上的零部件,机器识别出有缺陷的零件剔除: 农场:拍摄虫体照片,识别害虫名称和数量并能防控虫害,减少农药使用量,发展绿色农业 小区:智能垃圾箱可以基于图像 ...

  3. 机器学习模型太大难部署?这里有 3 个解决方案

    导语:将大量模型部署到生产环境中是有瓶颈的 乐观的人会想,未来机器学习能够完成驾驶汽车.接听电话.预约.回复电子邮件这些人类才能完成的任务.但现实往往很骨感.现代机器学习能有效解决的问题范围仍然非常狭 ...

  4. Centos7.2部署各类服务

    部署FTP服务: 部署Apache服务: 部署mariadb-server服务: 部署基于LAMP框架的Discuz论坛: 部署DNS域名解析服务以及相关配置 部署DHCP服务以及其他服务设置 部署邮 ...

  5. WCF学习之旅—WCF服务的WAS寄宿(十二)

    上接    WCF学习之旅-WCF服务部署到IIS7.5(九) WCF学习之旅-WCF服务部署到应用程序(十) WCF学习之旅-WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...

  6. Windows Server 2019服务器远程桌面服务部署+深度学习环境配置教程

    文章目录 1.安装Windows Server 2019 2.开启WLAN服务 3.固定IP地址 4.开启远程桌面服务 4.1 添加远程桌面服务 4.2 激活服务器 4.3 安装许可证 5.配置远程桌 ...

  7. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  8. 在线部分:werobot服务、主要逻辑服务、句子相关模型服务、BERT中文预训练模型+微调模型(目的:比较两句话text1和text2之间是否有关联)、模型在Flask部署

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...

  9. AI模型工业部署:综述【常用的部署框架:TensorRT、Libtorch】【常见提速方法:模型结构、剪枝、蒸馏、量化训练、稀疏化】【常见部署流程:onnx2trt】【常见服务部署搭配】

    作为深度学习算法工程师,训练模型和部署模型是最基本的要求,每天都在重复着这个工作,但偶尔静下心来想一想,还是有很多事情需要做的: 模型的结构,因为上线业务需要,更趋向于稳定有经验的,而不是探索一些新的 ...

最新文章

  1. 如何在Terminal命令行模式下运行Objective-C
  2. [03] 处理注解:反射
  3. Android后退事件的处理
  4. c语言运行时显示内存不足,请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码...
  5. 安装HikVision(海康威视)网络摄像头
  6. it has a DefiningQuery and no InsertFunction element exists in the ModificationFunctionMapping e...
  7. 学点Webpack吧
  8. php全选按钮怎么写,PHP中的“全选”复选框,其中包含header.php
  9. 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐...
  10. PRML(2)--绪论(下)模型选择、纬度灾难、决策论、信息论
  11. python字典长度可变吗_Python字典dict实现原理
  12. SCWS中文分词,功能函数实例应用
  13. SQL像数组一样处理字符串、分割字符串(标量值函数[用户自定义函数])
  14. Explaining Classifiers using Adversarial Perturbations on the Perceptual Ball论文解读
  15. 没有学历可以学计算机编程吗,学电脑编程要什么学历?
  16. JavaC++题解与拓展——leetcode953.验证外星语【么的新知识】
  17. 《信心——是什么?导致什么?》_司布真
  18. 记录一下使用微信小程序wx-open-launch-weapp组件
  19. 微型计算机基础学的什么,微型计算机操作基础课的教学
  20. PDF板式文档转OFD板式文档

热门文章

  1. MapReduce 源码分析(一)准备阶段
  2. leetcode 978. Longest Turbulent Subarray | 978. 最长湍流子数组(Java)
  3. 【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++
  4. 牛客网_PAT乙级_1029有几个PAT(25)【输入字符串并strlen计算长度】
  5. 使用nodejs构建Docker image最佳实践
  6. 副本放置策略Copysets论文解读及工程实践
  7. 利用计算机或图形计算器在,图形计算器在函数教学中的应用
  8. 双粗虚线中间一条实线_马路中间有一条黄色虚线和一条实线,能超车吗?
  9. python开发工具管理系统_Python之软件管理
  10. 用HTML和CSS实现一个漂亮的个人博客页面!