【问题标题】:matlab out of memory ultimate solutionmatlab内存不足终极解决方案
【发布时间】:2014-03-14 01:22:05
【问题描述】:

我有一个非常大的文件,大约 10GB。我无法将其加载到内存中,因此我设法将其传输到 .mat 文件。但是当我尝试聚类时,仍然会出现“内存不足”问题。我认为最终的解决方案是将那些内存的东西放到磁盘上。但我需要从 matlab 调用 kmeans() 方法。有没有办法在不重写方法的情况下将kmeans中的局部变量也放入磁盘?

【问题讨论】:

  • 如果您正在计算这种大小的数据,您可能应该使用计算中心...如果您的 FILE 有那么大,但您的原始 DATA 不是,那么您应该重新考虑您的格式。跨度>

标签: matlab out-of-memory mat-file


【解决方案1】:

您需要一种策略来处理大型数据集。可能性是:

  1. 使用具有足够内存的系统
  2. 降低数据集的精度。对于聚类小错误和缩放并不重要,如果可能,将属性更改为缩放的 uint8 或 uint16。 (显然,删除所有不相关的数据)
  3. 使用更合适的算法。我不是该领域的专家,但 CLARA 和 CLARANS 是两种选择。这些算法不需要只需要数据的一个子集,应该可以与 matfile 结合以仅将相关部分保留在内存中。

【讨论】:

  • 但是当我有 10GB 数据时,这些策略没有帮助,对吧?
  • 对三种完全不同的策略的一个非常模糊的答案,你期待什么问题?我不知道你的情况,我可能错了。
  • 最后,我转向使用 Octave 的服务器。金钱是最终的解决方案。 :D
【解决方案2】:

当您加载数据时,它首先加载到您计算机的 RAM 内存中,因此我认为解决您的问题的唯一最终解决方案是拥有 16GB 的 RAM。

【讨论】:

  • 我想要的是把大的局部变量放在磁盘上。我现在找不到这么大的内存了。
【解决方案3】:

如果数据不是高度非线性的,您可能可以尝试对数据进行下采样。有兴趣的可以阅读参考http://www.mathworks.com/help/signal/ref/downsample.html

例如,您可以获取数据,按比例 = 4 进行下采样,然后您将拥有 2.5GB 的数据。你可以走得更远,但它会增加错误。处理后,您可以使用不同的技术对数据进行上采样(Matlab 已全部内置)。很遗憾,我不知道您的数据类型,所以如果我的回答与您的问题不符,抱歉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多