我正在使用以下内容: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服务器的情况下运行程序,因此手动输入,我会得到一个预测,但是一旦服务器启动,就会出现错误,并且我将停止获取预测
Keras在19年9月17日发布了新版本2.3.0。作为修订版本的一部分,我更新了所有库,其中包括Keras。自从我做完这个消息就出现了。
在我降级到Keras 2.2.5之后,问题消失了。