Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

423
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda