大数据量按照数据增量形式写入h5文件

一.关于h5文件

h5文件是层次格式的第5代版本,用于存储科学数据的一种文件格式和库文件,由美国超级计算中心与应用中心研发的文件格式,用以存储和组织大规模数据.

一个h5文件中可以创建多个datasets

https://www.cnblogs.com/abella/p/11125466.html

二.遇到的问题

在训练模型时,需要读取两类上万张高分辨率图片并分块(一张1440*2560的图片划分为120个patch_size = 320*320的子块,将子块的Y通道保存在h5文件中),无法一次将所有数据读取然后存入h5文件,出现memory error

解决:

参考:https://www.jianshu.com/p/ae12525450e8

<1>在最开始创建h5文件及datasets

h5_file = h5py.File("my.h5", 'w')
dataset1 = h5_file.create_dataset('dataset1', shape = (120, 320,320), maxshape=(None, 320,320), dtype=np.float32)

dataset2 = h5_file.create_dataset('dataset2', shape = (120, 320,320), maxshape=(None, 320,320), dtype=np.float32)

dataset文件shape=(120, 320,320),一张图片被分为120个子块,每个子块大小为320*320,单通道,设置datasets最大值没有限制

<2>之后在原h5文件基础上进行添加

h5_file = h5py.File("my.h5", 'a')
dataset1 = h5_file['dataset1']
dataset2 = h5_file['dataset2']

选择“a”模式在原始文件上进行修改

<3>将处理后的数据写入h5文件datasets,并扩展datasets,为保存下一张图片的120个patches作准备

dataset1[num*120:num*120+120,:] = data1
dataset2[num*120:num*120+120,:] = data2

dataset1.resize((dataset1.shape[0]+120,320,320))
dataset2.resize((dataset2.shape[0]+120,320,320))

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值