Re: [問題] Tensorflow data pipeline 問題

看板DataScience作者 (Sheep)時間3年前 (2021/03/11 17:45), 3年前編輯推噓3(302)
留言5則, 3人參與, 3年前最新討論串2/2 (看更多)
自己文章自己回XD 感謝推文版友提供的建議,我後來差不多就是那樣做的 我覺得 TFRecords 相關的東西很複雜,而且文件不全或是很費解, 在踩了一堆坑之後想在這邊留個紀錄給剛開始碰的人看, 包含 TFRecords 和 multiple input 的東西 因為我不是 CS 背景,如果我有理解錯再麻煩大家跟我說 1. TFRecords 只是一個檔案格式,就像 json 或 pickle 2. TFRecordDataset 是一個 TF 物件,可以直接餵進 .fit() 內建記憶體管理防止 RAM 爆掉、有方便的 chaining method 可以做 shuffle 等操作 例如 dataset.shuffle().batch() 有一個實用的是 prefetch(), 可以提早把資料移動到 GPU, 加快速度 總之可以說製作 dataset 的目標就是得到一個 TFRecords Dataset 3. 製作 TFRecordDataset 的大致流程如下 a. 先拿好需要的數據,可以是一個 numpy array 或是其它格式 b. 把需要的數據用 writer 寫成 TFRecords,這邊要定義好數據欄位 c. 寫一個 parse function 讀取 b,這邊一樣要提供數據欄位,而且要跟 b 一樣 我在這邊遇到一個問題是,parse function 沒辦法讀取 TFRecords 後來採取的解法是在寫入的時候把數據都先 .tolist() 這邊也是一知半解,但暫時沒有去深究 4. 如果有 multiple input, 在 parse function 的地方可以先把 input 寫成 dict, 例如我的輸出是 x, y 但是 x 是 {"x0": [1,2,3,4,5], "x1": [1,2,3,4,5]} 這樣的形式 5. 如果使用 keras.Input, 在 name 欄位要和上面的 x0, x1 一致 6. keras.Model 可以吃 multiple input 或輸出 multiple output, 方法是像這樣: keras.Model([x0, x1], y) 最後推薦 Hands-on Machine Leanring with Scikit-Learn, Keras & TensorFlow 這本書上對於 TFRecordDataset 有滿詳盡好懂的內容 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 109.58.161.252 (丹麥) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1615455910.A.F00.html ※ 編輯: Sheepforpart (109.58.161.252 丹麥), 03/11/2021 17:46:54

03/11 23:18, 3年前 , 1F
謝謝大大無私的分享
03/11 23:18, 1F

03/13 18:37, 3年前 , 2F
感謝分享
03/13 18:37, 2F

03/14 16:37, 3年前 , 3F
以前有寫TFRecord的簡單操作教學,分享給大家當參考資
03/14 16:37, 3F

03/14 16:37, 3年前 , 4F
料。
03/14 16:37, 4F

03/14 16:37, 3年前 , 5F
文章代碼(AID): #1WIUQcy0 (DataScience)
文章代碼(AID): #1WIUQcy0 (DataScience)