Как преобразовать строку в модель тензорного потока?

#python #tensorflow

Вопрос:

Итак, я создал эту модель model1 и пытаюсь создать функцию, которая использует различные модели, такие как model1 model2 etc, и оценивает их. В процессе у меня есть вызываемая строка "model1" , в которую я хотел бы преобразовать model1 , чтобы я мог передать .evaluate() ей метод. Возможно ли это?

Комментарии:

1. Что вы пробовали раньше?

2. getattr(), str.replace(), list()… не профессионал в python, поэтому я знаю, что все это не имеет смысла.

3. Вы хотите оценить различные модели, которые были обучены ранее и сохранены на диске? Вопрос кажется немного двусмысленным, не могли бы вы подробнее рассказать о том, чего вы пытаетесь достичь немного больше?

4.IIUC вы хотите создать модели тензорного потока с именами model1 model2 и так далее? Для автоматизации создания модели?

5. Извините за неясность, поэтому я УЖЕ создал десять моделей с именами от model1 до model10, а также написал функцию с циклом for, которая создает имена моделей в строках «model1», «model2» и т. Д. Теперь, поскольку у меня есть строки, я хотел бы преобразовать их в объект модели — model1, model2 и т. Д., Чтобы я мог использовать для них метод .evaluate, так как «model1».evaluate() не будет работать.

Ответ №1:

Предполагая, что ваши ранее обученные модели сохранены на диске, вы можете просто загрузить их обратно в память и оценить как:

 model_names = ["model1", "model2", "model3", ..., "model10"]
for model_name in model_names:
    model = tf.keras.models.load_model("path/to/location/"   model_name)
    score = model.evaluate(X_test, y_test, ...)
 

Кроме того, если вы планируете иметь много моделей с последовательными именами, такими как model1, model2, …, model_n, вы можете использовать понимание списка вместо жесткого кодирования имен моделей, таких как:

 model_names = ["model"   str(x) for x in range(1, n)]
 

Пожалуйста, обратите внимание, что это псевдокоды, которые вам необходимо заполнить … в соответствии с вашими потребностями.

Комментарии:

1. Спасибо, метод понимания списка был именно тем, что я искал. Кроме того, есть ли способ сделать это, если модели просто локально сохранены в моей среде выполнения jupyter, а не на диске?

2. Чтобы создать сопоставление между реальными моделями и строковыми представлениями во время выполнения, вы можете использовать такие словари, как: models = {«model1»: model1, «model2»: model2 и т. Д.}. Где «model1» — это ключ в словаре моделей, а model1-фактическая модель. Затем вы можете передать этот словарь любому количеству функций, которые вам нужны.