训练精度和有效期精度较好,但预测精度较差

2024-10-02 20:32:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对我的CNN有一个胡说八道的问题。它在测试和验证数据上有很好的准确性,但在预测方面却非常糟糕,我不知道为什么

我有一个包含traningData和TestData的文件夹,每个文件夹有5个子文件夹名classA、classB。C类,D类,E类。他们都有相关的图片

----这个问题的解决办法--------- 我发现了错误,这就是为什么我澄清了我的问题,使之更加清楚。因此,问题在于测试_生成器。我没有把shuffle=False, 因此,在测试_directory()中的_datagen.flow_时,必须将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",
        

    )

Tags: 数据test文件夹falsesizemodeflowdirectory
1条回答
网友
1楼 · 发布于 2024-10-02 20:32:45

您的评估准确率为89.9%。我测试了我给你打印结果的代码,结果与我使用的模型和数据相符。请显示用于model.predict的代码。应该如下所示。请勿使用预测生成器拟合生成器或评估生成器,因为在tensorflow的未来版本中,将对其进行折旧。只需使用拟合、预测或评估

length=len(labels)
test_steps=  int(length/batch_size) +1
preds=model.predict(test_gen,  verbose=0, steps=test_steps)

看看你的preds打印出来的第一个预测应该是索引=4,这是E类,所以这是正确的,第二个预测指数的最高概率是1,这是B类,所以这是正确的,其余的也是正确的。您确定标签为labels=test\u gen.labels吗

相关问题 更多 >