Keras fit_生成器和predict_生成器中验证结果之间的差异

Keras fit_生成器和predict_生成器中验证结果之间的差异,keras,Keras,我有一个我无法理解的问题 对于培训,我使用fit_generator,如下所示,验证数据返回的f1分数约为0.8 validation_generator = val_datagen.flow_from_directory( directory=val_data_dir, target_size=(img_width, img_height), batch_size=batch_size, shuffle=True,

我有一个我无法理解的问题

对于培训,我使用fit_generator,如下所示,验证数据返回的f1分数约为0.8

validation_generator = val_datagen.flow_from_directory(
        directory=val_data_dir,
        target_size=(img_width, img_height),
        batch_size=batch_size,
        shuffle=True,
        classes=["0", "1"],
        class_mode="categorical")
myModel.fit_generator(
        train_generator,
        steps_per_epoch=int(nbr_train_samples / batch_size) + (nbr_train_samples % batch_size > 0),
        epochs=nbr_epochs,
        validation_data=validation_generator,
        validation_steps=int(nbr_validation_samples / batch_size) + (nbr_validation_samples % batch_size > 0))
然后,我使用predict_generator对上述验证数据中使用的同一组数据进行分析。唯一的区别是,我将valid_data_dir下的两个子文件夹合并到test_data_dir中的一个文件夹中,并调用以下方法

test_generator = test_datagen.flow_from_directory(
        directory= test_data_dir,
        target_size=(img_width, img_height),
        batch_size=batch_size,
        shuffle=False,
        classes=None,
        class_mode=None)
predictions = myModel.predict_generator(test_generator, int(nbr_test_samples / batch_size) + (nbr_test_samples % batch_size > 0), verbose=1)

然后,我根据预测计算f1,结果非常低。

欢迎这么做。(1) 您确定这是编码问题吗?不仅仅是因为你的数据过多?(2) 你可能需要提供一些数据来帮助其他人重现问题。我不认为这是过度拟合的问题。这是因为我在fit_generator和predict_generator中使用了完全相同的数据集进行验证。对于相同的模型,相同的数据集,但两个不同的结果,我无法理解。实际上,我发现了一些关于这个问题的类似问题。然而,在这些问题中,人们经常犯错误,忘记设置shuffle=False,因此由于图像被洗牌,结果无法匹配。就我而言,我做了正确的设置。我认为我已经发现了问题。这是在我计算f1分数进行验证的方式。与“分类”模式一起使用时不正确。需要使用“二进制”模式。