作者Sheepforpart (Sheep)
看板DataScience
标题Re: [问题] Tensorflow data pipeline 问题
时间Thu Mar 11 17:45:06 2021
自己文章自己回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://webptt.com/cn.aspx?n=bbs/DataScience/M.1615455910.A.F00.html
※ 编辑: Sheepforpart (109.58.161.252 丹麦), 03/11/2021 17:46:54
1F:推 st1009: 谢谢大大无私的分享 03/11 23:18
2F:推 joe120519: 感谢分享 03/13 18:37
3F:推 janus7799: 以前有写TFRecord的简单操作教学,分享给大家当参考资 03/14 16:37
4F:→ janus7799: 料。 03/14 16:37