iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 19
1
AI & Data

從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型系列 第 19

二、教你怎麼看source code,找到核心程式碼 ep.12:如何製作tfrecord? 4

文章說明

文章分段

  1. 文章說明
  2. deeplab的簡單介紹、於我的意義
  3. tensorflow的程式碼特色
  4. 訓練流程的細節
  5. 逛deeplab的github程式,順序:train.py model.py datasets/data_generator.py …

 

前情提要

昨天把迴圈的前半部分,也就是讀取data的部分講完,接著講label讀取的部分。

 

逛deeplab的github程式(cont.)

build_voc2012_data.py (cont.)

  • 124-126行把對應的label的檔名組合起來。
  • 127行把檔案讀取、放進變數裡
  • 128行用label的reader拿取label的長與寬。
    以上都跟data的資料處理方法一模一樣,接著129-130行是處理報錯問題,萬一data與label的尺寸不一樣,就會直接停止處理。

不過我通常的做法是用try and except的方式去處理,因為有時候資料集很大,難免會有錯誤,處理到一半失敗的話,前面處理所花的時間就白費了,所以我會用try去忽略掉不能用的資料點。

 


接著是把訓練用的資料:data影像、影像資訊(長、寬、名稱)、label這些,全部轉成一組tf example格式。

  • build_data.py

    tf example是有規定的儲存格式,他要儲存的是多個tf features,而feature是一個python的dictionary格式。

    因為是dict,所以要指定'key 名稱',然後儲存的資料必須是轉成byte的資料。

    這些名稱都可以自訂。

 


最後就把轉好的一個tf example轉成string後,再一筆一筆寫入tfrecord。


上一篇
二、教你怎麼看source code,找到核心程式碼 ep.11:如何製作tfrecord? 3
下一篇
二、教你怎麼看source code,找到核心程式碼 ep.13:如何把tfrecord轉成tf.data的dataset?
系列文
從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型30

尚未有邦友留言

立即登入留言