读取tfrecord:DecodeError:错误解析消息

问题描述 投票:2回答:1

我正在使用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

python tensorflow tensorflow-datasets
1个回答
2
投票

问题的见解是,记录是使用另一种模式序列化的: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 {
...
}}
© www.soinside.com 2019 - 2024. All rights reserved.