前沿追踪|用Python将Keras深度学习模型部署为Web应用程序


前沿追踪|用Python将Keras深度学习模型部署为Web应用程序构建一个很棒的机器学习项目是一回事 , 但归根结底 , 你希望其他人能够看到你的辛勤工作 。 当然 , 你可以将整个项目放在GitHub上 , 但是怎么让你的祖父母也看到呢?我们想要的是将深度学习模型部署为世界上任何人都可以访问的Web应用程序 。
在本文中 , 我们将看到如何编写一个Web应用程序 , 该应用程序使用经过训练的Keras递归神经网络 , 并允许用户生成新的专利文摘 。 这个项目建立在递归神经网络的基础上 , 但是了解如何创建RNN是不必要的 。
现在我们将其视为黑匣子:我们按一个开始的顺序进行操作 , 它输出一个全新的专利文摘 , 可以在浏览器中显示!
传统上 , 数据科学家会开发模型 , 而前端工程师则将模型展示给全世界 。 在这个项目中 , 我们必须扮演两个角色 , 并投入到Web开发中(尽管几乎全部使用Python) 。
该项目需要将众多主题结合在一起:

  • Flask:用Python创建一个基本的Web应用程序
  • Keras:部署训练有素的递归神经网络
  • 使用Jinja模板库创建模板
  • 用于编写网页的HTML和CSS
  • Flask:
  • Keras:
  • HTML:
  • CSS:html_css.asp
最终结果是一个网络应用程序 , 该应用程序允许用户使用经过训练的循环神经网络生成全新的专利文摘:
前沿追踪|用Python将Keras深度学习模型部署为Web应用程序该项目的完整代码可在GitHub上找到 。
方法目的是使Web应用程序尽快启动并运行 。 为此 , 我选择了Flask , 它允许我们用Python编写应用程序 。 我不喜欢搞乱样式(这清楚地显示了) , 所以几乎所有的CSS都是复制和粘贴的 。
Keras团队的这篇文章() 对基础知识很有帮助 , 本文也是一个有用的指南 。
总体而言 , 该项目遵循我的设计原则:快速启动并运行原型——根据需要进行复制和粘贴 , 然后进行迭代以制作出更好的产品 。
带Flask的基本Web应用程序用Python构建Web应用程序的最快方法是使用Flask 。 要制作自己的应用程序 , 我们可以使用以下内容:
from flask import Flaskapp = 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形式提供一些内容 。 对于我们的主页 , 我们想向用户显示一个表单以输入一些详细信息 。
用户输入表当用户到达应用程序的主页时 , 我们将向他们显示一个带有三个参数的表单供你选择:
  1. 输入RNN的开始序列或随机选择
  2. 选择RNN预测的多样性
  3. 选择RNN输出的字数
要在Python中构建表单 , 我们将使用wtforms 。 创建表单的代码为:
  • wtforms:
from wtforms import (Form, TextField, validators, SubmitField, DecimalField, IntegerField)class ReusableForm(Form):"""User entry form for entering specifics for generation"""# Starting seedseed = TextField("Enter a seed string or 'random':", validators=[validators.InputRequired()])# Diversity of predictionsdiversity = 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 wordswords = 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 buttonsubmit = SubmitField("Enter")


推荐阅读