在急切执行时解析 TFRecord

Parsing TFRecord when in eager execution

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

在 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

希望对您有所帮助。