TFRecord比原始数据大

时间:2017-03-30 01:07:03

标签: tensorflow deep-learning

实际上,我正在处理来自不同视频的许多图片,所以我使用 tf.SequenceExample()将它们保存为不同的序列,并将它们的标签附加到TFRcord中。

但是在运行我的代码生成TFRecord之后,它会生成一个TFRecord,它比原始图片3GB大29GB

创建比原始数据更大的TFRecord是否正常?

2 个答案:

答案 0 :(得分:0)

检查您加载的数据类型。我猜你把图像加载为像素数据。每个像素都是unit8(8位),可能会转换为float(32位)。因此,您必须预期它会达到原始大小的4倍(3 GB - > 12 GB)。

此外,原始格式可能具有(更好)压缩比tfrecords。 (我不确定tfrecords是否可以使用压缩)

答案 1 :(得分:0)

您可能正在存储解码图像而不是jpeg编码图像。 TFRecord没有图像格式的概念,因此您可以使用所需的任何编码。为了保持大小不变​​,请将原始图像文件内容转换为BytesList并存储该内容,而无需调用decode_image或使用任何图像库或任何能够理解图像格式的东西。

另一种可能性是您可能将图像存储为Int64List的完整字节,大小为8倍。而是将其存储为包含单个BytesList的{​​{1}}。