当前位置: 代码迷 >> 综合 >> matlab kmeans out of memory
  详细解决方案

matlab kmeans out of memory

热度:77   发布时间:2024-01-10 10:53:06.0

原来的机器是win xp,2G内存,Intel 2G双核CPU,跑KMeansCluster对20080x129的矩阵进行聚类时,目标聚类数设定为100,出现内存不够的提示。将目标聚类数试着往小调,当到30时可以跑通。

刚好要换新机器,于是等了几天,看看新机器上内存加大后能不能跑。

新机器是win 7,Intel 2Quad CPU,四核,4G内存。

问题依旧,还是只能接受30。从资源管理器观察,内存最多时消耗到2.5G。

看来不是加大物理内存就能解决的问题。应该是代码中某个步骤无法进行大量数据操作的问题了。

 

??? Out of memory. Type HELP MEMORY for your options.

Error in ==> repmat at 80
            B = A(:, ones(siz(2), 1));

Error in ==> DistMatrix at 29
      D{k}= repmat(B(:,k),1,hA);

Error in ==> kMeansCluster at 66
        d=DistMatrix(m,c);  % calculate objcets-centroid distances

Error in ==> ClusterFeatures at 30
[y,c,counters]=kMeansCluster(Temp,100,1);

 

 

关于out of memory,网上很多人也碰过这个问题,

mathworks.com上有详细的介绍,以及相应的策略。

http://www.mathworks.com/support/tech-notes/1100/1107.html

还有个中文的:

http://hi.baidu.com/zwwcqu/blog/item/2ee2261ef7b9eecfa6866943.html

 

按照这些去做,还是不能解决问题。看来还是得从代码着手,提高性能,降低内存占用。

 

在网上继续找kmeans代码的同时,发现原来matlab自带就有kmeans算法的实现,试了一下,内存占用很小,2分钟处理完了我的

20080*129矩阵。

  相关解决方案