【发布时间】:2012-08-21 13:55:34
【问题描述】:
我有一个很大的术语文档矩阵,想使用 matlab 提供的非负矩阵分解函数。问题是在第 1 次迭代之后,内存使用率迅速上升并达到顶峰(我的系统有 6GB),另一方面,CPU 使用率水平变得非常低(大约 1%-5%)。整个系统的行为就像它已经崩溃一样,只有等待很长时间才能完成第二次迭代。 (请注意,要获得好的结果需要更多的迭代)。
问题:
如果有人对此有任何经验,或者使用比我更大的矩阵运行 nnmf(),我真的很想知道他/她实际上是如何克服上述问题的。
另外:我使用较小的矩阵(约 7000x1800)完成了此操作,没有任何问题。我使用稀疏矩阵是因为术语文档矩阵有很多零元素,这有助于减少需要存储的空间。例如在我的例子中,Term-Document 矩阵有14608 * 18828 = 275039424 元素和sum(sum(spa~=0)) = 1312582 非零元素:
>> whos
Name Size Bytes Class Attributes
full 14608x18828 2200315392 double
spa 14608x18828 21151944 double sparse
【问题讨论】:
-
我建议将变量命名为“full”是一个非常糟糕的主意,尤其是当您使用稀疏矩阵时,因为有一个名为 full.m 的函数。你在这里自找麻烦。
-
你说得对,我没有使用完整的矩阵。我只是将其作为信息提供给您,以向您展示我的矩阵具有的稀疏性。
标签: matlab sparse-matrix term-document-matrix nmf