利用h5py加速数据集读取

直接使用:

def store_in_h5(images, output_filename):with h5py.File(output_filename, 'w') as hf:data_group = hf.create_group('data')label_group = hf.create_group('label')for i, (data_patches, label_patches) in enumerate(images):for j, (data, label) in enumerate(zip(data_patches, label_patches)):if torch.is_tensor(data):data = data.cpu().numpy()if torch.is_tensor(label):label = label.cpu().numpy()data_group.create_dataset(f'data_{i}_{j}', data=data, compression="gzip", compression_opts=9)label_group.create_dataset(f'label_{i}_{j}', data=label, compression="gzip", compression_opts=9)

H5PY

文档

https://docs.h5py.org/en/stable/

核心概念

HDF5文件是两种对象的容器:数据集(datasets),它们是类似数组的数据集合,以及组(groups),它们是类似文件夹的容器,用于存放数据集和其他组。在使用h5py时,需要记住的最基本的事情是:

组的工作方式类似于字典,数据集的工作方式类似于NumPy数组

假设有人发送给你一个HDF5文件,名为mytestfile.hdf5。(要创建此文件,请参见附录:创建文件。)你需要做的第一件事是打开该文件以供读取:

python
Copy

import h5py
f = h5py.File('mytestfile.hdf5', 'r')

File对象是你的起点。这个文件中存储了什么?记住,h5py.File的行为类似于Python字典,因此我们可以检查键:

python
Copy

list(f.keys())
['mydataset']

根据我们的观察,在该文件中有一个名为mydataset的数据集。让我们将数据集作为一个Dataset对象进行检查:

python
Copy
dset = f[‘mydataset’]
我们获得的对象不是一个数组,而是一个HDF5数据集。与NumPy数组一样,数据集具有形状(shape)和数据类型(dtype):

python
Copy

dset.shape
(100,)
dset.dtype
dtype('int32')

数据集还支持数组样式的切片操作。以下是如何从文件中的数据集读取和写入数据的示例:

python
Copy

dset[...] = np.arange(100)
dset[0]
0
dset[10]
10
dset[0:100:10]
array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])

更多信息,请参阅文件对象(File Objects)和数据集(Datasets)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按键精灵中的函数使用

1. 命令名称:Function 函数 ; 2. 命令功能:定义一个函数 ; 3. 语法格式: Function 函数名([自定义参数1, 自定义参数2, ...]) 执行语句 [函数名返回值]End Function 4. 参数说明: 函…

什么是4A架构

4A架构通常在软件工程或系统架构领域中提到,特别是与企业级应用和系统设计相关。但是,“4A”这个术语可能有不同的解释,具体取决于上下文。以下是几种可能的含义: 身份认证(Authentication)、授权&#xff…

飞书开发学习笔记(二)-云文档简单开发练习

飞书开发学习笔记(二)-云文档简单开发练习 一.云文档飞书开发环境API 首先还是进入开放平台 飞书开放平台:https://open.feishu.cn/app?langzh-CN 云文档相关API都在“云文档”目录中,之下又有"云空间",“文档”,“电子表格”&a…

CSS的概念和基本用法

CSS的作用: 页面美化和布局控制。 1.概念: Cascading Style Sheets 层叠样式表。 层叠:多个样式可以作用在同一个html的元素上,同时生效。 2.好处: (1).功能强大 (2).将内容展示和样式控制分离 * 降低耦合度&#xf…

Java选择与循环

1.选择 前言:什么是选择呢?在我们的人生中处处面临着选择,比如说在学校你可以选择玩,摆烂,当然也可以选择努力写代码,刷题。什么样的选择就会面临什么样的结果。 其实程序和人生一样:顺序中夹杂…

简单代理模式

代理模式 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 结构图如下: ISubject接口,定义了RealSubject和Proxy的共用接口方法,这样就可以在任何使用RealSubject的地方使用Proxy代理。 ISubject接口 public…

sed续与awk(粗糙版)

s:sed d 替换功能,改 s:替换字符串 格式是:sed -n s/需要替换的原内容/替换后的内容/(ps:数字是替换每行中的第几个,g代表是全内容替换)p 替换的文件地址 例如: c:整行替换 y:字符替换,替换前后的字符串…

【洛谷 P5143】攀爬者 题解(结构体排序)

攀爬者 题目背景 HKE 考完 GDOI 之后跟他的神犇小伙伴们一起去爬山。 题目描述 他在地形图上标记了 N N N 个点,每个点 P i P_i Pi​ 都有一个坐标 ( x i , y i , z i ) (x_i,y_i,z_i) (xi​,yi​,zi​)。所有点对中,高度值 z z z 不会相等。HKE…

idea使用lombok编译问题

idea编译报错问题如下: java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled.Your processor is: com.sun.proxy.$Proxy26Lombok supports: OpenJDK javac, ECJ解决方案:在idea配置中File->Setti…

挑战100天 AI In LeetCode Day02(1)

挑战100天 AI In LeetCode Day02(1) 一、LeetCode介绍二、LeetCode 热题 HOT 100-32.1 题目2.2 题解 三、面试经典 150 题-33.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序…

IOS自带的OCR识别功能

一、识别身份证 interface IDCardScanViewController () <AVCaptureMetadataOutputObjectsDelegate> property (nonatomic, strong) AVCaptureSession *captureSession; end implementation IDCardScanViewController - (void)viewDidLoad { [super viewDidLoad…

【GitHub】Watch、Star、Fork、Follow 有什么区别?

目录 一、前言二、区别1. Watch2. Star3. Fork4. Follow 一、前言 GitHub 是最受欢迎的代码托管平台之一&#xff0c;拥有大量的开源代码可供学习。 Github 中也有类似 “点赞”、“收藏”、“加关注” 的功能。 下面介绍下&#xff0c;GitHub 中 Watch、Star、Fork、Follow 有…

c语言进阶部分详解(《高质量C-C++编程》经典例题讲解及柔性数组)

上篇文章我介绍了介绍动态内存管理 的相关内容&#xff1a;c语言进阶部分详解&#xff08;详细解析动态内存管理&#xff09;-CSDN博客 各种源码大家可以去我的github主页进行查找&#xff1a;唔姆/比特学习过程2 (gitee.com) 今天便接“上回书所言”&#xff0c;来介绍《高质…

聊一聊GPT——让我们的写作和翻译更高效

1 介绍 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer的语言生成模型&#xff0c;由OpenAI开发。它采用了无监督的预训练方式&#xff0c;通过处理大量的文本数据进行自我学习&#xff0c;从而提高其语言生成的能力。 GPT在自然语言…

Python采集数据代码示例

基本的爬虫程序的示例&#xff1a; typescript import * as request from request; // 信息 const proxyHost ; const proxyPort ; // 网站的 URL const url ; // 使用 request 库发起请求 request({ url, method: GET, proxy: { host: proxyHost…

Linux Vim撤销和恢复撤销快捷键

使用 Vim 编辑文件内容时&#xff0c;经常会有如下 2 种需求&#xff1a; 对文件内容做了修改之后&#xff0c;却发现整个修改过程是错误或者没有必要的&#xff0c;想将文件恢复到修改之前的样子。 将文件内容恢复之后&#xff0c;经过仔细考虑&#xff0c;又感觉还是刚才修改…

Symfony DomCrawler库

Symfony DomCrawler库是Symfony框架中的一个组件&#xff0c;用于解析HTML或XML文档&#xff0c;并提供了一种方便的方式来查询和操作文档中的元素。 使用DomCrawler&#xff0c;你可以&#xff1a; 加载HTML或XML文档&#xff0c;并创建一个Crawler对象。 使用CSS选择器或XP…

Spring 与 Spring Boot

什么是 Spring 可以理解 Spring 是一个框架。这个框架最早来源于在差不多的 20 年前的 2002 年。 在那个时候 Java 世界的开发还是以 EJB 为主&#xff0c;因为在这之前的大部分应用都会使用服务器客户端的应用模式。 其实这个模式在现在还是在使用的&#xff0c;例如 IBM 系统…

二十三种设计模式全面解析-深入解析桥接模式:解锁软件设计的灵活性

在软件开发中&#xff0c;我们经常面临需要处理多个不同维度变化的情况。这些变化可能涉及多个维度的组合&#xff0c;导致类的爆炸性增长和难以维护的代码。在这种情况下&#xff0c;桥接模式&#xff08;Bridge Pattern&#xff09;是一种强大的设计模式&#xff0c;能够帮助…