仅使用“keras.utils.image_dataset_from_directory”加载测试数据集时的不同结果

问题描述 投票:0回答:1

我使用以下几行来获取我的测试数据集:

test_ds = keras.utils.image_dataset_from_directory(img_path, image_size=image_size, batch_size = batch_size)

当我在此运行模型时,我得到以下统计数据:准确度 = 0.5214362272240086,精度 = 0.5950113378684807,F1-score = 0.5434962717481359

但是,当我以这种方式加载数据集时:

_, new_images = keras.utils.image_dataset_from_directory(img_path, shuffle=True, subset="both", seed=1, validation_split=0.9999, image_size=image_size, batch_size = batch_size)

性能统计数据为:准确度 = 0.9635388739946381,精度 = 0.9658291457286432,F1-score = 0.96875

为什么会发生这种情况?有类似经历吗?

python tensorflow keras deep-learning image-classification
1个回答
0
投票

两个数据集性能差异背后的原因可能是因为

数据分割:在第一个片段中,您使用的是 image_dataset_from_directory ,但没有提及验证分割,因此它使用默认分割,这可能不适合您的模型。在第二个片段中,您明确设置了 99.99% 的验证分割,这意味着只有一小部分数据用于训练,从而导致过度拟合。

洗牌:在第二个片段中,您对数据集进行洗牌(shuffle=True),这可以通过防止模型学习数据的顺序来帮助模型泛化。

子集选择:在第二种情况下使用subset="both",这意味着训练和验证子集都会返回。与仅返回训练集的默认行为相比,这可能会产生更平衡的数据集。

种子随机性:在这里,您在第二种情况下设置随机性种子。这确保了可重复性,但也会影响数据集的组成。

© www.soinside.com 2019 - 2024. All rights reserved.