实际上,我正在处理来自不同视频的许多图片,所以我使用 tf.SequenceExample()将它们保存为不同的序列,并将它们的标签附加到TFRcord中。
但是在运行我的代码生成TFRecord之后,它会生成一个TFRecord,它比原始图片3GB大29GB 。
创建比原始数据更大的TFRecord是否正常?
答案 0 :(得分:0)
检查您加载的数据类型。我猜你把图像加载为像素数据。每个像素都是unit8
(8位),可能会转换为float
(32位)。因此,您必须预期它会达到原始大小的4倍(3 GB - > 12 GB)。
此外,原始格式可能具有(更好)压缩比tfrecords。 (我不确定tfrecords是否可以使用压缩)
答案 1 :(得分:0)
您可能正在存储解码图像而不是jpeg编码图像。 TFRecord没有图像格式的概念,因此您可以使用所需的任何编码。为了保持大小不变,请将原始图像文件内容转换为BytesList
并存储该内容,而无需调用decode_image
或使用任何图像库或任何能够理解图像格式的东西。
另一种可能性是您可能将图像存储为Int64List
的完整字节,大小为8倍。而是将其存储为包含单个BytesList
的{{1}}。