在following article中,有一个说明,即数据集需要分为培训、确认和测试文件夹,其中测试文件夹不应包含带标签的子文件夹。相反,它应只包含一个文件夹(即Test_folder)。
当我使用下面的代码时,我得到了一条输出消息,指出没有找到图像。
Ver.1:
test_generator = test_datagen.flow_from_directory(
"dataset\\test\\test_folder\\",
target_size=(IMG_WIDTH, IMG_HEIGHT),
batch_size=1,
class_mode=None,
shuffle=False,
seed=10)
Output message: "Found 0 images belonging to 0 classes.".
相反,如果我使用与train和validation文件夹中相同的文件夹结构(dataset\test\class_a\test_1.jpg等),那么一切似乎都正常,我可以评估我的模型。
Ver.2:
test_generator = test_datagen.flow_from_directory(
"dataset\\test\\",
target_size=(IMG_WIDTH, IMG_HEIGHT),
batch_size=32,
class_mode='categorical',
shuffle=False,
seed=10)
Output message: "Found 1500 images belonging to 3 classes.".
我还尝试了recommendation,其中指定了“classes”属性,但仍然没有找到图像。
Ver.3:
test_generator = test_datagen.flow_from_directory(
"dataset2\\test\\test_folder\\",
target_size=(IMG_WIDTH, IMG_HEIGHT),
batch_size=1,
classes=['test'],
class_mode=None,
shuffle=False,
seed=10)
Output message: Found 0 images belonging to 1 classes.
因此,调用flow_from_directory()方法的正确方法是什么?为什么我会收到找不到文件的消息?当我使用Ver.2解决方案时,我的模型是否没有正确求值?
3条答案
按热度按时间isr3a4wc1#
如果为None,则不会返回任何标签(生成器将只生成成批的图像数据,这对于与model.predict_generator()一起使用非常有用)。请注意,如果class_mode为None,则数据仍需要驻留在directory的子目录中才能正常工作。
请注意,评估需要使用标签来确定模型的好坏。通常,只有在生产或真实的测试中才不使用标签。您似乎希望测试模型,因此实际上需要使用标签。这意味着您应该对测试数据进行排序
当你想学习如何使用一个框架时,阅读文档通常比那些文章更有帮助。https://keras.io/preprocessing/image/#flow_from_directory。
另一方面,mc.ai是一个充斥着撕裂媒体文章的网站,应该避免。许多文章是不完整的+它侵犯了作者的版权。
b0zn9rqh2#
如果你不想改变测试目录的结构,可以试试
需要指定
classes=['.']
,因为flow_from_directory
方法将搜索文件夹。在您的
Ver.3:
中,您指定了类,但目录中没有包含test
的文件夹,因此您得到了0个图像和1个类。dl5txlt93#
另一个解决方案是将test目录的父文件夹设置为flow from directory函数的目录,并将classes属性设置为包含图像的test文件夹的名称(在本例中为“test”)
参考资料如下:https://velog.io/@jhcho/Loading-Unlabeled-Images-with-ImageDataGenerator-flowfromdirectory-in-Keras