python h5py 操作 —— 以cifar数据集为例

本文要做的是如何把cifar-10数据集创建并写入hdf5文件中,以介绍python操作HDF类文件的常用方法

1、从官网下载数据集cifar-10:cifar官网(注意下载python版的)

下载完后要先解压,不能直接上代码;Linux下解压:

tar -zxvf 压缩包名.tar.gz  # 适用于.tar.gz文件
unzip filename.zip # 适用于zip文件

解压后看到下面情况:

然后才能上以下代码来读取数据文件:

import cPickle as pickle

def unpickle(file):
    fo = open(file, 'rb')
    dict = pickle.load(fo)
    fo.close()
    return dict['data'], dict['labels']

# 这样就可以读取每个batch的数据了,一个batch包含10000个样本以及对应的标签,从batch_1到5是5万个训练样本,还有个test_batch是一万个测试样本以及对应标签;

假设我对cifar处理后得到三个文件分别为‘cifar_rc_32.npy’,‘cifar_rc_64.npy’,‘cifar_rc_128.npy’三个文件,要创建或写入‘cifar.hdf5’:

import h5py
import numpy as np

rc_32 = np.load('cifar_rc_32.npy')
rc_64 = np.load('cifar_rc_64.npy')
rc_128 = np.load('cifar_rc_128.npy')

f = h5py.File('cifar.hdf5','w') # 如果没有会创建,有的话会覆盖式写入
#先要创建组,我一开始因为没有创建组group导致后来的操作会有麻烦,所以建议先创建组:
f.create_group('data')
dataset = f['group'].create_dataset('rc_32',data=rc_32)
dataset.attrs['prob_hh'] = property_value # 还可以给数据集对象添加属性描述.

f['group'].create_dataset('rc_64',data=rc_64)
f['group'].create_dataset('rc_128',data=rc_128)
# 这样就在group ‘data’下创建了三个数据集了。

# 写入数据集还可以有一下操作:
# 准备待写入数据:
data = np.arange(10000).reshape(100,100)
# 写入数据:
f['data'] = data

label = np.arange(10000)
f['label/resnet/rc_128'] = label
# 这样也可以创建数据集

 其实还有一种快速写入hdf5文件的方式就是如果你创建过组可以用更方面的方式写入数据到原来不存在的目录:

f['labels/resnet1/rc_32']  = rc_32
f['labels/resnet1/rc_64'] = rc_64
f['labels/resnet1/rc_128'] = rc_128

rc_32、rc_64、rc_128是数据。 

group下面还可以创建group,dataset,是嵌套的,创建group就像创建目录一样;创建dataset就像在目录下写入有具体名字的数据一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值