本文要做的是如何把cifar-10數(shù)據(jù)集創(chuàng)建并寫入hdf5文件中,以介紹python操作HDF類文件的常用方法
1、從官網(wǎng)下載數(shù)據(jù)集cifar-10:cifar官網(wǎng)(注意下載python版的)
下載完后要先解壓,不能直接上代碼;Linux下解壓:
tar -zxvf 壓縮包名.tar.gz # 適用于.tar.gz文件
unzip filename.zip # 適用于zip文件
然后才能上以下代碼來讀取數(shù)據(jù)文件:
import cPickle as pickle
def unpickle(file):
fo = open(file, 'rb')
dict = pickle.load(fo)
fo.close()
return dict['data'], dict['labels']
# 這樣就可以讀取每個batch的數(shù)據(jù)了,一個batch包含10000個樣本以及對應的標簽,從batch_1到5是5萬個訓練樣本,還有個test_batch是一萬個測試樣本以及對應標簽;
假設我對cifar處理后得到三個文件分別為‘cifar_rc_32.npy’,‘cifar_rc_64.npy’,‘cifar_rc_128.npy’三個文件,要創(chuàng)建或?qū)懭搿甤ifar.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') # 如果沒有會創(chuàng)建,有的話會覆蓋式寫入
#先要創(chuàng)建組,我一開始因為沒有創(chuàng)建組group導致后來的操作會有麻煩,所以建議先創(chuàng)建組:
f.create_group('data')
dataset = f['group'].create_dataset('rc_32',data=rc_32)
dataset.attrs['prob_hh'] = property_value # 還可以給數(shù)據(jù)集對象添加屬性描述.
f['group'].create_dataset('rc_64',data=rc_64)
f['group'].create_dataset('rc_128',data=rc_128)
# 這樣就在group ‘data’下創(chuàng)建了三個數(shù)據(jù)集了。
# 寫入數(shù)據(jù)集還可以有一下操作:
# 準備待寫入數(shù)據(jù):
data = np.arange(10000).reshape(100,100)
# 寫入數(shù)據(jù):
f['data'] = data
label = np.arange(10000)
f['label/resnet/rc_128'] = label
# 這樣也可以創(chuàng)建數(shù)據(jù)集
?其實還有一種快速寫入hdf5文件的方式就是如果你創(chuàng)建過組可以用更方面的方式寫入數(shù)據(jù)到原來不存在的目錄:
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是數(shù)據(jù)。?
group下面還可以創(chuàng)建group,dataset,是嵌套的,創(chuàng)建group就像創(chuàng)建目錄一樣;創(chuàng)建dataset就像在目錄下寫入有具體名字的數(shù)據(jù)一樣。
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
