[英]Loading a large dataset from CSV files in TensorFlow
我使用以下代碼在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,可以假定為灰度圖像。 我不知道應該使用什么來代替“加載”function 中的“tf.image.decode_jpeg”。 我將衷心感謝您的幫助。
您可以通過更改負載 function 中的一些內容來實現此目的,如下所示。
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
包裝加載函數,這樣就可以使用 decode file name
了。
示例 output:
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)>,)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.