2016-11-12 2 views
2

Я использовал дополнение данных keras для выполнения классификации изображений (десятиклассные изображения). Последняя тренировка эпоха дает результаты следующим образом:Keras: в чем разница между model.evaluate_generator и 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 

Затем оценить обученную модель по:

scores = model.evaluate_generator(test_generator,1514) #1514 testing images 
print("Accuracy = ", scores[1]) 

Это приводит к следующим результатам:

('Accuracy = ', 0.80713342132152621) 

точность не точно так же, как и в последнюю учебную эпоху. Я не понимаю разницы, хотя это маргинально.

Далее, model.predict_generator дает совершенно другой результат, который является массивом показано следующим образом:

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) 

Я не знаю, что представляет собой матрицу, и какова разница между model.evaluate_generator и модели. predict_generator.

Отмечено, что результирующий массив имеет форму 1514 * 10. Массив должен быть вероятностью прогнозирования в каждом классе для набора тестовых изображений. Если да, то как вычислить матрицу путаницы на основе результата?

ответ

8

predict_generator принимает ваши данные испытаний и дает вам выход.

evaluate_generator использует как ваш тестовый вход, так и выход. Сначала он прогнозирует выход с использованием ввода для обучения, а затем оценивает производительность, сравнивая его с вашим тестовым выходом. Таким образом, он дает меру производительности, то есть точность в вашем случае.

Смежные вопросы