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

从图像本地目录创建 tensorflow 数据集

从图像本地目录创建 tensorflow 数据集

芜湖不芜 2021-11-02 16:50:16
我在本地有一个非常庞大的图像数据库,数据分布就像每个文件夹都包含一个类的图像。我想使用 tensorflow 数据集 API 来批量获取数据,而无需将所有图像加载到内存中。我试过这样的事情:def _parse_function(filename, label):    image_string = tf.read_file(filename, "file_reader")    image_decoded = tf.image.decode_jpeg(image_string, channels=3)    image = tf.cast(image_decoded, tf.float32)    return image, labelimage_list, label_list, label_map_dict = read_data()dataset = tf.data.Dataset.from_tensor_slices((tf.constant(image_list), tf.constant(label_list)))dataset = dataset.shuffle(len(image_list))dataset = dataset.repeat(epochs).batch(batch_size)dataset = dataset.map(_parse_function)iterator = dataset.make_one_shot_iterator()image_list 是一个列表,其中附加了图像的路径(和名称),label_list 是一个列表,其中每个图像的类都以相同的顺序附加。但是 _parse_function 不起作用,我的错误是:ValueError: Shape must be rank 0 but is rank 1 for 'file_reader' (op: 'ReadFile') with input shape: [?]。我用谷歌搜索了错误,但对我没有任何作用。如果我不使用 map 函数,我只是记录图像的路径(它们存储在 image_list 中),所以我认为我需要 map 函数来读取图像,但我无法使其工作。先感谢您。编辑:    def read_data():        image_list = []        label_list = []        label_map_dict = {}        count_label = 0        for class_name in os.listdir(base_path):            class_path = os.path.join(base_path, class_name)            label_map_dict[class_name]=count_label            for image_name in os.listdir(class_path):                image_path = os.path.join(class_path, image_name)                label_list.append(count_label)                image_list.append(image_path)            count_label += 1
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

错误在这一行dataset = dataset.repeat(epochs).batch(batch_size)您的管道将批量大小添加为输入的维度。


您需要像这样在 map 函数之后批处理您的数据集


    dataset = tf.data.Dataset.from_tensor_slices((tf.constant(image_list), tf.constant(label_list)))

    dataset = dataset.shuffle(len(image_list))

    dataset = dataset.repeat(epochs)

    dataset = dataset.map(_parse_function).batch(batch_size)


查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

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