【问题标题】:Loading a large dataset from CSV files in TensorFlow在 TensorFlow 中从 CSV 文件加载大型数据集
【发布时间】:2021-03-29 13:46:32
【问题描述】:

我使用下面的代码在我的TensorFlow数据集中加载一堆图片,效果很好:

def load(image_file):
      image = tf.io.read_file(image_file)
      image = tf.image.decode_jpeg(image)
      image = tf.cast(image , tf.float32)
      return image

train_dataset = tf.data.Dataset.list_files(PATH+'train/*.jpg')
train_dataset = train_dataset.map(load , num_parallel_calls=tf.data.experimental.AUTOTUNE)

我想知道如何使用类似的代码来加载一堆 CSV 文件。每个 CSV 文件的形状为 256 x 256,可以假定为灰度图像。我不知道我应该在“加载”函数中使用什么来代替“tf.image.decode_jpeg”。 非常感谢您的帮助。

【问题讨论】:

  • 您可以将 csv 文件读入 numpy 数组 (riptutorial.com/numpy/example/22990/reading-csv-files),然后使用 train_dataset = tf.data.Dataset.from_tensor_slices((images, image_labels)) 构建数据集
  • 感谢您的建议。我试图避免一次读取所有数据以避免内存过载。我的理解是,当我们使用tf.data.Dataset.list_files(PATH+'train/*.jpg')加载数据集时,它会在训练期间以批量方式直接从磁盘加载数据,而不是先将整个数据加载到RAM上,然后再发送一批到 GPU/CPU。对吗?

标签: python csv dataset tensorflow2.0 tensorflow-datasets


【解决方案1】:

您可以通过更改加载函数中的一些内容来实现这一点,如下所示。

def load(image_file):
      image_file = bytes.decode(image_file.numpy())
      image = pd.read_csv(image_file)
      image = image.values
      image = tf.convert_to_tensor(image, dtype=tf.float32,)
      return image  

train_dataset = tf.data.Dataset.list_files(PATH+"/*.csv")
print(train_dataset)
train_dataset = train_dataset.map(lambda x: tf.py_function(load,[x],[tf.float32]) , num_parallel_calls=tf.data.experimental.AUTOTUNE)  

将加载函数用tf.py_function包裹在map中,这样你就可以使用解码file name

示例输出:

for i in train_dataset.take(1):
  print(i) 

(<tf.Tensor: shape=(256, 256), dtype=float32, numpy=
array([[255., 255., 255., ..., 255., 255., 255.],
       [255., 255., 255., ..., 255., 255., 255.],
       [255., 255., 255., ..., 255., 255., 255.],
       ...,
       [255., 255., 255., ..., 255., 255., 255.],
       [255., 255., 255., ..., 255., 255., 255.],
       [255., 255., 255., ..., 255., 255., 255.]], dtype=float32)>,)

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 2018-11-09
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多