Reading a tfrecord: DecodeError: Error parsing message

Reading a tfrecord: DecodeError: Error parsing message

我正在使用 colab 运行 在 tensorflow 排名上 tutorial。它使用 wget 获取 tfrecord:

!wget -O "/tmp/train.tfrecords" "http://ciir.cs.umass.edu/downloads/Antique/tf-ranking/ELWC/train.tfrecords"

我正在使用这段代码来尝试查看 tfrecord 的结构:

for example in tf.compat.v1.python_io.tf_record_iterator("/tmp/train.tfrecords"):
    print(tf.train.Example.FromString(example))
    break

我得到:

DecodeError: Error parsing message

如何大致查看tfrecords的结构?

第二个问题:在哪里可以找到关于 类 的文档,比如 tf.train.Example?我刚找到这个 empty page.

这个问题的洞察力是记录是使用另一个模式序列化的:ExampleListWithContext 模式,而不是基本的 tf.train.Example 模式。更新正确的反序列化解决问题。

filenames = ['/tmp/train.tfrecords']
raw_dataset = tf.data.TFRecordDataset(filenames)
for e in raw_dataset.take(1):
    ELWC = input_pb2.ExampleListWithContext()
    v = ELWC.FromString(e.numpy())
    print(v.context)
    for e in v.examples:
        print(e)

输出:

features {
  feature {
    key: "query"
    value {
      bytes_list {
        value: "why do ..."
      }
    }
  }
  feature {
    key: "query_bert_encoder_outputs"
    value {
      float_list {
...
}}