Error: cannot allocate vector of size 88.1 Mb問題
這幾天訓練模型運行代碼的時候,老是提示我說:Error: cannot allocate vector of size 88.1 Mb,只知道分配空間不足。
下面是查資料看到的一些回答:
一、這個是R的特點,有幾個解決方法:
1.升級到R3.3.0及以上版本,對內存的管理和矩陣計算好太多。在R3.2.5上能死機的計算,在R3.3.0以上就能運行很好。
2.加載一些R語言磁盤緩存包,搜一搜吧
3.寫代碼的時候適當加一些清理內存的命令。
4.應該跑多線程了吧。
5.加內存作用有限。在R3.2.5上能把服務器跑死機,服務器是44核,512G內存。優化一下代碼很有必要。
二、有的時候加內存條也不能解決大數據量多的需求,采用parallel計算策略吧,如果數據一次性讀入也不行,可配合filematrix包,分次從硬盤讀數據,不過這會慢很多。
三、R裏面找到那個參數,有個地方是改最大分配內存的,在Preference之類的地方。
四、下載一個Package叫bigmemory。裏面重新為大的數據集構建了類,在處理大數據集的功能上(包括幾十GB)基本上是最前沿的。
鏈接為cran.r-project.org/web/packages/bigmemory/
五、bigmemory包是可以的。另外還提供了另外兩種選擇,mapReduce和RHIPE(使用Hadoop),也可以處理大數據集。
六、大神指導(http://bbs.pinggu.org/thread-3682816-1-1.html),cannot allocate vector就是典型的數據太大讀不了
方法有三
一、升級硬件
二、改進算法
三、修改操作系統分配給R的內存上限, memory.size(T)查看已分配內存
memory.size(F)查看已使用內存
memory.limit()查看內存上限
object.size()看每個變量占多大內存。
memory.size()查看現在的work space的內存使用
memory.limit()查看系統規定的內存使用上限。
如果現在的內存上限不夠用,可以通過memory.limit(newLimit)更改到一個新的上限。註意,在32位的R中,封頂上限為4G,無法在一個程序上使用超過4G (數位上限)。這種時候,可以考慮使用64位的版本。
詳細可參考此篇,非常棒https://blog.csdn.net/sinat_26917383/article/details/51114265
如果遇到這個問題,大家可以對應試試解決方案,方法還不錯哦~
Error: cannot allocate vector of size 88.1 Mb問題