keras/tensorflow 使用flask部署服務的常見錯誤的解決辦法

本文主要列舉了在用keras/tensorflow訓練好模型後,使用flask部署服務時的兩個常見錯誤及一次性解決辦法。

類型1、ValueError: Tensor Tensor(“dense_1/Softmax:0”, shape=(?, 5), dtype=float32) is not an element of this graph.

這個錯誤主要是報模型最後一層出現類似的錯誤,比如這裏的最後一層是softmax,不同的模型最後一層可能不一樣,但錯誤類型一致。

類型2、W tensorflow/core/framework/op_kernel.cc:1502] OP_REQUIRES failed at resource_variable_ops.cc:619 : Not found: Container localhost does not exist. (Could not find resource: localhost/Embedding-Segment/embeddings)

這個錯誤主要是報模型的一些中間層錯誤。

當然,在單獨的 .py 文件中模型預測是正常的,但在flask中調用 model.predict() 就報上述類似錯誤。

一般來說添加如下代碼可以解決這兩個錯誤(其他一般錯誤也可以嘗試以下方法):

from tensorflow.python.keras.backend import set_session
# 程序開始時聲明
sess = tf.Session()
graph = tf.get_default_graph()
# tf2: graph = tf.compat.v1.get_default_graph()

# 在model加載前添加set_session
set_session(sess)
model = models.load_model(model_path)

# 每次使用有關模型請求時
# for each request:
global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章