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
Как я могу это решить?