簡體   English   中英

從 TensorFlow 中的 CSV 文件加載大型數據集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM