本文要做的是如何把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就像在目錄下寫入有具體名字的數據一樣。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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