DeepLearning4J NoSuchMethodError

时间:2015-09-25 12:56:34

标签: java lucene neural-network deep-learning word2vec

我是神经网络和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引起的。我已经检查了很多时间版本,这就是我现在正在导入的内容:

  • 阿卡-actor_2.11-2.4-M3.jar
  • 阿卡-cluster_2.11-2.4-M3.jar
  • 阿卡-remote_2.11-2.4-M3.jar
  • 阿卡-slf4j_2.11-2.4-M3.jar
  • 字节的好友-0.6.15.jar
  • 配置-1.3.0.jar
  • deeplearning4j核-0.0.3.3.4.alpha2.jar
  • deeplearning4j-NLP-0.0.3.3.4.alpha2.jar
  • deeplearning4j-scaleout-阿卡-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-分析器-共4.10.3.jar
  • lucene的核 - 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-共0.4 rc3.4.jar
  • 网状-3.10.4.Final.jar
  • 的protobuf-java的2.6.1.jar
  • 反射-0.9.10.jar
  • 阶库-2.12.0-M2.jar
  • 硒 - 服务器 - 独立-2.47.1.jar

有人可以向我解释这个问题吗?

1 个答案:

答案 0 :(得分:3)

错误告诉您DeepLearning4J尝试调用方法INDArray INDArray.mean(int value),但找不到此方法。

查看nd4j 0.4-rc3.4 source code,您可以看到mean方法实际上以vararg 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依赖项中看到它。