通過訓練模型獲得高達 98% 的準確率,但混淆矩陣顯示出非常高的誤分類。我正在使用 keras 在預訓練的 VGG16 模型上使用遷移學習方法進行多類分類。問題是使用 CNN 將圖像分類為 5 種番茄病害。有 5 個疾病類別,6970 張訓練圖像和 70 張測試圖像。訓練模型顯示 98.65% 的準確率,而測試顯示 94% 的準確率。但問題是當我生成混淆矩陣時,它顯示出非常高的誤分類。有人請幫助我,是我的代碼錯誤還是模型錯誤?我很困惑我的模型是否給了我正確的結果。如果有人可以向我解釋 keras 如何使用 model.fit_generator 函數實際計算準確度,因為在混淆矩陣上應用準確度的一般公式并沒有給我與 keras 計算出的相同的結果。用于測試數據集的代碼是:test_generator = test_datagen.flow_from_directory(test_dir,target_size=(150, 150),batch_size=20,class_mode='categorical')test_loss, test_acc = model.evaluate_generator(test_generator, steps=50)print('test acc:', test_acc)我從論壇之一找到了生成混淆矩陣的代碼;代碼是:import numpy as npfrom sklearn.metrics import confusion_matrix,classification_reportbatch_size = 20num_of_test_samples = 70predictions = model.predict_generator(test_generator, num_of_test_samples // batch_size+1)y_pred = np.argmax(predictions, axis=1)true_classes = test_generator.classesclass_labels = list(test_generator.class_indices.keys()) print(class_labels)print(confusion_matrix(test_generator.classes, y_pred))report = classification_report(true_classes, y_pred, target_names=class_labels)print(report)以下是我得到的結果:測試精度:Found 70 images belonging to 5 classes.test acc: 0.9420454461466182混淆矩陣的結果:['TEB', 'TH', 'TLB', 'TLM', 'TSL'][[2 3 2 4 3] [4 2 3 0 5] [3 3 3 2 3] [3 3 2 4 2] [2 2 4 4 2]]] precision recall f1-score support TEB 0.14 0.14 0.14 14 TH 0.15 0.14 0.15 14 TLB 0.21 0.21 0.21 14 TLM 0.29 0.29 0.29 14 TSL 0.13 0.14 0.14 14 micro avg 0.19 0.19 0.19 70 macro avg 0.19 0.19 0.19 70weighted avg 0.19 0.19 0.19 70
添加回答
舉報
0/150
提交
取消