Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flask and Keras model Error ''_thread._local' object has no attribute 'value''?

I am using the following: python 3.6.4

Flask = 1.1.1,

Keras = 2.3.0,

TensorFlow = 1.14.0, I have a Flask server that gets pictures from the clients. using Keras model with a TensorFlow back-end I try to get a prediction from a pre-trained model.

I am using the following function to upload the model( as part of a class)


 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 ")

and I use the following line for prediction:

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

Until today I didn't have any problem, always got a prediction. now I get the following error:

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'

I have a simple Flask server running:

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

The model is always being uploaded.

If I am running the program without the Flask server, hence giving manually input, I get a prediction, but as soon as the server is on the error appears and I stop getting a predictions

I tried to look on the web for some similar problem but didnt found any, if someone knows what the problem and how to solve it, I will appreciate sharing it.

like image 677
helpper Avatar asked Sep 19 '19 16:09

helpper


2 Answers

So after a long night, Keras had released a new version 2.3.0 in Sep 17,19. As part of revision update I did, I updated all libraries, Keras among them. Since I did it the message appeared.

After I downgraded back to Keras 2.2.5 The problem disappeared.

like image 145
helpper Avatar answered Oct 24 '22 05:10

helpper


If it is still relevant, I fixed this problem just by changing

from keras.models import Sequential

from keras.layers import Dense, Dropout, LSTM

to

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM

So, no need to turn off multithreading.

like image 27
été Avatar answered Oct 24 '22 05:10

été