首页 > 解决方案 > 无法将 feed_dict 键解释为 Tensor:Tensor Tensor("Placeholder:0", shape=(135162, 6), dtype=float32) is not an element of this graph

问题描述

我使用 Keras 创建了一个机器学习模型进行情绪分析,并使用烧瓶创建了一个简单的 API,如下面的代码所示。对于第一个预测,它工作正常并在结果页面中给出输出,但是当我再次尝试时,它给了我上面的错误。

我见过一些类似的问题及其解决方案,但这些解决方案对我不起作用。我也尝试了不同的方法来保存和加载在 keras 上创建的模型,但无济于事。

#creating instance of the class
app=Flask(__name__)

@app.route('/')
def welcome():
    return flask.render_template('welcome.html')

#prediction function
def ValuePredictor(to_predict):
    model = pickle.load(open("model.pkl","rb"))
    print("Loaded model from disk")
    result = model.predict(to_predict)
    tf.reset_default_graph()
    return result

@app.route('/result',methods = ['POST'])
def result():
    if request.method == 'POST':
        to_predict_list = request.form.to_dict()
        to_predict_list=list(to_predict_list.values())
        test_tokens = tokenizer_obj.texts_to_sequences(to_predict_list)
        test_pad = pad_sequences(test_tokens, maxlen = max_length, padding= 'post')
        print(test_pad)
        result = ValuePredictor(test_pad)
        return render_template("result.html",prediction=result)

if __name__ == '__main__':
   app.run(debug= True, port = 5000)

我希望输入文本然后在结果页面中接收结果,然后返回主页并输入新文本并获得另一个结果,依此类推。

目前它第一次工作正常,然后在之后的时间以上给出错误。

标签: pythonrestflaskkeras

解决方案


在代码中添加以下内容即可解决!

from keras import backend as K

 K.clear_session()

我在预测之后添加了这个:

def ValuePredictor(to_predict):
    model = pickle.load(open("model.pkl","rb"))
    print("Loaded model from disk")
    result = model.predict(to_predict)
    K.clear_session()
    return result

推荐阅读