簡體   English   中英

從/向磁盤保存/加載數據時出現內存錯誤泡菜轉儲

[英]Memory error pickle dump while saving/loading data from/into disk

我有一個包含 40,000 個示例的dataset=(40.000,2048) 經過一個過程,我想有效地存儲和加載數據集。 數據集采用 numpy 格式

我使用pickle來存儲這個dataset但它需要時間來存儲和更多的時間來加載它。 我什至出現內存錯誤。

我嘗試將dataset拆分為幾個樣本,如下所示:

with open('dataset_10000.sav', 'wb') as handle:
    pickle.dump(train_frames[:10000], handle, protocol=pickle.HIGHEST_PROTOCOL)

with open('dataset_20000.sav', 'wb') as handle:
    pickle.dump(train_frames[10000:20000], handle, protocol=pickle.HIGHEST_PROTOCOL)

with open('dataset_30000.sav', 'wb') as handle:
    pickle.dump(train_frames[20000:30000], handle, protocol=pickle.HIGHEST_PROTOCOL)

with open('dataset_35000.sav', 'wb') as handle:
    pickle.dump(train_frames[30000:35000], handle, protocol=pickle.HIGHEST_PROTOCOL)

with open('dataset_40000.sav', 'wb') as handle:
    pickle.dump(train_frames[35000:], handle, protocol=pickle.HIGHEST_PROTOCOL)

但是我得到了一個內存錯誤並且它太重了。

從/向磁盤保存/加載如此龐大的數據的最佳/優化方法是什么?

對於numpy.ndarray對象,使用numpy.save無論如何你應該更喜歡pickle ,因為它更便攜。它應該更快並且在序列化過程中需要更少的內存。

然后你可以使用numpy.load加載它,它甚至提供了一個 memmap 選項,允許你使用大於內存的數組。

暫無
暫無

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

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