При использовании Keras, который входит в состав Tensorflow (Tensorflow 2), я заметил серьезное увеличение времени вычислений при использовании функции predict()
из Keras, встроенного в Tensorflow, и predict()
из автономного Keras. См. Код игрушки ниже:
import tensorflow
import keras
import numpy as np
import time
test = np.array([[0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 0.1, 0., 0.1, 0.2]])
# Keras from inside Tensorflow
model_1 = tensorflow.keras.Sequential([
tensorflow.keras.layers.Dense(1, activation='relu', input_shape=(10,)),
])
start_1 = time.time()
for i in range(1000):
result = model_1.predict(test)
elapsed_time_1 = time.time() - start_1
# Standalone Keras
model_2 = keras.models.Sequential([
keras.layers.Dense(1, activation='relu', input_shape=(10,)),
])
start_2 = time.time()
for i in range(1000):
result = model_2.predict(test)
elapsed_time_2 = time.time() - start_2
print(elapsed_time_1)
print(elapsed_time_2)
Результатом кода ниже на моей машине будет
17.82757878303528
0.31248927116394043
Ожидается, что predict()
из tensorflow.keras
должен принимать такое же количество времени для той же задачи по сравнению с predict()
от автономного Keras.
Мои вопросы:
- Почему это происходит?
- Как я могу это исправить?
Мои характеристики:
Python версия: Python 3.6.8
Версия Keras: 2.3.1
Версия Tensorflow: 2.1.0
Работает на Windows 10