分批编写TFRecords

时间:2018-04-11 07:28:26

标签: python tensorflow tfrecord

我发现的有关TFRecords的所有文档都逐一生成tf.train.Example(),并使用

编写它们
writer = tf.python_io.TFRecordWrite(path)
ex = generate_example(features)  # Returns tf.train.Example() instance
writer.write(ex.SerializeToString())

由于我处理的是非常大的数据,我知道我会为单独编写示例付出高昂的开销

有没有办法一次将多个tf.train.Example()写入TFRecord?

1 个答案:

答案 0 :(得分:0)

由于TFRecord只是原始数据的序列化版本,附带了一些额外信息,我不确定您能否完成您的要求。我脑子里想到了一些问题:

  1. 你应该如何写一个文件多个例子 同时?
  2. 如果你成功实现上述目标(处理所有并发问题等),tensorflow仍将以相同的方式读取它们:串行所以我不确定这里有什么好处。
  3. 另外,TFRecord应该被写一次并多次使用。这意味着它们不是任何培训或未来可能发生变化的过程的产物。它们应该是模型的输入。因此,无论创建它们的努力如何,这都是一次性的工作。你的数据有多大?在这种情况下,我认为在训练过程中处理它们比在TFRecords中编写它们会有更多麻烦。
  4. 我能想到的一个(天真的)解决方法是同时创建多个TFRecord文件。这样就可以加快TFRecord的编写速度,如果那是困扰你的话。然后,您可以使用记录列表而不是单个TFRecord文件来读取它们。当然,在这种情况下,张量流将再次连续读取它们。