在急切执行时解析TFRecord

时间:2018-04-23 20:24:06

标签: tensorflow tfrecord

考虑到急切执行模式中的is possible to run tf.Data.Datasets,如何在急切执行时打开TFRecord文件?我更关心解析器编写,因为我目前正在使用dataset.make_one_shot_iterator作为迭代器(在容器上的几个图像之间)。

1 个答案:

答案 0 :(得分:4)

在TensorFlow 1.8之后,你可以自然地在tf.data.Dataset对象上进行迭代,并启用了预先执行。

ds = tf.data.TFRecordDataset(...).map(...).batch(...)
for x in ds:
  print(x)

make_one_shot_iterator也可以正常工作(继续努力与图形构造的等效代码保持兼容):

ds = tf.data.TFRecordDataset(...).map(...).batch(...)
itr = ds.make_one_shot_iterator()
for x in itr:
  print(x)

然而,在旧版本的TensorFlow中(急切执行是一个新引入的功能,因而不那么好),您必须使用以下内容将数据集包装在tf.contrib.eager.Iterator中:

tfe  tf.contrib.eager
ds = tf.data.TFRecordDataset(...).map(...).batch(...)
for x in tfe.Iterator(ds):
  print(x)

请参阅与1.7版本相关的这些资源: - Notebook - RNN example

希望有所帮助。