训练准确性和验证准确性良好,但预测准确性较差

时间:2020-10-22 06:34:53

标签: python keras deep-learning neural-network cnn

我的CNN有胡说八道。它在测试和验证数据上具有很好的准确性,但是在预测方面确实很糟糕,我无法弄清原因。

我有一个包含traningData和TestData的文件夹,每个文件夹都有5个子文件夹,分别为classA,classB。 classC,classD,classE。他们都有相关的图片。

-----此问题的解决方案--------- 我发现了错误,这就是为什么我清除了我的问题以使其更加清楚的原因。因此问题就在test_generator中。我没有把shuffle = False, 因此在执行test_datagen.flow_from_directory()时必须放置shuffle = False,这样样本就不会被混洗,并且在预测时具有相同的顺序

非常感谢大家

test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(    
        rescale = 1./255,
        )

test_generator = test_datagen.flow_from_directory(
        directory="../newFlowers/TestData",
        target_size=(128, 128),
        color_mode="rgb",
        batch_size=8,
        class_mode="categorical",
        

    )

1 个答案:

答案 0 :(得分:1)

您的评估准确性是89.9%。我测试了我提供给您的用于打印结果的代码,这些代码对于我使用的模型和数据是正确的。请显示您用于model.predict的代码。应该像下面这样。不要使用预测生成器fit_generator或valuate_generator,因为在将来的Tensorflow版本中它将被折旧。只需使用拟合,预测或评估即可。

SELECT unitname, staff_id FROM Unit HAVING COUNT(staff_id) >1 GROUP BY unitname;

看一下您的pred,第一个预测应该是对于索引= 4,这是E类,所以是正确的;第二个预测概率最高的概率是1,这是B类,所以是正确的,其余的也是。您确定标签为label = test_gen.labels