PCA 因 ND4J 而失败:找不到 BLAS?
PCA fails with ND4J: BLAS not found?
我在 Windows 上使用 ND4J 在矩阵上进行 PCA,但我认为 ND4J 找不到 BLAS 库。
我用 minGW 安装了 OpenBLAS(make
然后 make PREFIX=C:/OpenBLAS install
),并将 C:\OpenBLAS\bin
(其中 libopenblas.dll 是)添加到 PATH 环境变量。
正在执行 where libopenblas.dll
returns
C:\Program Files\Java\jdk1.8.0_111\bin\libopenblas.dll
C:\OpenBLAS\bin\libopenblas.dll
所以我很惊讶地看到 OpenBLAS 已经安装了。
我的 Java 代码如下:
INDArray traceMatrix = /* my data matrix */;
int keptFeatures = 10;
INDArray pcaFactors = PCA.pca(traceMatrix, keptFeatures, false);
错误的堆栈是:
java.lang.UnsupportedOperationException
at org.nd4j.linalg.factory.BaseBlasWrapper.geev(BaseBlasWrapper.java:470)
at org.nd4j.linalg.eigen.Eigen.eigenvectors(Eigen.java:100)
at org.nd4j.linalg.dimensionalityreduction.PCA.pca(PCA.java:62)
at [myCode:line where the pca() method is called]
您知道如何解决这个问题吗?
如果有帮助,我正在使用 Eclipse。
编辑:我使用的是过时版本的 ND4J,所以我将更新我的库,试图解决我的问题。
在 https://gitter.im/deeplearning4j/deeplearning4j 的 Alex Black 的帮助下,我发现我使用的是旧版本的 ND4J。
切换到更新版本(并安装后端)解决了问题。
我在 Windows 上使用 ND4J 在矩阵上进行 PCA,但我认为 ND4J 找不到 BLAS 库。
我用 minGW 安装了 OpenBLAS(make
然后 make PREFIX=C:/OpenBLAS install
),并将 C:\OpenBLAS\bin
(其中 libopenblas.dll 是)添加到 PATH 环境变量。
正在执行 where libopenblas.dll
returns
C:\Program Files\Java\jdk1.8.0_111\bin\libopenblas.dll
C:\OpenBLAS\bin\libopenblas.dll
所以我很惊讶地看到 OpenBLAS 已经安装了。
我的 Java 代码如下:
INDArray traceMatrix = /* my data matrix */;
int keptFeatures = 10;
INDArray pcaFactors = PCA.pca(traceMatrix, keptFeatures, false);
错误的堆栈是:
java.lang.UnsupportedOperationException
at org.nd4j.linalg.factory.BaseBlasWrapper.geev(BaseBlasWrapper.java:470)
at org.nd4j.linalg.eigen.Eigen.eigenvectors(Eigen.java:100)
at org.nd4j.linalg.dimensionalityreduction.PCA.pca(PCA.java:62)
at [myCode:line where the pca() method is called]
您知道如何解决这个问题吗?
如果有帮助,我正在使用 Eclipse。
编辑:我使用的是过时版本的 ND4J,所以我将更新我的库,试图解决我的问题。
在 https://gitter.im/deeplearning4j/deeplearning4j 的 Alex Black 的帮助下,我发现我使用的是旧版本的 ND4J。
切换到更新版本(并安装后端)解决了问题。