zoukankan      html  css  js  c++  java
  • 将训练好的Tensorflow模型部署到web应用中

      做一个简易web使用Flask是最好的选择,不仅上手快,使用也很便利。Django很强大也很好用,但一次就会创建一个项目的所需的文件,我觉得对于测试一个模型在web端有没有效果没必要用它。

      flask依赖jinja和werkzeug,所以再稍微学一点jinja的语法即可。

      关于TensorFlow如何保存/加载模型就不多说了(或者可以直接使用TensorFlow.js,但我用npm一直安装出错,遂放弃)。

      首先安装flask:`pip install flask`。可能需要注意flask的环境变量问题,如果遇到,则自己网上找找办法吧。

      然后在本地或者云端选择一个目录下创建一个python文件,名字自己取一个(例如`web.py`)。

      以我自己写的为例吧,web.py文件内容大致如下:

    from flask import *
    
    
    app = Flask(__name__)
    
    
    @app.route('/service', methods=['GET', 'POST'])
    def service():
        if request.method == 'POST':
            input_x = string_floats(request.form['X'])
            from model import service
            g.output = service.predict(input_x) # 使用模型
            return render_template("page.html", output=g.output)
        return render_template("page.html")

      page.html文件是这样的:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Using Model</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
        <form method="post">
            <label for="X">Input X:</label>
            <!-- 之前这里说错了,修改一下 -->
            <!-- 这里后台request.form['X']通过id获取到输入框中的内容-->
            <!-- 或者这样也能获取:request.form.get('name')通过属性'name'来获取input的内容 -->
            <input name="X" id="X" style=" 100%" required>
            <input type="submit">
        </form>
        {% if output is defined %} <!-- jinja语法 -->
            <p>Output:</p>
            <span>{{ output }}</span>
        {% endif %}
    </body>
    </html>

      flask通过将py文件中定义的变量插入到html中的,jinja通过{{ }}使用,g是一个全局变量。

      然后,命令行进入到web.py所在的目录下。

      windows下cmd中运行:

    set FLASK_APP=web.py
    set FLASK_DEBUG=1
    flask run
    

      其他操作系统终端语法参考:http://flask.pocoo.org/docs/1.0/tutorial/factory/

      效果:

      参考:https://blog.csdn.net/luoyexuge/article/details/78227317

  • 相关阅读:
    1G→2G→3G→4G→5G:一部波澜壮阔的移动通信史
    Android-X86 创始人
    如果Android 8.0的代码重新改写,那么Fuchsia OS的意义何在?
    (OK) Install php 5.6 in fedora-27
    父亲
    魏永明: MiniGUI的涅槃重生之路
    LeetCode 374. Guess Number Higher or Lower
    LeetCode 278. First Bad Version
    LeetCode 35. Search Insert Position
    查找算法-二分查找
  • 原文地址:https://www.cnblogs.com/darkchii/p/10015894.html
Copyright © 2011-2022 走看看