为了账号安全,请及时绑定邮箱和手机立即绑定

如何探索和修改从 tf.keras.preprocessing.

如何探索和修改从 tf.keras.preprocessing.

PHP
ABOUTYOU 2023-11-09 16:56:23
这是我使用该函数的方式:dataset = tf.keras.preprocessing.image_dataset_from_directory(    main_directory,    labels='inferred',    image_size=(299, 299),    validation_split=0.1,    subset='training',    seed=123)我想像本示例一样探索创建的数据集,特别是将其转换为数据帧的部分pandas。但我的最低目标是检查标签和附加的文件数量,只是为了检查它是否确实按预期创建了数据集(子目录是其中图像的相应标签)。需要明确的是,它main_directory的设置如下:main_directory- class_a  - 000.jpg  - ...- class_b  - 100.jpg  - ...我希望看到数据集显示其信息,如下所示:label     number of imagesclass_a   100class_b   100此外,是否可以删除数据集中的标签和相应图像?我们的想法是,如果相应的图像数量小于一定数量或不同的指标,则丢弃它们。当然可以通过其他方式在此函数之外完成,但我想知道这是否确实可能,如果可以,如何实现。
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

我认为使用它glob2来获取所有文件名,根据需要处理它们,然后创建一个简单的加载函数来替换image_dataset_from_directory.


获取您的所有文件:


files = glob2.glob('class_*\\*.jpg')

然后根据需要操作该文件名列表。


然后,创建一个加载图像的函数:


def load(file_path):

    img = tf.io.read_file(file_path)

    img = tf.image.decode_jpeg(img, channels=3)

    img = tf.image.convert_image_dtype(img, tf.float32)

    img = tf.image.resize(img, size=(299, 299))

    label = tf.strings.split(file_path, os.sep)[0]

    label = tf.cast(tf.equal(label, 'class_a'), tf.int32)

    return img, label

然后创建用于训练的数据集:


train_ds = tf.data.Dataset.from_tensor_slices(files).map(load).batch(4)

然后训练:


model.fit(train_ds)


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信