Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
快速精确稀疏奇异值分解库? 我正在寻找一个快速的SVD库,在C、C++或java中。最后我使用java,但是我很舒服地使用JNA来包装C++,例如_Java_C++_C_Matrix_Svd - Fatal编程技术网

快速精确稀疏奇异值分解库? 我正在寻找一个快速的SVD库,在C、C++或java中。最后我使用java,但是我很舒服地使用JNA来包装C++,例如

快速精确稀疏奇异值分解库? 我正在寻找一个快速的SVD库,在C、C++或java中。最后我使用java,但是我很舒服地使用JNA来包装C++,例如,java,c++,c,matrix,svd,Java,C++,C,Matrix,Svd,我正在寻找一个能处理稀疏矩阵的快速svd库。为了保持客观,这样问题就不会被认为太主观,我们可以这样说: 与news20.binary一起使用,例如来自 跑步需要多快 有多少方差是守恒的,例如大小为6或20的S矩阵 我环顾了几家图书馆,发现: matlab:非常快,大约10秒,但它本身并不是一个真正的“库”。平均平方投影误差:0.93 redsvd:超快速,大约1秒运行,用于6个功能,但是平均平方投影误差是0.97,这是非常高的 Eigen的奇异值分解速度非常慢,而且仅适用于稠密矩阵 svd

我正在寻找一个能处理稀疏矩阵的快速svd库。为了保持客观,这样问题就不会被认为太主观,我们可以这样说:

  • 与news20.binary一起使用,例如来自
  • 跑步需要多快
  • 有多少方差是守恒的,例如大小为6或20的S矩阵
我环顾了几家图书馆,发现:

  • matlab:非常快,大约10秒,但它本身并不是一个真正的“库”。平均平方投影误差:0.93
  • redsvd:超快速,大约1秒运行,用于6个功能,但是平均平方投影误差是0.97,这是非常高的
  • Eigen的奇异值分解速度非常慢,而且仅适用于稠密矩阵
  • svdlibc:运行了28分钟,然后我停止了它;我想这是在计算完整的s,而不仅仅是前6个功能

基本上,我正在寻找一个能提供与matlab相同的速度和平均平方投影误差的库,或者至少有点相似。

根据我的经验,svdlibc是这些选项中最好的库。我以前对它的代码做过一些研究,我不相信它是在计算完整的s矩阵(也就是说,它是一个真正的“瘦svd”)。如果您可以控制磁盘上的矩阵表示,那么当使用稀疏二进制输入格式时,由于I/O开销显著降低,svdlibc的执行速度要快得多


S-Space软件包为SVDLIBC的SVDLIBJ java端口提供了一个新的接口。然而,他们发现对于某些输入解决方案,它的结果与SVDLIBC不同。

Ok。你知道我如何要求命令行版本只返回前6个特性,而不是计算整个矩阵吗?你在寻找什么算法?(不是c++/java,但我认为是正确的算法)对于20个新闻组x 10k功能,6台电脑-->
7.0秒pca解释了方差比\uu.79.062.044.039.031.03
。我很惊讶Eigen的SVD这么慢。我从来没有用过Eigen。自从你上次问这个问题以来,它改进了吗?顺便说一句,@Z玻色子,看起来你已经实现了这个。要发送拉取请求吗?