首页 文章

Keras:model.evaluate_generator和model.predict_generator之间有什么区别

提问于
浏览
6

我使用keras数据增强来执行图像分类(十级图像) . 最后一次训练时期给出的结果如下:

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和model.predict_generator之间有什么区别 .

应注意,所得阵列的形状为1514×10 . 该阵列应该是每组测试图像的预测概率 . 如果是这样,如何根据结果计算混淆矩阵?

1 回答

  • 14

    predict_generator 获取您的测试数据并为您提供输出 .

    evaluate_generator 使用您的测试输入和输出 . 它首先使用训练输入预测输出,然后通过将其与测试输出进行比较来评估性能 . 因此,它给出了一个性能指标,即您的情况下的准确性 .

相关问题