我的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",
)
答案 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