Keras KeyError: «acc» и KeyError: «val_acc» Ошибки в Keras

Исправление Исправление ошибок KeyError: ‘acc’ и KeyError: ‘val_acc’ в Keras

Использовали ли вы объект «История», возвращаемый функциями fit() Keras, для построения графиков или визуализации истории обучения ваших моделей? Получали ли вы после недавнего обновления Keras ошибку типа «KeyError», подобную следующей, и задаетесь вопросом, почему?

Traceback (most recent call last):
  File "lenet_mnist_keras.py", line 163, in <module>
    graph_training_history(history)
  File "lenet_mnist_keras.py", line 87, in graph_training_history
    plt.plot(history.history['acc'])
KeyError: 'acc'

Что ж, это связано с критическим изменением, внесенным в версию Keras 2.3.0.

Согласно примечаниям к выпуску 2.3.0:

«Метрики и потери теперь сообщаются под точным именем, указанным пользователем (например, если вы передаете metrics=['acc'], ваша метрика будет сообщаться под строкой «acc», а не «accuracy», и наоборот metrics=['accuracy'] будет указана в строке «точность».

Вы можете прочитать официальные примечания к выпуску здесь: https://github.com/keras-team/keras/releases/tag/2.3.0

Это означает, что если вы укажете metrics=[“accuracy”] в model.compile(), то объект истории будет иметь ключи как ' точность" и 'val_accuracy'. А если вы укажете его как metrics=["acc"], то они будут сообщаться с ключами 'acc' и 'val_acc'.