我正在玩MNIST示例,并注意到protobuf序列化功能在序列化和反序列化方面都非常缓慢。
我的简单测试用42000个图像读取CSV,并使用TFRecordWriter将其写入二进制文件。基准测试结果非常令人惊讶:
使用相当合理的大小结果,看起来像protobuf功能编码非常慢。我在阅读时看到同样缓慢的结果,Example.FromString()比pickle慢〜5-7倍。
有没有技巧/建议如何克服这个?
我的编码代码段在下面。
writer = TFRecordWriter(FLAGS.out)
image_id = 1
for row in reader:
row = map(int, row)
f_dict = {}
label = row[0]
image = row[1:]
f_dict["label"] = tf.train.Feature(int64_list=tf.train.Int64ListList(value=[label]))
f_dict["image"] = tf.train.Feature(int64_list=tf.train.Int64ListList(value=image))
features = tf.train.Features(feature=f_dict)
example = tf.train.Example(features=features)
writer.write(example.SerializeToString())