第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

讀取大型 HDF5 文件

讀取大型 HDF5 文件

藍(lán)山帝景 2023-04-18 17:34:54
我剛開(kāi)始使用 HDF5 文件,我正在嘗試讀取形狀為(20670, 224, 224, 3). 每當(dāng)我嘗試將 hdf5 的結(jié)果存儲(chǔ)到列表或其他數(shù)據(jù)結(jié)構(gòu)中時(shí),要么花費(fèi)很長(zhǎng)時(shí)間以至于我中止執(zhí)行,要么導(dǎo)致我的計(jì)算機(jī)崩潰。我需要能夠讀取 3 組 hdf5 文件,使用它們的數(shù)據(jù),對(duì)其進(jìn)行操作,使用它來(lái)訓(xùn)練 CNN 模型并進(jìn)行預(yù)測(cè)。非常感謝閱讀和使用這些大型 HDF5 文件的任何幫助。目前這是我閱讀 hdf5 文件的方式:db = h5py.File(os.getcwd() + "/Results/Training_Dataset.hdf5") training_db = list(db['data'])
查看完整描述

3 回答

?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

崩潰可能意味著您的內(nèi)存不足,我會(huì)嘗試將數(shù)據(jù)分塊并一次處理其中的一小部分。如果您使用的是 pandas 方法read_hdf,則可以使用 iterator 和 chunksize 參數(shù)來(lái)控制分塊:


import pandas as pd

data_iter = pd.read_hdf('/tmp/test.hdf', key='test_key', iterator=True, chunksize=100)

for chunk in data_iter:

? ?#train cnn on chunk here

? ?print(chunk.shape)

請(qǐng)注意,這要求 hdf 為表格格式


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

您的內(nèi)存不足。讀取一個(gè)shape為(20670, 224, 224, 3)的數(shù)據(jù)集,會(huì)變成一個(gè)3.1G實(shí)體的列表。如果您讀取 3 個(gè)圖像集,則需要更多的 RAM。我假設(shè)這是圖像數(shù)據(jù)(可能是 20670 個(gè)形狀為 (224, 224, 3) 的圖像)?h5py如果是這樣,您可以使用和(Pytables)讀取切片中的數(shù)據(jù)tables。這會(huì)將數(shù)據(jù)作為 NumPy 數(shù)組返回,您可以直接使用它(無(wú)需操作成不同的數(shù)據(jù)結(jié)構(gòu))。


基本過(guò)程如下所示:


with h5py.File(os.getcwd() + "/Results/Training_Dataset.hdf5",'r') as db:

? ? ?training_db = db['data']

? ? ?# loop to get images 1 by 1

? ? ?for icnt in range(20670) :

? ? ? ? ?image_arr = training_db [icnt,:,:,:}


? ? ?# then do something with the image

您還可以通過(guò)將第一個(gè)索引設(shè)置為一個(gè)范圍(比如icnt:icnt+100)來(lái)讀取多個(gè)圖像,然后適當(dāng)?shù)靥幚硌h(huán)。


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

當(dāng)您的內(nèi)存不足時(shí),就會(huì)出現(xiàn)您的問(wèn)題。因此,在處理像您這樣的大型數(shù)據(jù)集時(shí),虛擬數(shù)據(jù)集會(huì)派上用場(chǎng)。虛擬數(shù)據(jù)集允許通過(guò)接口層將多個(gè)真實(shí)數(shù)據(jù)集映射到一個(gè)單一的、可切片的數(shù)據(jù)集。


我建議您一次從一個(gè)文件開(kāi)始。首先,創(chuàng)建一個(gè)現(xiàn)有數(shù)據(jù)的虛擬數(shù)據(jù)集文件,例如


with h5py.File(os.getcwd() + "/Results/Training_Dataset.hdf5", 'r') as db:

? ? ?data_shape = db['data'].shape

? ? ?layout = h5py.VirtualLayout(shape = (data_shape), dtype = np.uint8)

? ? ?vsource = h5py.VirtualSource(db['data'])

? ? ?with h5py.File(os.getcwd() + "/virtual_training_dataset.hdf5", 'w', libver = 'latest') as file:

? ? ? ? ?file.create_virtual_dataset('data', layout = layout, fillvalue = 0)

? ? ?

這將創(chuàng)建一個(gè)現(xiàn)有訓(xùn)練數(shù)據(jù)的虛擬數(shù)據(jù)集?,F(xiàn)在,如果你想操作你的數(shù)據(jù),你應(yīng)該以r+這樣的模式打開(kāi)你的文件


with h5py.File(os.getcwd() + "/virtual_training_dataset.hdf5", 'r+', libver = 'latest') as file:

? ? # Do whatever manipulation you want to do here

我想建議的另一件事是確保切片時(shí)的索引是int數(shù)據(jù)類(lèi)型的,否則會(huì)出錯(cuò)。


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 3 回答
  • 0 關(guān)注
  • 398 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)