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

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

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

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

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