(TensorFlow)——TFRecord使用方法總結
TFRecord
Tensorflow提供了TFRecord的格式來統一儲存資料,TFRecord格式是一種將影象資料和標籤放在一起的二進位制檔案,能更好的利用記憶體,在tensorflow中快速複製、移動、讀取、儲存等。
TFRecords檔案包含了tf.train.Example 協議記憶體塊(protocol buffer)(協議記憶體塊包含了欄位 Features)。我們可以寫一段程式碼獲取你的資料, 將資料填入到Example協議記憶體塊(protocol buffer),將協議記憶體塊序列化為一個字串, 並且通過tf.python_io.TFRecordWriter 寫入到TFRecords檔案。
從TFRecords檔案中讀取資料, 可以使用tf.TFRecordReader的tf.parse_single_example解析器。這個操作可以將Example協議記憶體塊(protocol buffer)解析為Tensor
我就來說說TFRecord的不足吧:
1、資料轉換為TFRecord格式後實在太大了,比如我使用的資料集是100000張圖片,總大小為15GB,轉換成TFRecord後,每5000張圖片儲存一個.tfrecords檔案,最後每個檔案的大小是8.8GB,一共8.8 × 20GB,佔得地方實在太大了,我覺如如果資料集可以控制在50G以內還能接受…
官方對tfrecord檔案大小的建議:
Reading large numbers of small files significantly impacts I/O performance. One approach to get maximum I/O throughput is to preprocess input data into larger (~100MB) TFRecord files