Матрица замешательства хуже точности моделей - PullRequest
0 голосов
/ 13 апреля 2020

Я построил модель с использованием функции извлечения и точной настройки VGG16. При установке точность validation_generator очень высока. Однако, когда я создаю матрицу путаницы, она не совпадает с установленной моделью.

Здесь вы можете увидеть некоторые важные коды:

validation_generator = test_datagen.flow_from_directory(
        'data/valid',
        target_size=(240, 240),
        batch_size=batch_size,
        class_mode='categorical')
history = model.fit_generator(
          train_generator,
          #steps_per_epoch=100,
          epochs=30,
          validation_data=validation_generator,
          validation_steps=50)

Подгонка вывода модели, только что скопировал последние 3 эпохи.

...
Epoch 28/30
120/120 [==============================] - 70s 580ms/step - loss: 0.0767 - acc: 0.9764 - val_loss: 0.4436 - val_acc: 0.9309
Epoch 29/30
120/120 [==============================] - 70s 587ms/step - loss: 0.0730 - acc: 0.9783 - val_loss: 0.3170 - val_acc: 0.9207
Epoch 30/30
120/120 [==============================] - 70s 586ms/step - loss: 0.0828 - acc: 0.9717 - val_loss: 0.5362 - val_acc: 0.9022

Я думаю, что проблема заключается в создании матрицы путаницы с использованием validation_generator. Вот код, который я использовал для:

y_pred = model.predict_generator(validation_generator)
y_pred = y_pred.argmax(-1)
con_mat = tf.math.confusion_matrix(validation_labels.argmax(-1), y_pred)
con_mat = np.array(con_mat)
plot_confusion_matrix(cm = con_mat, classes = train_generator.class_indices.keys(), normalize = False)

Вывод (матрица неправильной путаницы): enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...