Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

426
Views
Modelo Flask y Keras Error ''_thread._local' ¿El objeto no tiene atributo 'valor'?

Estoy usando lo siguiente: python 3.6.4

Matraz = 1.1.1,

Keras = 2.3.0,

TensorFlow = 1.14.0, tengo un servidor Flask que obtiene imágenes de los clientes. Usando el modelo de Keras con un back-end de TensorFlow, trato de obtener una predicción de un modelo previamente entrenado.

Estoy usando la siguiente función para cargar el modelo (como parte de una clase)

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

y uso la siguiente línea para la predicción:

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

Hasta el día de hoy no tuve ningún problema, siempre obtuve una predicción. ahora me sale el siguiente 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'

Tengo un servidor Flask simple ejecutándose:

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

El modelo siempre se está cargando.

Si estoy ejecutando el programa sin el servidor Flask , por lo tanto, ingresando manualmente, obtengo una predicción , pero tan pronto como el servidor está encendido , aparece el error y dejo de recibir predicciones .

Intenté buscar en la web algún problema similar pero no encontré ninguno, si alguien sabe cuál es el problema y cómo solucionarlo, agradeceré que lo comparta.

over 4 years ago · Santiago Trujillo
19 answers
Answer question

0

No es necesario degradar Keras ni deshabilitar los subprocesos múltiples. Use Keras con TensorFlow como back-end:

 from tensorflow.keras.models import load_model
over 4 years ago · Santiago Trujillo Report

0

Para Django : use este comando para ejecutar el servidor

 python manage.py runserver --nothreading --noreload

funciona perfectamente bien para mí

over 4 years ago · Santiago Trujillo Report

0

Si está utilizando la versión 2.2 de tensorflow, la actualización de Keras a 2.2.5 no le ayudará porque tensorflow 2.2 necesitará una versión de keras superior a 2.3 . En ese caso, definir la variable del gráfico será suficiente.

entonces en su app.py, agregue estas dos líneas de código en la parte superior.

 global graph graph = tf.compat.v1.get_default_graph()
over 4 years ago · Santiago Trujillo Report

0

La degradación de las versiones de Keras y Tensorflow no funciona. Incluso establecer Threaded=False en app.py no resuelve el problema por sí solo. También debe configurar debug = False . Seguir funciona sin fallas.

 if __name__ == '__main__': app.run(debug=False,threaded=False)
over 4 years ago · Santiago Trujillo Report

0

Intenté todo lo anterior y esto es lo que encontré:

  1. la degradación de Keras no funcionó, incluso las llamadas regulares que no son de matraz no pudieron cargar modelos
  2. tb._SYMBOLIC_SCOPE.value = True tampoco funcionó
  3. finalmente threaded=False AND debug=False funcionó.
over 4 years ago · Santiago Trujillo Report

0

degradar Keras no funcionó tb._SYMBOLIC_SCOPE.value = True no funcionó threaded=False AND debug=False no funcionó

 from keras.models import model_from_json

para

 from tensorflow.keras.models import model_from_json

trabajó

over 4 years ago · Santiago Trujillo Report

0

Este trabajo para mí:

debes ponerlo justo antes de la creación del modelo.

importar keras.backend.tensorflow_backend como tb tb._SYMBOLIC_SCOPE.value = True

over 4 years ago · Santiago Trujillo Report

0

Ninguna de estas soluciones funcionó para mí. Cambié de Frasco a Botella. Bottle también es un micro-framework web WSGI rápido, simple y liviano para Python.

Para instalar la botella

 pip insatll bottle

Después de eso, todas las sintaxis son las mismas que Flask

 from bottle import route, run, template @route('/hello') def index(): return "Hello World" run(host='localhost', port=8080)
over 4 years ago · Santiago Trujillo Report

0

No es necesario degradar las versiones de su biblioteca. Tuve el mismo problema pero solo modifiqué el parámetro del matraz.

app.run("0.0.0.0", 5005, threaded=False)

¡esto hizo que finalmente ejecutara mi código!

Avísame si todavía estás luchando.

over 4 years ago · Santiago Trujillo Report

0

Si sigue siendo relevante, solucioné este problema simplemente cambiando

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

para

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

Por lo tanto, no es necesario desactivar los subprocesos múltiples.

over 4 years ago · Santiago Trujillo Report

0

por favor, asegúrese de hacer el valor de threaded=False Ejemplo: para matraz :

 if name == 'main': app.run(threaded=False)
over 4 years ago · Santiago Trujillo Report

0

Mismo problema al cargar varios modelos de Keras a través de Flask. Para resolver el problema en lugar de usar:

 from keras.models import model_from_json

Usé esto:

 from tensorflow.keras.models import model_from_json

En el futuro, en lugar de instalar keras, usaré tensorflow.keras.

Espero que ayude.

over 4 years ago · Santiago Trujillo Report

0

No hay necesidad de degradar las versiones del paquete. Si está utilizando Keras , entonces en el servidor Flask haga app.run(host=<HOST>, port=<PORT>, threaded=False) o en la terminal haga flask run --without-threads . Sin embargo, sugeriré usar tensorflow.keras en lugar de keras , para que no tenga que deshabilitar los subprocesos múltiples.

over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema con mis modelos Keras servidos a través de Flask en Google App Engine. Teniendo en cuenta las sugerencias encontradas en este hilo y otros lugares en línea, probé lo siguiente, ninguno de los cuales resolvió el problema original:

  • La degradación a versiones anteriores de Tensorflow y/o Keras provocó que mis modelos no se cargaran.
  • El uso app.run(threaded=False) no tuvo ningún efecto.
  • Establecer el contexto del gráfico con tensorflow.compat.v1.get_default_graph o tensorflow.python.keras.backend.get_graph provocó algunos otros errores.

Finalmente, la sugerencia que se encuentra aquí trajo la solución y mi aplicación comenzó a mostrar resultados válidos para todas las solicitudes sin ningún problema relacionado con el subproceso después de agregar estas dos líneas al código:

 import keras.backend.tensorflow_backend as tb tb._SYMBOLIC_SCOPE.value = True
over 4 years ago · Santiago Trujillo Report

0

Resolví este problema por:

  1. Reinstalar las últimas versiones de tensorflow, keras y matraz (tal vez el orden importe aquí...) dentro del entorno que solía ejecutar app.py
  2. Importando keras desde tensorflow

Versiones actuales:

  • tensorflow==2.1.0
  • Keras==2.3.1
  • tensorflow.keras==2.2.4-tf
  • matraz == 1.1.1
over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema al construir un contenedor docker hoy, que había funcionado perfectamente antes. Se solucionó degradando la versión de Keras a 2.2.4.

over 4 years ago · Santiago Trujillo Report

0

Entonces, después de una larga noche, Keras lanzó una nueva versión 2.3.0 el 17 y 19 de septiembre. Como parte de la actualización de revisión que hice, actualicé todas las bibliotecas, Keras entre ellas. Desde que lo hice me apareció el mensaje.

Después de volver a actualizar a Keras 2.2.5, el problema desapareció.

over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema con Keras 2.3.0 .

Otra solución para aquellos que no quieren bajar de categoría es configurar threaded=False en app.run() .

over 4 years ago · Santiago Trujillo Report

0

Si tiene problemas y es un poco lento como yo, establezca debug=False también

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!