PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] 請教hdf5讀取速度問題
作者:
kakar0to
(Poker Face)
2021-05-14 15:03:38
請教大家一下,我有一個large size的hdf5檔案.
檔案裡面存放一個large matrix, shape是(15579,81173)
我需要從這個matrix的15579個row裡面, 隨機取出128個row出來給AI model使用.
現在遇到的問題是讀取速度很慢, 取出128個row大概要花10秒以上的時間.
想請問大家有更快讀取的作法嗎?
感謝.
以下附上程式碼.
import h5py
import numpy as np
h5 = h5py.File('file.h5', 'r')
matrix = h5['matrix/data']
random_list = np.random.randint(matrix.shape[0], size=128)
rows = matrix[random_list,:]
感謝大家回答.
作者:
DavisX
2021-05-14 16:43:00
資料太大會慢正常
作者:
kokolotl
(nooooooooooo)
2021-05-14 19:56:00
攤平塞lmdb呢
作者:
DavisX
2021-05-14 20:56:00
flatten完應該會快一點
作者:
kakar0to
(Poker Face)
2021-05-15 10:41:00
是否有辦法知道matrix在file的offset?我可以用c code去讀出這個matrix, 可能會比較快用c的fread與fseek去讀我想要的row
作者:
a0956072892
(henk2525)
2021-05-16 19:22:00
以前有用過hdf5 chunk_shape這個參數會影響讀取速度在存hdf5時試試用(1,81173)去切
作者:
lycantrope
(阿寬)
2021-05-18 10:36:00
儲存成15579 * (1,81173)的hdf5
作者:
kakar0to
(Poker Face)
2021-05-21 22:20:00
有查到一個方法還不錯 跟大家分享一下
https://gist.github.com/maartenbreddels/09e1da795771
51e5f7fec660c209f06e他是先把matrix儲存成dataset, dataset可以知道file的offset, 再透過mmap mapping整個file到記憶體.再來就可以直接存取matrix了, 速度相當快.另外其實有offset之後, 也可以透過c語言的fseek,fread同樣也可以快速存取matrix
作者:
lycantrope
(阿寬)
2021-05-24 12:16:00
喔哦,感謝分享!
繼續閱讀
[問題] selenium 開新分頁 使用threading 控制
kiey
[問題] linebot圖片接收問題
jack155861
[問題] 在目標高負載下的請求失敗問題
touge
[問題] 使用pip檢視,更新和解除安裝套件(已解決)
s4340392
[問題] 新手問個pandas修改問題
W5566DerD1
Re: [問題] pyptt遇到的問題已詢問作者但無解
ddavid
[問題] pyptt遇到的問題已詢問作者但無解
chin2049
[問題] 有關argument
freeedward
[問題] (已解決)跪求大神們解答,應該是變數的值互換的題
knlove1220
[問題] 用 selenium 開啟網頁讀 socket
kiey
Links
booklink
Contact Us: admin [ a t ] ucptt.com