因为我想在TFRecord文件中获取示例数,所以我当前使用的方法是
len([x for x in tf.python_io.tf_record_iterator(tf_record_file)])
但是很慢。 我的TFRecord文件中的所有Examples的长度都完全相同,所以我想知道是否有一种方法可以获取整个TFRecord文件(xxx.tfrecord)的大小(字节数)和TFRecord文件的大小(字节数)。一个例子吗?那我想我可以使用
number_of_Examples =(TFRecord文件的长度)/(第一个的长度 范例)=(xxx.tfrecord中所有范例的位元组)/(一个Expmale的位元组)
以更快地获取示例数。
答案 0 :(得分:3)
TFRecord文件本质上是Example
的数组,并且不包括作为元数据的示例数。因此,必须对它进行迭代以计算示例数。另一种选择是在创建时将大小保存为元数据(在一些单独的文件中)。
只要两个示例的大小不同,您提出的方法就行不通,即使特征数量相同,有时也是如此。
如果可以保证所有示例的字节数完全相同,则可以执行以下操作:
import os
import sys
import tensorflow as tf
def getSize(filename):
st = os.stat(filename)
return st.st_size
file = "..."
example_size = 0
example = tf.train.Example()
for x in tf.python_io.tf_record_iterator(file):
example.ParseFromString(x)
example_size = example.ByteSize()
break
file_size = getSize(file)
n = file_size / (example_size + 16)
print("file size in bytes:{}".format(file_size))
print("example size in bytes:{}".format(example_size))
print("N:{}".format(n))