【问题标题】:DeepLearning4J NoSuchMethodErrorDeepLearning4J NoSuchMethodError
【发布时间】:2015-12-23 07:38:41
【问题描述】:

我是神经网络和 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
  • reflections-0.9.10.jar
  • scala-library-2.12.0-M2.jar
  • selenium-server-standalone-2.47.1.jar

谁能给我解释一下这个问题?

【问题讨论】:

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


    【解决方案1】:

    错误是告诉你 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依赖中看到。

    【讨论】:

    • 这正是问题所在。降级后,我必须修复一些其他依赖项,但现在工作正常。有趣的是,我最初拥有那个版本,但我不记得为什么要升级。我花了无数个小时试图修复它,如果没有你的帮助,我可能永远也不会弄明白。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2016-09-09
    • 2015-11-27
    相关资源
    最近更新 更多