無法在Numpy 中分配大數組:了解錯誤及其解決方法
面臨「無法分配具有形狀的數組」的問題嘗試創建大型Numpy陣列時出現的「和資料類型」錯誤可歸因於過度使用處理模式system.
記憶體過量使用處理
在Linux 系統中,記憶體過量使用處理決定了系統如何管理記憶體分配。過量使用模式 0(預設值)限制過多的記憶體請求,以確保系統穩定性。當達到過量使用限制時,分配記憶體可能會失敗。
大數組分配的情況
在Numpy 中分配大數組時,如提供的示例中所示如果形狀為(156816, 36, 53806),則所需的記憶體大小明顯超過可用的實體記憶體。在給定的情況下,大約為 282 GB。
過量使用記憶體模式
此錯誤的解決方案在於透過設定 / 啟用「始終過量使用」模式proc/sys/vm/overcommit_memory 為 1。這會覆蓋預設的啟發式方法並允許記憶體分配,而不管可用的實體記憶體如何
稀疏數組和記憶體分配
需要注意的是,啟用過度使用模式不會立即為整個數組分配實體記憶體。相反,記憶體是在頁面寫入時分配的。這意味著,如果數組是稀疏的,且大多數為零元素,則實際記憶體使用量將明顯低於理論大小。
注意事項
雖然啟用過度使用模式可以解決分配問題,但應謹慎使用。如果超出可用資源,過多的記憶體分配可能會導致系統效能下降。此外,必須將過量使用設定與實際資源可用性相匹配,以避免潛在的系統不穩定。
以上是為什麼我無法分配大型 Numpy 數組,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!