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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With