#python #tensorflow #server #keras
#python #тензорный поток #сервер #keras
Вопрос:
Я пытаюсь разместить модель классификации изображений на своем компьютере, я пытался реализовать шаги, приведенные в этой статье, для моделей ml, обслуживающих среду
Фрагмент кода, который я использовал, является :
import tensorflow as tf
# The export path contains the name and the version of the model
tf.keras.backend.set_learning_phase(0) # Ignore dropout at inference
model = tf.keras.models.load_model('./model_new.hdf5')
export_path = './model/1'
# Fetch the Keras session and save the model
# The signature definition is defined by the input and output tensors
# And stored with the default serving key
with tf.keras.backend.get_session() as sess:
tf.saved_model.simple_save(
sess,
export_path,
inputs={'input_image': model.input},
outputs={t.name:t for t in model.outputs})
как указано в статье выше. Моя модель сохранена в файле model_new.hdf5, но я получаю следующее сообщение об ошибке.
Ошибка имени: имя ‘tf’ не определено
в строке
модель = tf.keras.models.load_model(‘./model_new.hdf5’)
правильно ли это использовать tf.saved_model.simple_save() ?
Ответ №1:
Это ошибка при загрузке вашей модели, а не с tf.saved_model.simple_save()
. При загрузке модели Keras вам необходимо обрабатывать пользовательские объекты или пользовательские слои. Вы можете сделать это, передав custom_objects
dict, который содержит tf
в вашем случае:
import tensorflow as tf
model = keras.models.load_model('model_new.hdf5', custom_objects={'tf': tf})
Комментарии:
1. Спасибо за вашу помощь, но я получаю новую ошибку RuntimeError: попытка использовать закрытый сеанс. в той же строке.
2. Это может быть проблемой, если вы запускали код несколько раз. Попробуйте вызвать
K.clear_session()
в начале.3. K.clear_session() не сработал, выдал ту же ошибку, в моей модели я использую слой ctc, и это сохраненный файл hdf5. может ли быть проблема из-за этого?
4. Я не вижу никаких проблем с вашим кодом. У вас есть минимально воспроизводимый пример кода, который я могу попробовать?