gpt4 book ai didi

tensorflow - 如何从子目录加载tensorflow中的数据

转载 作者:行者123 更新时间:2023-12-04 17:24:09 24 4
gpt4 key购买 nike

我在本地的子文件夹中包含一个 ImageNet 数据子集,其中每个子文件夹代表一类图像。可能有数百个类,因此有子文件夹,每个子文件夹可以包含数百个图像。下面是一个包含文件夹子集的结构示例。我想在 tensorflow 中训练一个分类模型,但我不确定如何格式化和加载数据,因为不同文件夹中不同图像类的这种结构以及类标签是文件夹的名称。通常我只使用已存在于 tensorflow 中的数据集,例如 mnist 或 cifar10,它们经过格式化且易于使用。

enter image description here

最佳答案

您可以使用 tf.keras.preprocessing.image_dataset_from_directory()

你的目录结构应该是这样的,但有更多的类:

main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg

我建议你在这一步之前拆分数据集,因为我认为这里的数据是随机拆分的,而不是通过分层抽样(如果你的数据集不平衡,那么先这样做,不要使用验证拆分来为你做我不确定拆分是如何完成的,因为没有提到它)。

示例:

train_dataset = image_dataset_from_directory(
directory=TRAIN_DIR,
labels="inferred",
label_mode="categorical",
class_names=["0", "10", "5"],
image_size=SIZE,
seed=SEED,
subset=None,
interpolation="bilinear",
follow_links=False,
)

您必须设置的重要事项:

  1. 必须推断标签,其中图像标签是根据目录结构生成的,因此它遵循类的顺序。

  2. 标签模式必须设置为“分类”,它将标签编码为分类向量。

  3. 类名 您可以自己设置它,您必须在目录中列出文件夹的顺序,否则顺序将基于字母数字顺序。由于您有很多文件夹,您在这里可以做的是使用 os.walk(directory) 按目录的顺序获取目录列表。

  4. 图片大小 您可以将图片调整为相同大小。根据您使用的模型执行此操作,即 MobileNet 接收 (224,224),因此您可以将其设置为 (224,224)。

More information here .

关于tensorflow - 如何从子目录加载tensorflow中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64474626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com