我正在与 Jama Matrix 一起工作.我将它用于 LSI。它工作正常。但是,当我传递一个像 8000x8000 这样的大矩阵时,它会杀死我的整个系统。我只是调用 SVD,然后减小矩阵大小并相加。没有其他的 !
任何的想法?我怎么解决这个问题?
core2du
内存 = 10GB
Java 运行时设置
-Xmx5000M
我执行 Jama 矩阵代码时没有其他程序在运行
最佳答案
我也将 Jama 用于 SVD,并且在解决大矩阵时遇到了同样的问题。
为了减少内存溢出的情况,我将 SingularValueDecomposition.java 调整为压缩一个。调整是在矩阵 A 中它有很多 0(零)值,因此所有使用的矩阵(如 A、U、V、Work 等)的压缩只允许内存大于 0 的可用值。
在使用紧凑型 SVD 之前,您应该制作一个矩阵文件,例如
r/t c/t 值/n
r/t c/t 值/n
... '/t' 和 '/n' 分别表示制表符和换行符。
例子, (0, 0, 0), (0, 1, 0.5), (0, 2, 0), (0, 3, 0.2), (1, 0, 1), (1, 1, 0), (1, 2, 0), (1, 3, 0.3) 并且矩阵大小为 2*4 (R*C) 然后你只需像这样制作文件
矩阵尺寸/t 2/t 4/n
0/吨 1/吨 0.5/n
0/t 3/t 0.2/n
1/t 0/t 1/n
1/吨 3/吨 0.3/n
如果您想使用它,请给我您的电子邮件地址(mg.hwang@gmail.com)。
我将提供更多详细信息以在电子邮件中使用它。
我检查结果是正确的。但是,我不确定它对计算机的效果如何。
无论如何,即使不多,它也能工作并显示出更好的效果。
关于Java Jama 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4834910/