DeepLearning4J NoSuchMethodError
DeepLearning4J NoSuchMethodError
我是神经网络和 NLP 的新手。我找到了这个库:DeepLearning4J。我试图让它工作,但每当我执行这条指令时:
Collection<String> similar = vec.wordsNearest("word_to_search", 10);
如果我正在搜索的词被映射到网络中,我会得到以下异常:
java.lang.IllegalArgumentException: XERBLA: Error on argument 6 (LDA) in SGEMV
at org.jblas.NativeBlas.sgemv(Native Method)
at org.nd4j.linalg.jblas.blas.JblasLevel2.sgemv(JblasLevel2.java:25)
at org.nd4j.linalg.api.blas.impl.BaseLevel2.gemv(BaseLevel2.java:53)
at org.nd4j.linalg.api.ndarray.BaseNDArray.mmuli(BaseNDArray.java:2569)
at org.nd4j.linalg.api.ndarray.BaseNDArray.mmul(BaseNDArray.java:2377)
at org.deeplearning4j.models.embeddings.wordvectors.WordVectorsImpl.wordsNearest(WordVectorsImpl.java:290)
at org.deeplearning4j.models.embeddings.wordvectors.WordVectorsImpl.wordsNearest(WordVectorsImpl.java:337)
at word2vec.Word2VecTest.main(Word2VecTest.java:74)
Exception in thread "main" java.lang.NoSuchMethodError: org.nd4j.linalg.api.ndarray.INDArray.mean(I)Lorg/nd4j/linalg/api/ndarray/INDArray;
at org.deeplearning4j.models.embeddings.wordvectors.WordVectorsImpl.wordsNearest(WordVectorsImpl.java:283)
at word2vec.Word2VecTest.main(Word2VecTest.java:89)
我知道NoSuchMethodError 可能是由于库版本不同造成的。在这种特定情况下,这可能是由 nd4j 引起的。我已经检查了很多时间的版本,这就是我目前正在导入的版本:
- akka-actor_2.11-2.4-M3.jar
- akka-cluster_2.11-2.4-M3.jar
- akka-remote_2.11-2.4-M3.jar
- akka-slf4j_2.11-2.4-M3.jar
- byte-buddy-0.6.15.jar
- config-1.3.0.jar
- deeplearning4j-core-0.0.3.3.4.alpha2.jar
- deeplearning4j-nlp-0.0.3.3.4.alpha2.jar
- deeplearning4j-scaleout-akka-0.0.3.3.4.alpha2.jar
- deeplearning4j-ui-0.0.3.3.4.alpha2.jar
- javassist-3.12.1.GA.jar
- jblas-1.2.4.jar
- jcublas-6.5.jar
- lucene-analyzers-common-4.10.3.jar
- lucene-core-4.10.3.jar
- nd4j-api-0.4-rc3.4.jar
- nd4j-bytebuddy-0.4-rc3.4.jar
- nd4j-jblas-0.4-rc3.4.jar
- nd4j-jcublas-common-0.4-rc3.4.jar
- netty-3.10.4.Final.jar
- protobuf-java-2.6.1.jar
- 反射-0.9.10.jar
- scala-library-2.12.0-M2.jar
- selenium-server-standalone-2.47.1.jar
谁能给我解释一下这个问题?
错误告诉您 DeepLearning4J 试图调用方法 INDArray INDArray.mean(int value)
但找不到此方法。
查看 nd4j 0.4-rc3.4 source code,您可以看到 mean
方法实际上将可变参数 int...
作为输入。由于这不是 int
,因此抛出错误。
当 nd4j
将版本从 0.0.3.5.5.5
升级到 0.4-rc0
时,this commit 做出了此更改。
因此,您需要将 nd4j
降级到版本 0.0.3.5.5.5
。通过这次降级,您将不会再有任何不兼容,因为这是 DeepLearning4J 所依赖的实际版本。您可以在 deeplearning4j-core-0.0.3.3.4.alpha2
.
的 Maven 依赖项中看到
我是神经网络和 NLP 的新手。我找到了这个库:DeepLearning4J。我试图让它工作,但每当我执行这条指令时:
Collection<String> similar = vec.wordsNearest("word_to_search", 10);
如果我正在搜索的词被映射到网络中,我会得到以下异常:
java.lang.IllegalArgumentException: XERBLA: Error on argument 6 (LDA) in SGEMV
at org.jblas.NativeBlas.sgemv(Native Method)
at org.nd4j.linalg.jblas.blas.JblasLevel2.sgemv(JblasLevel2.java:25)
at org.nd4j.linalg.api.blas.impl.BaseLevel2.gemv(BaseLevel2.java:53)
at org.nd4j.linalg.api.ndarray.BaseNDArray.mmuli(BaseNDArray.java:2569)
at org.nd4j.linalg.api.ndarray.BaseNDArray.mmul(BaseNDArray.java:2377)
at org.deeplearning4j.models.embeddings.wordvectors.WordVectorsImpl.wordsNearest(WordVectorsImpl.java:290)
at org.deeplearning4j.models.embeddings.wordvectors.WordVectorsImpl.wordsNearest(WordVectorsImpl.java:337)
at word2vec.Word2VecTest.main(Word2VecTest.java:74)
Exception in thread "main" java.lang.NoSuchMethodError: org.nd4j.linalg.api.ndarray.INDArray.mean(I)Lorg/nd4j/linalg/api/ndarray/INDArray;
at org.deeplearning4j.models.embeddings.wordvectors.WordVectorsImpl.wordsNearest(WordVectorsImpl.java:283)
at word2vec.Word2VecTest.main(Word2VecTest.java:89)
我知道NoSuchMethodError 可能是由于库版本不同造成的。在这种特定情况下,这可能是由 nd4j 引起的。我已经检查了很多时间的版本,这就是我目前正在导入的版本:
- akka-actor_2.11-2.4-M3.jar
- akka-cluster_2.11-2.4-M3.jar
- akka-remote_2.11-2.4-M3.jar
- akka-slf4j_2.11-2.4-M3.jar
- byte-buddy-0.6.15.jar
- config-1.3.0.jar
- deeplearning4j-core-0.0.3.3.4.alpha2.jar
- deeplearning4j-nlp-0.0.3.3.4.alpha2.jar
- deeplearning4j-scaleout-akka-0.0.3.3.4.alpha2.jar
- deeplearning4j-ui-0.0.3.3.4.alpha2.jar
- javassist-3.12.1.GA.jar
- jblas-1.2.4.jar
- jcublas-6.5.jar
- lucene-analyzers-common-4.10.3.jar
- lucene-core-4.10.3.jar
- nd4j-api-0.4-rc3.4.jar
- nd4j-bytebuddy-0.4-rc3.4.jar
- nd4j-jblas-0.4-rc3.4.jar
- nd4j-jcublas-common-0.4-rc3.4.jar
- netty-3.10.4.Final.jar
- protobuf-java-2.6.1.jar
- 反射-0.9.10.jar
- scala-library-2.12.0-M2.jar
- selenium-server-standalone-2.47.1.jar
谁能给我解释一下这个问题?
错误告诉您 DeepLearning4J 试图调用方法 INDArray INDArray.mean(int value)
但找不到此方法。
查看 nd4j 0.4-rc3.4 source code,您可以看到 mean
方法实际上将可变参数 int...
作为输入。由于这不是 int
,因此抛出错误。
当 nd4j
将版本从 0.0.3.5.5.5
升级到 0.4-rc0
时,this commit 做出了此更改。
因此,您需要将 nd4j
降级到版本 0.0.3.5.5.5
。通过这次降级,您将不会再有任何不兼容,因为这是 DeepLearning4J 所依赖的实际版本。您可以在 deeplearning4j-core-0.0.3.3.4.alpha2
.