我有一個學習人工神經網絡的程序,它需要一個二維numpy陣列作爲訓練數據。我想要使用的數據數組大小約爲300,000 x 400浮點數。我不能在這裏使用分塊,因爲我正在使用的庫(DeepLearningTutorials)將一個numpy數組作爲訓練數據。僅使用1.6 GB RAM的Python進程Ubuntu 32位Numpy陣列
當這個過程(我在系統監視器中檢查到)RAM的使用量大約爲1.6Gb時,代碼顯示MemoryError,但是我的總RAM爲8GB。此外,該系統是Ubuntu-12.04 32位。
我檢查了其他類似問題的答案,但在某處它說沒有什麼比如將內存分配給你的python程序,而某些地方的答案並不清楚如何增加進程內存。
一個有趣的事情是我在不同的機器上運行相同的代碼,它可以採取幾乎1,500,000 x 400浮點數的numpy數組沒有任何問題。除了另一臺機器是64位,這個是32位的,基本的配置是相似的。
有人請給出一些理論上的答案,爲什麼有這麼多的差異,或者這是我的問題的唯一原因?
在32位上,Windows和Linux都不會給4GB任何進程,2/3GB更像。在SO上查看其他問題,瞭解確切的數字和技巧,將其推到最大。 4GB是機器總地址空間的大小。另請參閱[PAE](http://en.wikipedia.org/wiki/Physical_Address_Extension)。 IMO 2 GB /進程是最大的問題(或缺乏PAE的內核/硬件支持) – fvu
我同意。我只是說4GB是理論上的限制... – jh314