当前位置: 首页 > news >正文

【神经网络与深度学习】什么是HDF

什么是HDF

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

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

为什么创建HDF

科学家通常在不同的机器上生成和处理数据文件。各式各样的软件包被用来多种处理文件,同时也与其他使用不同机器和软件的人共享数据文件。在一组文件里,这些文件也许包含不同类型的信息。这些不同类型的信息混合结构在一个文件里的意义与在另一个文件里的意义不同。这些文件也许概念上有关但在实质上却不同。例如,一些数据(符号、数字和图形)也许在不同文件中被分开,但在程序中却是在一起。有些数据也许在科学家的概念中是相关的,但实际上并不存在物理联系。HDF 通过提供一个一般目的的文件结构来表明这些问题:

  • HDF 为程序提供一个从数据文件本身获取数据(数据元)信息的机制,而不是其他来源。
  • 使用户把不同来源的混合数据存放在一个文件里,同时也可以把数据和与之相关的信息存放在不同的文件里,即便是用同一个应用程序也可以处理这些文件。
  • 常用的许多类型数据集,如光栅图像和多维数组,对其格式和描述实行标准化。
  • 支持使用标准的数据格式,因为所有的机器和程序都会生成一个有明确含义的数据文件。HDF实质上能被用于任何类型的数据。

HDF 的6 种基本数据类型

HDF 提供6 种基本数据类型:光栅图像(Raster Image),调色板(Palette ),科学数据集(Scientific Data Set),注解(Annotation),虚拟数据(Vdata)和虚拟组(Vgroup)。

HDF 文件格式

最好的办法是把HDF 文件看成为一本有表格内容的多章节书。HDF 文件是“数据书”,其中每章都包含一个不同类型的数据内容。正如书籍用一个目录表列出它的章节一样,HDF文件用“data index”(数据索引)列出其数据内容

HDF 文件结构包括一个file id(文件号)、至少一个 data descriptor (数据描述符)、没有或多个 data element(数据内容)数据内容。

file id (文件号)是一个 32 比特的值,最多占用 HDF 文件的头4 个字节。通过读取这个值,应用程序就知道此文件是否是一个HDF 文件

Data descriptor block(数据块描述符)包含一个数据描述符数值。所有的数据描述符都是12 字节长,包含 4 个域,即一个 16比特长的标签,一个 16比特的引用字,一个 32比特的数据偏移量和一个32 比特的数据长度。

tag(标记)是数据描述符域,表示存于相应数据内容的数据类型。例如 306 是光栅图像对象的识别符。

Reference number(引用号)是一个 16 比特无符号整型数。HDF 文件中的每一个对象,由HDF库和数据描述符中的标签确定一个唯一的引用字。在引用字确定的数据对象期间,标签和引用字不能改变。标签和引用字的结合可以唯一确定文件中对应的数据对象。

引用字没有必要连续指定,因此,在一个具有相同标签区分对象的方法后,不能假设引用字的值有任何意义。有时应用程序员也会发现在他们的程序中把一些另外的信息加到引用字中是很方便的,但必须强调的是,HDF 库本身并不识别这些含义。

Data offset field(数据偏移量)是一个 32 比特无符号整型字。通过存储文件开始时的字节数和数据内容开始时的字节数,指明文件中数据内容的位置。

Length field (长度域)是一个 32 比特无符号整型字。它表示整个数据内容的字节大小。数据内容增加,其长度也要增加。

Data element(数据成分)是数据对象的原始数据部分,包含每个象素的值。

HDF4和HDF5

值得注意的是,本文所介绍的信息都是关于HDF4 的。新一代的HDF5 是由NCSA 于1998年发布。NCSA 支持HDF4 并还将继续支持几年(细节如下)。HDF5 被设计为改善HDF4的一些局限性。HDF4 的某些局限性有:

  • 单个文件不能存放多于20000 个对象,单个文件大小也不能大于 2G字节。
  • 数据模式的兼容性不够好,有过多的对象类型,数据类型太严格。
  • 库函数过时和过于复杂,不能有效地支持并行口的I/O,很难用于线程应用中。

HDF5 包含如下的改进:

  • 被设计为一种新的格式用来改进HDF4.x,特别是每个文件可以存储更大的文件和更多的对象。
  • 数据模式更简洁、更全面,它包含两个基本结构:多维数组记录结构,和分组结构。
  • 更简洁、更利于工程库和应用编程接口,支持并行 I/O,线程和其他一些现代系统和应用要求。

参考

HDF官网

转载于:https://www.cnblogs.com/huty/p/8517904.html

相关文章:

  • java内存模型分析
  • 博客园站内短消息XSS
  • Python 课件笔记
  • java I/O使用总结
  • Symbol not found for architecture arm64 错误
  • java socket编程总结
  • 抉择
  • 浅出Java Socket 编程
  • Chapter 1 First Sight——36
  • Mysql笔记【3】-SQL约束
  • Comparable与Comparator的区别
  • java异常分类
  • [51nod1610]路径计数
  • Effective Java 笔记(一)
  • Linux 下配置 Python IDE——Emacs
  • 【Linux系统编程】快速查找errno错误码信息
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Linux后台研发超实用命令总结
  • Linux链接文件
  • Python学习笔记 字符串拼接
  • ucore操作系统实验笔记 - 重新理解中断
  • webpack+react项目初体验——记录我的webpack环境配置
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 前端技术周刊 2019-02-11 Serverless
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 跳前端坑前,先看看这个!!
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 中文输入法与React文本输入框的问题与解决方案
  • ​如何在iOS手机上查看应用日志
  • $().each和$.each的区别
  • (11)MSP430F5529 定时器B
  • (arch)linux 转换文件编码格式
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)docker:Dockerfile构建容器运行jar包
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)Android布局类型(线性布局LinearLayout)
  • (原創) 物件導向與老子思想 (OO)
  • *p++,*(p++),*++p,(*p)++区别?
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Core 版本不支持的问题
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .net连接oracle数据库
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @DataRedisTest测试redis从未如此丝滑
  • @RequestBody的使用
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @selector(..)警告提示
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ NOI 2001 ] 食物链
  • [20150629]简单的加密连接.txt
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [Android]RecyclerView添加HeaderView出现宽度问题