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