为什么Keras model.predict()会根据测试数据的大小产生不同的概率?

时间:2018-01-06 06:32:07

标签: machine-learning computer-vision deep-learning keras

我对Keras和图像分类相对较新,我遇到了一个似乎无法找到更多信息的问题。

所以它的要点是我编写了一个稍微修改过的resnet50架构版本,并在我自己的5000张图像训练数据集上进行测试。培训和测试数据分为85%的培训和15%的测试。得到的训练精度为94.26%,50个时期后的测试精度为89.02%。我想验证model.evaluate是否正常工作,因此我在测试数据上运行了model.predict(),它产生了相同的预测。但是,当执行model.predict(test_data[0:3])只看到测试数据中前3个图像的预测时,它会产生与以前不同的概率结果。

例如,在执行model.predict(test_data)时,我最终得到了前3张图片的这些预测:

 [  3.86609372e-06   9.99959469e-01   8.28523935e-06 ...,   3.81386235e-06
    1.04268118e-07   1.21626453e-09]
 [  5.39615750e-03   2.21778057e-04   1.12958644e-02 ...,   1.02706067e-03
    5.01608439e-02   1.12831332e-01]
 [  1.74208861e-08   2.58701675e-07   4.56858857e-07 ...,   4.93999863e-08
    2.00246024e-08   1.40630873e-05]

因此,您可以看到第一张图像是第2类,预计有99%的机会。

但是,当我运行model.predict(test_data[0:3])时,我最终会对同样的3张图片进行不同的预测:

 [  1.27427978e-02   9.65294957e-01   1.36477800e-04   2.46044103e-04
    2.07989533e-02   2.01619656e-07   1.09049659e-04   3.54961463e-04
    2.36560169e-07   1.74340403e-05   2.95751437e-04   3.05204480e-06
    7.25281657e-09]
 [  1.03661343e-02   9.70191788e-04   7.98394233e-02   1.37828933e-02
    4.03248608e-01   2.28452999e-02   1.81689449e-02   4.52506207e-02
    4.14442839e-05   6.90634036e-03   5.04679279e-04   3.94435912e-01
    3.63953644e-03]
 [  4.40177857e-04   3.28276951e-06   5.55719156e-03   1.51521107e-02
    2.68901749e-06   2.38441480e-08   8.34578590e-04   5.70602715e-04
    3.51641923e-01   5.26319724e-03   4.39392490e-04   1.80980451e-02
    6.01996779e-01]

正如您所看到的,这些概率非常不同。第一个图像仍然可以预测一个2的类,但在其他情况下,它会预测不同的类,这些类是错误的,但在对整个测试数据进行model.predict()时是正确的。同样,如果我执行model.predict(test_data[0:4])之类的操作,它会再次更改。

我很困惑为什么会发生这种情况。如果有人有任何见解或遇到类似的事情,如果你能告诉我发生了什么,我真的很感激。

如果没有太多信息,我很抱歉,如果您需要更多信息,请与我们联系。

0 个答案:

没有答案