ValueError: Неизвестная метрическая функция: top_2_accuracy. Пожалуйста, убедитесь, что этот объект передан в аргументе `custom_objects`.

Я работаю над проектом классификации CNN, и я использовал топ 2 Accuracy (top_k_categorical_accuracy) в качестве матрицы точности для обучения. Функция в блокноте модели выглядит следующим образом:

from tensorflow.keras.metrics import top_k_categorical_accuracy

def top_2_accuracy(y_true, y_pred):
    return top_k_categorical_accuracy(y_true, y_pred, k=2)

тогда я использовал его как

model.compile(optimizer = Adam(lr = 4e-3), 
              loss='categorical_crossentropy', 
              metrics=['accuracy', top_2_accuracy])

Теперь мне нужно загрузить модель, чтобы использовать ее в приложении. Я пытался использовать этот код:

model = tf.keras.models.load_model('model.h5')

но при загрузке произошла ошибка

Unknown metric function: top_2_accuracy. Please ensure this object is passed to the `custom_objects` argument. See https://www.tensorflow.org/guide/keras/save_and_serialize#registering_the_custom_object for details.

тогда я погуглил и попробовал это тоже:

model = tf.keras.models.load_model('model.h5', custom_objects={'top_k_categorical_accuracy(y_true, y_pred, k=2)':top_2_accuracy})

но он выдал другую ошибку

model = tf.keras.models.load_model('model.h5', custom_objects={'top_k_categorical_accuracy(y_true, y_pred, k=2)':top_2_accuracy})
NameError: name 'top_2_accuracy' is not defined

Как я могу это решить?

Вернуться на верх