mlpack:内存不足错误
mlpack : out of memory error
目前我尝试从可扩展的机器学习库mlpack中执行k-means聚类。
但当我在命令行执行bin/kmeans
时,我总是收到错误。
error: arma::memory::acquire(): out of memory
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
输入文件的大小为7.4 GB。
你有什么建议吗?你知道适用于大型数据集的替代工具吗?
对于确切的答案,这里并不是一个简单的解决方案。问题是Armadillo(底层矩阵库)无法为您的输入数据分配足够的空间。
在大多数情况下,mlpack在RAM方面比MATLAB或R等其他工具更保守,但听起来你的数据集足够大,你的选择(除了像Kerrek建议的那样获得更多RAM的系统)有限。
许多加速k均值的策略包括对输入数据集进行采样并在输入点的子集上运行k均值。由于k-means对给定的初始质心非常敏感,因此这种采样策略通常用于选择初始质心。见Bradley和Fayyad,1998年:ftp://www.ece.lsu.edu/pub/aravena/ee7000FDI/Presentations/Clustering-Pallavi/Ref4_k-means.pdf
在您的情况下,只对可以加载到RAM中的数据子集运行k-means,并将其作为集群质心,这可能更容易,也足够准确。如果k相当小,而数据集中的点数量很大(也就是说,簇的数量远小于点的数量),那么这应该是一种合理的方法,当然也是一种比修改mlpack代码使其更保守的RAM或编写自己的程序使用mmap()或其他东西更简单的方法,并且比购买新的RAM更便宜。
相关文章:
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 如何消除ROS打开CV中的内存不足错误?
- 在 Linux 上C++的无限循环中捕获内存不足的错误 bad_alloc()
- 访问违规可以是一个伪装的内存不足错误吗
- 为什么我在一段时间后不断出现MySQL客户端内存不足错误.
- C++:光线追踪器导致内存不足错误 - 由于反复调用"new"?
- 内存不足错误Opencv/c++
- 收到 OpenCV 错误:运行 OpenCV 示例程序时内存不足:"stitching_detailed.cpp"
- 错误:arma::memory::acquire():犰狳的内存不足
- mlpack:内存不足错误
- Opencv错误:当我使用screen()时内存不足(无法分配)
- OpenCV错误:内存不足
- 内核中的"while"/"for"循环导致 CUDA 内存不足错误?
- 内存不足错误
- 如何修复内存不足错误(openCV)
- 将ID3D11Texture2D复制到字节数组,导致内存不足错误c++
- GLUT:致命错误:内存不足
- MPI错误:内存不足-有哪些解决方案选项
- 将巨大的字符串从本机传递到 java - 内存不足错误
- 内存不足错误在c++ /MFC应用程序