在急切执行时解析 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
希望对您有所帮助。
考虑到 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
希望对您有所帮助。