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

303
Views
¿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 answers
Answer question

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 Report

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 Report

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 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!