我对TFRecord文件格式以及如何使用它感到困惑。我有一个TFRecord,但不知道它到底包含什么,它的结构是什么。如何打印和检查TFRecord和/或其TFExamples?我问的基本上与this question相同,但是这个问题的答案已经过时了。打印我的TFRecord
的output_shapes
、output_types
或{tf.io.tf_record_iterator()
函数已被弃用,但是TFRecord数据集现在看起来自己是可编辑的(但是为什么还需要datasets#creating_an_iterator" rel="nofollow noreferrer">the other迭代器呢?)。但是,简单地打印每个迭代都会返回胡言乱语,tf.train.Example.FromString(example)
会抛出一个TypeError: a bytes-like object is required, not 'tensorflow.python.framework.ops.EagerTensor'
。这一切让人相当困惑。简单地使用from_tensor_slices()
初始化一个tf.data.Dataset
似乎更容易检查,而且实际上提供了关于其形状和类型的信息。在
可以使用
tf.python_io.tf_record_iterator
检查tfrecords文件。它创造了一个世代。要访问单个示例,您需要对其进行迭代:这将输出特性名称和类型(在本例中为bytes\u list)
^{pr2}$要输出数据类型,还需要
但这也将打印原始字符串,并且您可以达到屏幕长度限制。在
当您知道它是如何编码的,您可以通过
你可以在这里阅读更多关于它的https://www.tensorflow.org/tutorials/load_data/tf_records
编辑: 如果启用了eager模式,则可以直接迭代dataset对象,使用numpy进行解码
或者本地TF。
tf.io.decode_raw(str_rec, tf.uint8))
然而,这将给你一个平坦的数组,它不会携带任何关于图像尺寸大小的信息
相关问题 更多 >
编程相关推荐