利用h5py加速数据集读取

编程入门 行业动态 更新时间:2024-10-21 11:59:43

利用h5py加速<a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据集读取"/>

利用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

文档

/

核心概念

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)

更多推荐

利用h5py加速数据集读取

本文发布于:2023-11-16 04:24:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1612644.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   h5py

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!