具有protobuf性能

时间:2015-11-29 12:21:10

标签: tensorflow

我正在玩MNIST示例,并注意到protobuf序列化功能在序列化和反序列化方面都非常缓慢。

我的简单测试用42000个图像读取CSV,并使用TFRecordWriter将其写入二进制文件。基准测试结果非常令人惊讶:

  • 图像为字符串:19.292秒,大小= 130MB
  • 示例/功能编码,字节数组:108.510秒,大小= 100MB
  • 示例/功能编码,int64数组:145.014秒,大小= 39MB

使用相当合理的大小结果,看起来像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())

0 个答案:

没有答案