【发布时间】:2021-05-18 20:53:15
【问题描述】:
我希望使用自己的数据集构建分类模型。但我无法格式化要使用的数据集。它们当前位于子文件夹中,每个名称都是类。我想像 MNIST 数据集的格式一样创建我的数据集,但我无法这样做。例如,对于 MNIST,我们可以拆分数据集:
(train_images, train_labels), (
test_images,
test_labels) = tf.keras.datasets.mnist.load_data()
然后,例如,我可以展平数据:
train_images = train_images.reshape((train_images.shape[0], -1))
test_images = test_images.reshape((test_images.shape[0], -1))
如何将tf.keras.datasets.mnist.load_data() 替换为我自己的数据集,但格式与 MNIST 数据集相同?我也在做多类分类。
编辑:添加注释:
需要明确的是,我的主要任务是用我自己的数据集替换 MNIST 数据集:例如,我的子目录是这样的:
main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg
...class_c/
......c_image_1.jpg
......c_image_2.jpg
...class_d/
......d_image_1.jpg
......d_image_2.jpg
我尝试按照link 将我的数据集制作成 tf.keras 可以用来加载数据集的格式,类似于加载 MNIST 数据集的方式。我已经尝试生成一个 tf.data.Dataset。
data_dir = "/datas"
data_dir = pathlib.Path(data_dir)
image_count = len(list(data_dir.glob('*/*.jpg')))
print(image_count)
cats = list(data_dir.glob('cats/*'))
PIL.Image.open(str(cats[0]))
batch_size = 32
img_height = 150
img_width = 150
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
但我仍然无法将其转换为正确的格式,以修复上述代码。我看到的是关于转换为 numpy 数组,但我不知道该怎么做。
【问题讨论】:
-
您尝试过什么,您的尝试出了什么问题?例如,来自 tensorflow 的 here are the docs 关于加载图像目录
-
是的,所以我关注了这个链接:keras.io/api/preprocessing/image,尝试创建一个数据集,但后来我无法加载数据集并使用 .load_data() 函数。抱歉,但我对生成和生成数据集仍然很陌生。我猜 .load_data() 是他们已经制作的数据集。
-
MNIST 格式到底是什么?
-
如果您 edit 您的问题包含 minimal reproducible example 显示您实际尝试的代码以及您遇到的具体问题,这将有所帮助,以便我们可以提供具体帮助
-
当然,我已经添加了一些进一步的细节......
标签: python tensorflow keras tensorflow-datasets tf.keras