Tensorflow 从keras的目录()加载带有图像数据集的图像
图像文件夹具有以下结构:Tensorflow 从keras的目录()加载带有图像数据集的图像,tensorflow,keras,tensorflow-datasets,Tensorflow,Keras,Tensorflow Datasets,图像文件夹具有以下结构: train/ ...batch0/ ......file00.jpg ......file01.jpg ...batch1/ ......file10.jpg ......file11.jpg 目录batch0和batch1的名称不是标签,标签位于单独的文件中。问题是将这些图像加载到数据集中。来自目录('/batch0')的函数image\u dataset\u,image\u dataset\u来自目录('/batch1')不起作用 错误: ValueError:
train/
...batch0/
......file00.jpg
......file01.jpg
...batch1/
......file10.jpg
......file11.jpg
目录batch0
和batch1
的名称不是标签,标签位于单独的文件中。问题是将这些图像加载到数据集中。来自目录('/batch0')的函数image\u dataset\u
,image\u dataset\u来自目录('/batch1')
不起作用
错误:
ValueError: Expected the lengths of labels to match the number of files in the target directory. len(labels) is 2 while we found 0 files in ../train/batch0/.
看起来这应该在tf夜间版本中修复。 错误消息已更新为 如果希望获得仅包含图像(无标签)的数据集, 通过
标签\u模式=无
而不是通过label=None
,而是通过label\u mode=None
train/
...batch0/
......file00.jpg
......file01.jpg
...batch1/
......file10.jpg
......file11.jpg
import pathlib
data_dir = pathlib.Path('/content/train/')
import tensorflow as tf
batch_size = 16
img_height = 180
img_width = 180
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
label_mode=None,
validation_split=0.2,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
输出
Found 4 files belonging to 2 classes.
Using 3 files for training.
为什么要在文件夹中将图像分批处理?它抛出了什么错误?我有两个不成功的情况,一个成功。1)
image\u dataset\u from\u directory('../train/batch0')找到了属于0类的0个文件。
2)labels\u list=[0,1]image\u dataset\u from\u dir目录(train\u dir,labels=labels\u list)值错误:标签的长度应与目标目录中的文件数匹配。len(labels)是2,而我们在../train/batch0/
3)中找到了0个文件成功的情况:image\u dataset\u从目录('../train/')中找到了4个属于2个类的文件。
Ah您需要使用相对路径,与成功案例类似,但问题是,image\u dataset\u from\u directory
假设目录是不同的类而不是批处理。对于image\u dataset\u from\u directory
,可以通过参数labels
打开/关闭它。标签:可以是“推断的”(标签从目录结构生成),也可以是与目录中找到的图像文件数相同大小的整数标签列表/元组。