首页 > 解决方案 > 从 csv 文件读取图像并返回 tf.data.Dataset 对象的有效方法

问题描述

我有一个包含两列的 csv 文件:

  1. 存储为numpy数组的图像的文件路径
  2. 图像的标签

csv 中的每一行对应一个项目(样本)。

我想创建一个tf.data读取文件路径并加载 numpy 数组和与之关联的标签的管道。我该怎么做才能返回一个tf.data.Dataset对象?

网站上的文档信息量不大,我不知道从哪里开始。

标签: pythontensorflow

解决方案


一种方法是将这两个文件加载到变量中并使用tf.data.Dataset.from_tensor_slices(参见https://www.tensorflow.org/guide/datasets#sumption_numpy_arrays

另一种方法是将文件路径映射到数据集并执行数据流水线以将其读取并返回为 (img, label) 这是来自https://www.tensorflow.org/tutorials/load_data/images的示例代码

def load_and_preprocess_image(path):
  image = tf.read_file(path)
  return preprocess_image(image)

ds = tf.data.Dataset.from_tensor_slices((all_image_paths, all_image_labels))

# The tuples are unpacked into the positional arguments of the mapped function
def load_and_preprocess_from_path_label(path, label):
  return load_and_preprocess_image(path), label

image_label_ds = ds.map(load_and_preprocess_from_path_label)

如果数据对于内存来说太大,我自己更喜欢第二种方式,但第一种方式对于小数据很方便


推荐阅读