ich Keras Daten Augmentierung verwendet, um Bildklassifizierung (zehn-Klasse Bilder) durchzuführen. Die letzte Trainings Epoche gibt die Ergebnisse wie folgt:Keras: was ist der Unterschied zwischen model.evaluate_generator und model.predict_generator
Epoch 50/50
4544/4545 [============================>.] - ETA: 0s - loss: 0.7628 - acc: 0.7359 loss: 0.762710434054
New learning rate: 0.00214407973866
4545/4545 [==============================] - 115s - loss: 0.7627 - acc: 0.7360 - val_loss: 0.5563 - val_acc: 0.8124
dann die trainierten Modell bewerten nach:
scores = model.evaluate_generator(test_generator,1514) #1514 testing images
print("Accuracy = ", scores[1])
Es führt zu folgenden Ergebnissen:
('Accuracy = ', 0.80713342132152621)
Die Genauigkeit ist nicht genau das Gleiche wie in der letzten Trainingsphase. Ich verstehe den Unterschied nicht, obwohl er marginal ist.
Ferner gibt model.predict_generator völlig anderes Ergebnis, das ein Array ist wie folgt dargestellt:
array([[ 4.98306963e-06, 1.83774697e-04, 5.49453034e-05, ...,
9.25193787e-01, 7.74697517e-04, 5.79946618e-06],
[ 2.06657965e-02, 2.35974863e-01, 2.66802781e-05, ...,
2.16283044e-03, 8.42395966e-05, 2.46680051e-04],
[ 1.40222355e-05, 1.22740224e-03, 7.52218883e-04, ...,
3.76749843e-01, 3.85622412e-01, 6.47417846e-06],
...,
[ 9.94064331e-01, 1.30184961e-03, 1.08694976e-05, ...,
1.25828717e-06, 2.29093766e-05, 9.01326363e-04],
[ 7.10375488e-01, 2.01397449e-01, 3.10241080e-06, ...,
3.66877168e-10, 1.66322934e-05, 1.93767438e-08],
[ 8.13350256e-04, 2.67575349e-04, 6.79878794e-05, ...,
8.63052785e-01, 9.70983761e-04, 8.54507030e-04]], dtype=float32)
Ich weiß nicht, was die Matrix darstellt, und was ist der Unterschied zwischen model.evaluate_generator und Modell. Vorhersagegenerator.
Es wird angemerkt, dass die resultierende Anordnung eine Form von 1514 × 10 hat. Das Array sollte die Vorhersagewahrscheinlichkeiten für jede Klasse für den Satz von Testbildern sein. Wenn ja, wie kann man basierend auf dem Ergebnis eine Konfusionsmatrix berechnen?