一尘不染

Flask和Keras模型错误“ _thread._local”对象没有属性“值”?

flask

我正在使用以下内容:python 3.6.4

flask= 1.1.1,

Keras = 2.3.0,

TensorFlow = 1.14.0,我有一个Flask服务器,可以从客户端获取图片。将Keras模型与TensorFlow后端结合使用时,我尝试从预先训练的模型中获得预测。

我正在使用以下函数上传模型(作为类的一部分)

 model_path = self.conf["model_path"] // path in conf to model
 self.model = load_model(model_path)  // uploading the model
 self.model._make_predict_function()
 p_log.info("model had been upload successfully ")

我使用以下代码进行预测:

cm_prediction = self.model.predict([face, reye, leye, fg])[0]

直到今天,我还没有任何问题,总能得到一个预测。 现在我得到以下错误:

Traceback (most recent call last):
  File "D:\code_project\path to project", line 75, in predict
    cm_prediction = self.model.predict([face, reye, leye, fg])[0]
  File "D:\code_project\path to project", line 1462, in predict
    callbacks=callbacks)
  File "D:\code_project\predictserver\venv\lib\site-packages\keras\engine\training_arrays.py", line 276, in predict_loop
    callbacks.model.stop_training = False
  File "D:\code_project\predictserver\venv\lib\site-packages\keras\engine\network.py", line 323, in __setattr__
    super(Network, self).__setattr__(name, value)
  File "D:\code_project\predictserver\venv\lib\site-packages\keras\engine\base_layer.py", line 1215, in __setattr__
    if not _DISABLE_TRACKING.value:
AttributeError: '_thread._local' object has no attribute 'value'

我有一个运行的简单Flask服务器:

if __name__ == '__main__':
    pre = predictor()
    # app.run(debug=True)
    app.run(host='0.0.0.0', port=12345)

模型总是被上传。

如果我在没有Flask服务器的情况下运行程序,因此手动输入,我会得到一个预测,但是一旦服务器启动,就会出现错误,并且我将停止获取预测


阅读 2224

收藏
2020-04-08

共1个答案

一尘不染

Keras在19年9月17日发布了新版本2.3.0。作为修订版本的一部分,我更新了所有库,其中包括Keras。自从我做完这个消息就出现了。

在我降级到Keras 2.2.5之后,问题消失了。

2020-04-08