iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 13
1

昨天介紹了如何產生 tfrecord,今天要介紹的當然就是如何讀取 tfrecord啦!

上次我們將每個人的資料都包成一個 example 後塞入 record,所以反過來說,讀取的話,我們也是以一個 example 為單位去讀取 tfrecord,第一步就是先呼叫 iterator。

record_iterator = tf.python_io.tf_record_iterator(path=TFRECORD_PATH)

有了 record_iterator,我們就可以透過 for 迴圈將資料讀出,tf.train.Example 中有一個 ParseFromString 的方法,可以將 tf_record 反序列化回來,這時的 example 就會是類似 dictionary 格式的資料。

for tf_record in record_iterator:
    example = tf.train.Example()
    example.ParseFromString(tf_record)

還記得我們說,被存成 example 的資料中,裡面的 features 必須以 list 格式包起來嗎?這次解析時也一樣,因此我們定義了幾個方法,用來簡化解析時要不要在程式碼加或不加[]的問題。

def get_int64(example, key):
    return example.features.feature[key].int64_list.value[0]

def get_int64_list(example, key):
    return example.features.feature[key].int64_list.value

def get_bytes(example, key):
    return example.features.feature[key].bytes_list.value[0]

def get_float(example, key):
    return example.features.feature[key].float_list.value[0]

定義方法後,就可以來解析資料啦!我們用上述的方法取得名稱,年齡等文字資訊,圖片的話,這邊用 write file 的方法,將大頭照存至檔案。
https://ithelp.ithome.com.tw/upload/images/20190921/201072998usBHmzHec.png

讀取 tfrecord 不難吧!

tensorflow原始碼


上一篇
【12】tensorflow 資料集應用:製作 tfrecord 篇
下一篇
【14】tensorflow 資料集應用:利用 TFRecordDataset 達成 Data Augmentation 篇
系列文
How to Train Your Model 訓模高手:我的 Tensorflow 個人使用經驗系列文31

尚未有邦友留言

立即登入留言