用Python将Keras深度学习模型部署为Web应用程序的示例分析
用Python将Keras深度学习模型部署为Web应用程序的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
宁河ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
构建一个很棒的机器学习项目是一回事,但归根结底,你希望其他人能够看到你的辛勤工作。当然,你可以将整个项目放在GitHub上,但是怎么让你的祖父母也看到呢?我们想要的是将深度学习模型部署为世界上任何人都可以访问的Web应用程序。
在本文中,我们将看到如何编写一个Web应用程序,该应用程序使用经过训练的Keras递归神经网络,并允许用户生成新的专利文摘。这个项目建立在递归神经网络的基础上,但是了解如何创建RNN是不必要的。
现在我们将其视为黑匣子:我们按一个开始的顺序进行操作,它输出一个全新的专利文摘,可以在浏览器中显示!
传统上,数据科学家会开发模型,而前端工程师则将模型展示给全世界。在这个项目中,我们必须扮演两个角色,并投入到Web开发中(尽管几乎全部使用Python)。
该项目需要将众多主题结合在一起:
Flask:用Python创建一个基本的Web应用程序
Keras:部署训练有素的递归神经网络
使用Jinja模板库创建模板
用于编写网页的HTML和CSS
Flask:http://flask.pocoo.org/
Keras:http://keras.io/
HTML:https://www.w3schools.com/html/
CSS:https://www.w3schools.com/html/html_css.asp
最终结果是一个网络应用程序,该应用程序允许用户使用经过训练的循环神经网络生成全新的专利文摘:
该项目的完整代码可在GitHub上找到。
https://github.com/WillKoehrsen/recurrent-neural-networks
方法
目的是使Web应用程序尽快启动并运行。为此,我选择了Flask,它允许我们用Python编写应用程序。我不喜欢搞乱样式(这清楚地显示了),所以几乎所有的CSS都是复制和粘贴的。
Keras团队的这篇文章(https://blog.keras.io/building-a-simple-keras-deep-learning-rest-api.html) 对基础知识很有帮助,本文也是一个有用的指南。
总体而言,该项目遵循我的设计原则:快速启动并运行原型——根据需要进行复制和粘贴,然后进行迭代以制作出更好的产品。
带Flask的基本Web应用程序
用Python构建Web应用程序的最快方法是使用Flask。要制作自己的应用程序,我们可以使用以下内容:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Not Much Going On Here
" app.run(host='0.0.0.0', port=50000)
如果你复制并粘贴此代码并运行它,则可以在 localhost:50000上查看自己的Web应用程序。当然,我们还想做更多的事情,所以我们将使用稍微复杂一点的功能,该功能基本上可以完成相同的工作:处理来自浏览器的请求,并以HTML形式提供一些内容。对于我们的主页,我们想向用户显示一个表单以输入一些详细信息。
用户输入表
当用户到达应用程序的主页时,我们将向他们显示一个带有三个参数的表单供你选择:
输入RNN的开始序列或随机选择
选择RNN预测的多样性
选择RNN输出的字数
要在Python中构建表单,我们将使用wtforms。创建表单的代码为:
wtforms:https://wtforms.readthedocs.io/
from wtforms import (Form, TextField, validators, SubmitField, DecimalField, IntegerField) class ReusableForm(Form): """User entry form for entering specifics for generation""" # Starting seed seed = TextField("Enter a seed string or 'random':", validators=[ validators.InputRequired()]) # Diversity of predictions diversity = DecimalField('Enter diversity:', default=0.8, validators=[validators.InputRequired(), validators.NumberRange(min=0.5, max=5.0, message='Diversity must be between 0.5 and 5.')]) # Number of words words = IntegerField('Enter number of words to generate:', default=50, validators=[validators.InputRequired(), validators.NumberRange(min=10, max=100, message='Number of words must be between 10 and 100')]) # Submit button submit = SubmitField("Enter")
这将创建如下所示的表单(样式来自main.css):
该validator
代码确保用户输入正确的信息。例如,我们检查所有框是否都已填写,且其diversity介于0.5到5之间。必须满足这些条件才能接受该表格。
我们Flask实际提供表单的方式是使用模板。
模板
模板是一个包含基本框架的文档,我们需要用它来填充细节。对于Flask Web应用程序,我们可以使用Jinja模板库将Python代码传递到HTML文档。例如,在main函数中,我们将把表单的内容发送到一个名为index.html的文件.
Jinja模板库:http://jinja.pocoo.org/
from flask import render_template # Home page @app.route("/", methods=['GET', 'POST']) def home(): """Home page of app with form""" # Create form form = ReusableForm(request.form) # Send template information to index.html return render_template('index.html', form=form)
当用户到达主页时,我们的应用程序将提供index.html
表格上的细节。该模板是一个简单的html框架,我们在其中使用{{variable}}
语法引用python变量。
RNN Patent Writing {% block content %} {% for message in form.seed.errors %}
Writing Novel Patent Abstracts with Recurrent Neural Networks {{ message }}