概述
创建HDF5数据集必须先后使用h5create h5write命令
h5create官方链接
h5write官方链接
我创造的数据集大小是256x256x3x50000
每个256x256x3是RGB图片样本。
问题
如果在matlab里将RGB三维矩阵存成JPG,大小只有6KB
但是我把三维矩阵存入到HDF5中,大小竟达到200+KB
全部存取完大小达到200x50000=10GB,这对于我成万计的样本量是万万不能接受的。
解决
感谢链接的启发。
可以在h5create中加入压缩等级(0~9),采用gzip压缩。
h5create(filename,'/X',[3 256 256 Inf],'ChunkSize',[3 256 256 1],'Deflate',8);
这样单样本(算上其他附加标签)的大小就被压缩至9KB,达到期望大小。
解决完问题后才想起来,其实jpg也是采用了压缩算法才会把数据量变小的。如果h5create中未压缩,将会把样本中大量255值原封不动存入,自然会导致HDF5文件大小增大。