混淆矩阵比模型精度差

时间:2020-04-13 14:00:05

标签: python keras deep-learning computer-vision confusion-matrix

我使用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”功能可以成功运行。因为我在没有数据增强的情况下构建特征提取之前就已经使用过它,所以效果很好。

0 个答案:

没有答案
相关问题