引:在使用TensorFlow,学习回调函数时,使用了ModelCheckpoint(),产生了.h5的文件。为了了解回调函数产生的信息,需要了解HDF5的相关内容,以及在python中的使用与相关问题解决。
文中一些叙述为了方便初次接触者理解,表述并不严谨,仅供简单参考。
初次见面
HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式,文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一个HDF5可以看做一个高度整合的文件夹,其内部可存放不同类型的数据。
在Python中操纵HDF5文件的方式主要有两种
是利用pandas中内建的一系列HDF5文件操作相关的方法,来完成相关操作。
二是利用h5py模块来完成Python原生数据结构与HDF5格式的转化
本篇主要介绍hdf5的基础内容和对应模块使用的快速入门。
初遇时的差池
一段小插曲
HDF是HDF(Hierarchical Data File)是美国国家高级计算应用中心(National Center for Supercomputing Application,NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式 。阅读的文档中提到了到国家卫星气象中心(NSMC)曾经发布过一份《HDF5.0 使用简介》,抱着些许迷信权威的心态阅读后发现它涉及的信息就我目前来说价值不大,其中主要有讲HDF5文件的组织,API,创建,数据集数据空间,组群,属性等等,内容大而全,但似乎这篇教材发布的相对较早,所以产生了一定的局限性并且内部的相关URL都失效了,它本身也在国家卫星气象中心的官网上没有什么存在的痕迹。相关的API只涉及了C和FORTRAN的外壳包装函数。对于像我这样在使用python且第一次接触HDF5的使用者并不友好,索性只读了开头的基础内容并建立了更详细的认知后就放弃了继续阅读的打算。
相识
首先从hdf5文件讲起。
HDF5文件具有两类存储对象,dataset和group。dataset是类似于数组的数据集,而group是类似文件夹一样的容器,存放dataset和其他group。
HDF本意即是层次数据格式,所以就其存储结构来说是类似与POSIX风格的。其实现的方式就是group。每层都用’/'分隔。我们创建的file object其实也可以看作一个group,是一个root group,其余的groups可以称为subgroups。
dataset与numpy中的array相似,比如都具有shape、dtype、以及一些切片操作等。虽然与Numpy的数组在接口上很相近,但是支持更多对外透明的存储特征,如数据压缩,误差检测,分块传输。
HDF5的一个很好的featu