如何检查Tensorflow .tfrecord文件?

Bob*_*ijt 31 tensorflow tfrecord

我有一个,.tfrecord但我不知道它的结构.如何检查模式以了解.tfrecord文件包含的内容?

所有Stackoverflow答案或文档似乎都假设我知道文件的结构.

reader = tf.TFRecordReader()
file = tf.train.string_input_producer("record.tfrecord")
_, serialized_record = reader.read(file)

...HOW TO INSPECT serialized_record...
Run Code Online (Sandbox Code Playgroud)

Bob*_*ijt 89

找到了!

import tensorflow as tf

for example in tf.python_io.tf_record_iterator("data/foobar.tfrecord"):
    print(tf.train.Example.FromString(example))
Run Code Online (Sandbox Code Playgroud)

您还可以添加:

from google.protobuf.json_format import MessageToJson
...
jsonMessage = MessageToJson(tf.train.Example.FromString(example))
Run Code Online (Sandbox Code Playgroud)


ama*_*205 45

以上解决方案对我不起作用,所以对于 TF 2.0 使用这个:

import tensorflow as tf 
raw_dataset = tf.data.TFRecordDataset("path-to-file")

for raw_record in raw_dataset.take(1):
    example = tf.train.Example()
    example.ParseFromString(raw_record.numpy())
    print(example)
Run Code Online (Sandbox Code Playgroud)

https://www.tensorflow.org/tutorials/load_data/tfrecord#reading_a_tfrecord_file_2

  • 答案应该改为这个 (8认同)
  • 这是一个 (2认同)

Ast*_*iul 11

已接受解决方案的改进:

import tensorflow as tf
import json
from google.protobuf.json_format import MessageToJson

dataset = tf.data.TFRecordDataset("mydata.tfrecord")
for d in dataset:
    ex = tf.train.Example()
    ex.ParseFromString(d.numpy())
    m = json.loads(MessageToJson(ex))
    print(m['features']['feature'].keys())
Run Code Online (Sandbox Code Playgroud)

就我而言,我在 TF2 上运行,单个示例太大而无法显示在我的屏幕上,因此我需要使用字典来检查键(可接受的解决方案返回完整字符串)。

  • MessageToJson来自google protobuf吗? (2认同)

小智 6

如果您.tftrecord包含 SequenceExample,则接受的答案不会向您显示所有内容。您可以使用:

import tensorflow as tf

for example in tf.python_io.tf_record_iterator("data/foobar.tfrecord"):
    result = tf.train.SequenceExample.FromString(example)
    break
print(result)
Run Code Online (Sandbox Code Playgroud)

这将向您展示第一个示例的内容。

然后您还可以使用它们的键检查单个功能:

result.context.feature["foo_key"]
Run Code Online (Sandbox Code Playgroud)

对于 FeatureLists:

result.feature_lists.feature_list["bar_key"]
Run Code Online (Sandbox Code Playgroud)


Yar*_*tov 5

将TensorFlow tf.TFRecordReaderhttps://www.tensorflow.org/programmers_guide/reading_data中tf.parse_single_example指定的解码器一起使用

PS,tfrecord包含在https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/example/example.proto中定义的“示例”记录

将记录提取到字符串中后,将其解析如下

a=tf.train.Example()
result = a.ParseFromString(binary_string_with_example_record)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定从文件中提取单个记录的原始支持在哪里,您可以在 TFRecordReader