【发布时间】:2021-10-26 16:24:05
【问题描述】:
我有多个要合并的 TFRecord 数据集。这意味着,这些数据集中的每一个都包含一个特征,我想将其合并到一个 TFRecord 中,其中包含所有特征。
遍历所有数据集并提取每个记录的特征,最后编写一个包含所有特征的新记录,但我很难创建一个高效的脚本。
简单地说,我的问题:
下面的代码有效。
tfrecord = tf.data.TFRecordDataset("/my/file.tfrecord")
for record in tfrecord:
#extract feature
但是下面的代码给了我一个错误。
tfrecord = tf.data.TFRecordDataset("/my/file.tfrecord")
iterator = iter(tfrecord)
item = iterator.next()
print(item)
Error:
.../python3.8/site-packages/tensorflow/python/data/ops/iterator_ops.py", line 544, in __del__
AttributeError: 'NoneType' object has no attribute 'eager_mode'
然而,有趣的是它确实打印了第一条记录,只是它也抛出了一个错误。
我真的只想要一个迭代器对象,这样我就可以使用 next() 函数而不是 for 循环来迭代数据集。 我希望你们中的一些人能够帮助我:)
【问题讨论】:
-
对于其他想对
TFRecordDataset的记录进行操作的人,也可以调用Dataset对象的as_numpy_iterator()方法,得到一个将嵌套tf.Tensors转换为嵌套np的迭代器。数组
标签: python tensorflow tensorflow2.0 tfrecord