在没有部署服务之前,一切正常
在Flask框架下,加载tensrflow模型会出现如下错误
ValueError: Tensor Tensor(“...”, shape=(?, 6), dtype=float32) is not an element of this graph.
原因在于tf模型与flask并不在同一个线程中。解决方案参考tf官网给出的:
import tensorflow as tf
from bert4keras.backend import keras
from App.ee.service import load_weight
# 定义全局图,不然在flask中调用报错,因数tf是动态图
global sess, graph
sess = keras.backend.get_session()
graph = tf.get_default_graph()
# 加载模型
load_weight()
@ee.route('/predict', methods=["POST"])
def predict():
data = json.loads(request.get_data(as_text=True))
# 重点是这里,将动态图固定
with sess.as_default():
with graph.as_default():
# 预测
res = predict_sentence(data["text"])
# 省略其他处理
return res