#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-фактическая модель. Затем вы можете передать этот словарь любому количеству функций, которые вам нужны.