Keras模型的valuate()和predict_classes()给出了矛盾的结果

时间:2018-11-05 10:06:53

标签: python tensorflow keras computer-vision

我使用Keras的VGG16进行了一段时间的工作,并在我自己的4类数据集上进行了微调之后,训练似乎进行得很好,训练和验证集的准确性提高了,最后,甚至使用{ {1}}在测试数据方面具有良好的准确性。我尝试了model.evaluate(),它也显示出很好的分类结果。为了确认,我尝试使用以下方法对数据集中的图像进行预测:

confusion_matrix
我只为1类(类0)加载流帧,但是只有30%的图片被正确分类,而在另一类(类1)中,它是50%正确分类。鉴于我训练时的准确性超过85%,并且混淆矩阵显示出非常好的结果,我发现这非常不正常。我在网上查看了所有可能的原因,但是找不到出了什么问题...是否存在一个已知的问题可以解释结果的差异?

编辑:

我基本上不带top地加载Keras vgg,添加我自己的分类器并像这样编译模型:

im = cv2.resize(frame,(image_size, image_size), interpolation = cv2.INTER_AREA)

#convert the image pixels to a numpy array
framer = img_to_array(im)             
image = framer.reshape((1, framer.shape[0], framer.shape[1], framer.shape[2]))

# prepare the image for the VGG model
image = preprocess_input(image)  

label = FLOW1_model.predict_classes(image, verbose=0)

1 个答案:

答案 0 :(得分:0)

据我所知,在多类输出的情况下,您不能使用predict_classes()方法。 您是否已经尝试过:

FLOW1_model.predict(image, verbose=0)