Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

307
Vistas
¿Por qué la inferencia de TF Keras es mucho más lenta que las operaciones de Numpy?

Estoy trabajando en un modelo de aprendizaje por refuerzo implementado con Keras y Tensorflow. Tengo que hacer llamadas frecuentes a model.predict() en entradas individuales.

Mientras probaba la inferencia en un modelo preentrenado simple, noté que usar model.predict de Keras es MUCHO más lento que usar Numpy en pesos almacenados. ¿Por qué es tan lento y cómo puedo acelerarlo? Usar Numpy puro no es viable para modelos complejos.

 import timeit import numpy as np from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import Dense w = np.array([[-1., 1., 0., 0.], [0., 0., -1., 1.]]).T b = np.array([ 15., -15., -21., 21.]) model = Sequential() model.add(Dense(4, input_dim=2, activation='linear')) model.layers[0].set_weights([wT, b]) model.compile(loss='mse', optimizer='adam') state = np.array([-23.5, 17.8]) def predict_very_slow(): return model.predict(state[np.newaxis])[0] def predict_slow(): ws = model.layers[0].get_weights() return np.matmul(ws[0].T, state) + ws[1] def predict_fast(): return np.matmul(w, state) + b print( timeit.timeit(predict_very_slow, number=10000), timeit.timeit(predict_slow, number=10000), timeit.timeit(predict_fast, number=10000) ) # 5.168972805004538 1.6963867129435828 0.021918574168087623 # 5.461319456664639 1.5491559107269515 0.021502970783442876
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Un poco tarde, pero tal vez útil para alguien:

Reemplace model.predict(X) con model.predict(X, batch_size=len(X))

Deberias hacer eso.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Está ejecutando su modelo de Keras (con el backend de TensorFlow) en un bucle? Si es así, Keras tiene un problema de pérdida de memoria identificado aquí: ENLACE

En este caso tienes que importar lo siguiente:

 import keras.backend.tensorflow_backend import tensorflow as tf from keras.backend import clear_session

Finalmente, debe poner lo siguiente al final de cada iteración de un ciclo después de que haya terminado de hacer sus cálculos:

 clear_session() if keras.backend.tensorflow_backend._SESSION: tf.reset_default_graph() keras.backend.tensorflow_backend._SESSION.close() keras.backend.tensorflow_backend._SESSION = None

Esto debería ayudarlo a liberar memoria al final de cada ciclo y, eventualmente, acelerar el proceso. Espero que esto ayude.

over 4 years ago · Santiago Trujillo Denunciar

0

El problema de pérdida de memoria parece persistir en Keras. Las siguientes líneas de código mencionadas en ese problema me ayudaron:

 import ... as K import gc model = .... del model K.clear_session() gc.collect()
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda