我对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])
之类的操作,它会再次更改。
我很困惑为什么会发生这种情况。如果有人有任何见解或遇到类似的事情,如果你能告诉我发生了什么,我真的很感激。
如果没有太多信息,我很抱歉,如果您需要更多信息,请与我们联系。