栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

深度学习/机器学习读取数据大杀器——h5py

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度学习/机器学习读取数据大杀器——h5py

众所周知,在数据驱动的深度学习时代,数据读取无论在训练/测试环节还是在推断环节,都是比较耗时的。

如果这个任务你只执行一次的情况,那还好。如果今天运行结束,存储变量消失,改天还要再训练,那就是一件麻烦事。

如果老板没看出来还行,如果老板发现你是用这段时间在摸鱼,那就麻烦了。有没有什么好办法呢?

一种方法就是多进程,例:

from multiprocessing import Pool

pool = Pool(25)

for file in file_list:
    result.append(pool.apply_async(func, (file,)))
pool.close()
pool.join()

使用这种方法,一方面要求你的电脑性能高,另一方面其实读取速度也未必能尽如人意。

各种百度以及亲身体验,终于发现h5py是一款处理此问题的大杀器。

它的使用非常简单。

首先是安装:

pip install h5py
1.将数据保存成.h5格式

先按常规方法将数据读入变量:x_train, y_train;x_val, y_val。

def save_h5(path, data_x, data_y, flag):
    f = h5py.File(path, 'w')
    f.create_dataset(f"x_{flag}", data=data_x)
    f.create_dataset(f"y_{flag}", data=data_y)
    f.close()
    
h5_train='train.h5'    
h5_val='val.h5'   
 
save_h5(h5_train, x_train, y_train, "train")

save_h5(h5_val, x_val, y_val, "val")
2.读取.h5格式数据
def read_h5(path, key_data, key_label):
    x, y = None, None
    f = h5py.File(path, 'r')
    x = f[key_data][:]
    y = f[key_label][:]
    f.close()
    return x, y
x_train, y_train = read_h5(h5_train, 'x_train', 'y_train')
x_val, y_val = read_h5(h5_val, 'x_val', 'y_val')

这样就OK了。

测试了下,按通常的方法大致需要3000s的数据集,使用这种.h5格式读取只需要不到十秒,确实是相当惊喜的发现。

参考文献

[1] https://docs.h5py.org/en/stable/quick.html
[2] csdn:HDF5文件的介绍及python将大量图片文件存储为hdf5文件方便训练

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号