深度学习---之hdf5,lmdb

来源:互联网 发布:mysql 5.1.55.tar.gz 编辑:程序博客网 时间:2024/06/05 12:06

转载:http://blog.csdn.net/mrhiuser/article/details/69603826

转载:http://blog.csdn.net/zykimmy/article/details/52950441


1、HDF5介绍

HDF 是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF 是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。HDF 可以表示出科学数据存储和分布的许多必要条件。HDF 被设计为:

  • 自述性:对于一个HDF 文件里的每一个数据对象,有关于该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF 允许应用程序解释HDF文件的结构和内容。
  • 通用性:许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF 数据结构,符号、数字和图形数据可以同时存储在一个HDF 文件里。
  • 灵活性:HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据放到多个HDF 文件里。
  • 扩展性:HDF极易容纳将来新增加的数据模式,容易与其他标准格式兼容。
  • 跨平台性:HDF 是一个与平台无关的文件格式。HDF 文件无需任何转换就可以在不同平台上使用。

(官方介绍:https://support.hdfgroup.org/HDF5/whatishdf5.html)

2、HDF5的文件组织

一个HDF5文件就是一个由两种基本数据对象(groups and datasets)存放多种科学数据的容器:

  • HDF5 group: 包含0个或多个HDF5对象以及支持元数据(metadata)的一个群组结构



  • HDF5 dataset: 数据元素的一个多维数组以及支持元数据(metadata)

3、HDF5软件下载

https://support.hdfgroup.org/HDF5/release/obtain518.html

4、目录结构

下载后解压


  • bin目录是已经编译的好的可执行文件。例如:bin目录下的h5dump可以查看h5文件。
  • include目录是编写代码是需要包含的头文件。
  • lib目录是编译代码时需要连接的库。
  • share目录中是example。

在Matlab中的使用:

注:因为matlab是列优先存储,而hdf5是行优先存储,所以你必须把矩阵在Matlab里转置一下,虽然matlab还是列优先存储,但是转置之后对于原矩阵相当于行优先存储了,这时候在写入到hdf5中。


hdf5和lmdb的对比:

LMDB格式的优点:
- 基于文件映射IO(memory-mapped),数据速率更好
- 对大规模数据集更有效.

HDF5的特点:
- 易于读取
- 类似于mat数据,但数据压缩性能更强
- 需要全部读进内存里,故HDF5文件大小不能超过内存,可以分成多个HDF5文件,将HDF5子文件路径写入txt中.
- I/O速率不如LMDB.

而且hdf5,可以应用于多标签的任务上,比如给一张猫,它的标签不仅仅只包括它是猫这个标签,还包括,它很胖,它很大,这种标签,就使用hdf5比较合适。而lmdb是一对一的,键值对数据库,一个图片只对应一个标签。


阅读全文
0 0
原创粉丝点击