У меня есть keras с endorflow backend, который работает на GPU. Тем не менее, я тренирую LSTM, поэтому вместо этого я тренируюсь на процессоре.
with tf.device('/cpu:0'):
model = Sequential()
model.add(Bidirectional(LSTM(50, return_sequences=True), input_shape=(50, len(train_x[0][0]))))
model.add(TimeDistributed(Dense(1, activation='sigmoid')))
model.compile(loss='binary_crossentropy', optimizer='Adam', metrics=['acc'])
Проблема заключается в том, что когда я сохраняю и загружаю модель, функция предсказания для загруженной модели выполняется очень медленно. После некоторых временных тестов я считаю, что происходит то, что загруженная модель работает на графическом процессоре, а не на процессоре, поэтому она медленная. Я попытался скомпилировать загруженную модель на CPU, но это не ускоряет работу:
model.save('test_model.h5')
new_model = load_model('test_model.h5')
with tf.device('/cpu:0'):
new_model.compile(loss='binary_crossentropy', optimizer='Adam', metrics=['acc'])
Есть ли способ достичь той же скорости с загруженной моделью, что и с новой обученной моделью? Недавно обученная модель почти в пять раз быстрее. Спасибо за вашу помощь.
Загрузите модель с помощью устройства, которое вы хотите использовать:
with tf.device('/cpu:0'):
new_model = load_model('test_model.h5')