簡體   English   中英

以更少的內存存儲/加載巨大的numpy數組

[英]Storing/Loading huge numpy array with less memory

我有一個形狀為numpy的數組(20000、600、768)。 我需要存儲它,因此以后可以將其加載回我的代碼中。 主要問題是將其重新加載時的內存使用情況。 我只有16GB的RAM。

例如,我嘗試了泡菜。 當它加載時,我幾乎沒有剩余的內存來做其他事情。 特別是訓練模型。

我嘗試使用hdf5(h5py)進行寫入和加載。 只是一小部分(1000、600、768)。 但是似乎它“吃掉”了更多的內存。

也嘗試過csv。。那只是一個禁忌。 花費太多時間來寫入數據。

我將對如何存儲陣列的任何建議表示感謝,這樣當我將其加載回該陣列時不會占用太多內存。

PS我存儲的數據是文本的矢量表示,后來用於訓練模型。

我認為您可以做很多事情。

首先,您可以更改數據格式以不同的方式進行存儲:

  • 在輔助存儲器中的文件中以迭代方式讀取(將python對象轉儲到輔助存儲器中效率不高。您需要找到更好的格式。例如,文本文件中的行是矩陣的行)
  • 或在數據庫中。 始終以迭代方式使數據可讀。

其次,也是最重要的是, 您需要更改算法 如果無法將所有數據容納在內存中,則需要使用其他類型的方法,其中使用批處理數據而不是所有數據。

例如,對於機器學習,有很多方法可以使用大量數據對模型進行增量更新

第三,有些方法可以減少訓練集的維數 例如使用PCA,功能選擇等方法

暫無
暫無

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

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