將訓練好的Tensorflow模型部署到web應用中
阿新 • • 發佈:2018-11-25
做一個簡易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> <!-- 這句的for="X"對應<input>中的id="X",不然不能獲取到輸入框中的內容,比較重要 --> <input name="X" id="X" style="width: 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