tensorflow model server远程_示例:用Flask部署tensorflow.keras训练过的模型

本文档展示了如何使用tensorflow.keras训练模型,然后利用Flask框架进行远程部署,实现通过浏览器进行预测。模型数据来源于games-expand.csv文件,训练后保存,接着在Flask应用中调用模型进行预测,用户可以在浏览器中输入10个特征获取预测结果。
摘要由CSDN通过智能技术生成

一、用tensorflow.keras训练一个模型

数据是games-expand.csv,有22906行11列,其中第一行是标题,最后一列是标签。

数据网址 https://github.com/bgweber/Twitch/raw/master/Recommendations/games-expand.csvhttps://github.com/hwanji/Flask-tensorflow.keras-model

部分数据如下图所示

2b1154d8b039056095df5b00f4e66efc.png

下面训练一个深度学习模型,并保存模型

import pandas as pd
from tensorflow.keras import models, layers

class_count = 2 #类别数量

# 加载样本数据集,划分为x和y DataFrame
df = pd.read_csv("games-expand.csv")
x = df.drop(['label'], axis=1)
y = df['label']

# 定义Keras模型
model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(10,)))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(class_count, activation='softmax'))

model.summary()
# 编译并拟合模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
history = model.fit(x, y, epochs=100, batch_size=100,
                    validation_split = 0.2, verbose=1)

# 以H5格式保存模型
model.save("games.h5")

二、利用Flask部署模型

利用flask部署模型,可以在浏览器中调用该模型进行预测。

import flask
import pandas as pd
from tensorflow.keras.models import load_model


host='0.0.0.0'

# 实例化 flask 
app = flask.Flask(__name__)

# 加载模型
global graph
#graph=tf.reset_default_graph()
model = load_model('games.h5')

# 将预测函数定义为一个路由
@app.route("/predict", methods=["GET","POST"])
def predict():
    data = {"success": False}

    params = flask.request.json  
    if (params == None):
        params = flask.request.args

    # 若发现参数,则返回预测值
    if (params != None):
        print(f"params {'='*50} n",params)
        x=pd.DataFrame.from_dict(params, orient='index').transpose()
        print(f"x {'='*50} n",x)
        y_predict = model.predict(x)  #预测结果是一个二元列表
        y_predict = np.argmax(y_predict[0]) #取概率最大的一个id
        print(f"y_predict {'='*50} n",y_predict)
        data["prediction"] = str(y_predict)
        data["success"] = True

    # 返回Json格式的响应
    return flask.jsonify(data)    

# 启动Flask应用程序,允许远程连接
if __name__ == '__main__':
    app.run(debug=False,host=host)

三、用部署的模型进行预测

启动第二步后,在浏览器中输入要预测的数据,特征数量要与训练时的特征数量相同,这里是10个特征。

http://127.0.0.1:5000/predict?g1=1&g2=0&g3=0&g4=0&g5=0&g6=0&g7=0&g8=0&g9=0&g10=0

可以得到下面的返回结果

214bc4ffbb8724a11c6da30e2ce6aef9.png

"prediction":"0"表示预测结果是第0类。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值