通過訓(xùn)練模型獲得高達(dá) 98% 的準(zhǔn)確率,但混淆矩陣顯示出非常高的誤分類。我正在使用 keras 在預(yù)訓(xùn)練的 VGG16 模型上使用遷移學(xué)習(xí)方法進(jìn)行多類分類。問題是使用 CNN 將圖像分類為 5 種番茄病害。有 5 個疾病類別,6970 張訓(xùn)練圖像和 70 張測試圖像。訓(xùn)練模型顯示 98.65% 的準(zhǔn)確率,而測試顯示 94% 的準(zhǔn)確率。但問題是當(dāng)我生成混淆矩陣時,它顯示出非常高的誤分類。有人請幫助我,是我的代碼錯誤還是模型錯誤?我很困惑我的模型是否給了我正確的結(jié)果。如果有人可以向我解釋 keras 如何使用 model.fit_generator 函數(shù)實(shí)際計(jì)算準(zhǔn)確度,因?yàn)樵诨煜仃嚿蠎?yīng)用準(zhǔn)確度的一般公式并沒有給我與 keras 計(jì)算出的相同的結(jié)果。用于測試數(shù)據(jù)集的代碼是: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)以下是我得到的結(jié)果:測試精度:Found 70 images belonging to 5 classes.test acc: 0.9420454461466182混淆矩陣的結(jié)果:['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
提交
取消