簡體   English   中英

為具有內存限制的神經網絡訓練高效創建 HDF5 圖像數據集

[英]Efficiently Create HDF5 Image Dataset for Neural Network Training with Memory Limitations

我有大的圖像數據集來訓練 CNN。 由於我無法將所有圖像加載到我的 RAM 中,我計划將它們轉儲到 HDF5 文件中(使用 h5py),然后按照建議批量迭代該集合

為 PyTorch 使用大型數據集的最有效方法?

我嘗試為位於同一組中的每張圖片創建自己的數據集,這非常快。 但我無法想出遍歷組中的所有數據集,除了通過其名稱訪問該集。 作為替代方案,我嘗試通過擴展其形狀將所有圖像迭代地放入一個數據集中,根據

如何使用 h5py 將數據附加到 hdf5 文件中的一個特定數據集

使用 h5py 增量寫入 hdf5

但這很慢。 有沒有更快的方法來創建一個 HDF5 數據集來迭代?

我意識到這是一個老問題,但我發現了一個關於這個主題的非常有用的資源,我想分享:

https://www.oreilly.com/library/view/python-and-hdf5/9781491944981/ch04.html

基本上,hdf5(啟用了塊)就像一個小文件系統。 它將數據存儲在分散在整個內存中的塊中。 因此,就像文件系統一樣,它受益於局部性。 如果塊的形狀與您嘗試訪問的數組部分的形狀相同,則讀取/寫入速度會很快。 如果您要查找的數據分散在多個塊中,則訪問速度會很慢。

因此,在對圖像訓練 NN 的情況下,您可能必須將圖像設為標准尺寸。 在創建數據集時設置chunks=(1,) + image_shape ,或者甚至更好, chunks=(batch_size,) + image_shape ,讀/寫會快很多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM