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