从TensorFlow中的CSV文件加载大型数据集



我使用以下代码在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";在";负载";作用我真的很感谢你的帮助。

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

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)  

map中用tf.py_function包装加载函数,这样就可以使用解码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)>,)

最新更新