我正在Intellij IDEA的Kotlin项目中尝试使用Nd4j。在项目结构->库中,我使用“从Maven”命令添加以下库。
org.deeplearning4j:deeplearning4j-core:1.0.0-beta
org.nd4j:nd4j-native-platform:1.0.0-beta
org.datavec:datavec-api:1.0.0-beta
使用这些库,我可以编译我的项目,但是当我运行该项目时,它会失败并出现异常。
Caused by: java.lang.RuntimeException: ND4J is probably missing dependencies. For more information, please refer to: http://nd4j.org/getstarted.html
at org.nd4j.nativeblas.NativeOpsHolder.<init>(NativeOpsHolder.java:51)
at org.nd4j.nativeblas.NativeOpsHolder.<clinit>(NativeOpsHolder.java:19)
... 10 more
Caused by: java.lang.UnsatisfiedLinkError: no jnind4jcpu in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1220)
at org.bytedeco.javacpp.Loader.load(Loader.java:980)
at org.bytedeco.javacpp.Loader.load(Loader.java:879)
at org.nd4j.nativeblas.Nd4jCpu.<clinit>(Nd4jCpu.java:10)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.bytedeco.javacpp.Loader.load(Loader.java:938)
at org.bytedeco.javacpp.Loader.load(Loader.java:879)
at org.nd4j.nativeblas.Nd4jCpu$NativeOps.<clinit>(Nd4jCpu.java:1310)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.nd4j.nativeblas.NativeOpsHolder.<init>(NativeOpsHolder.java:29)
... 11 more
Caused by: java.lang.UnsatisfiedLinkError: no nd4jcpu in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1220)
at org.bytedeco.javacpp.Loader.load(Loader.java:965)
... 21 more
浏览项目文件夹,我发现IDEA已经为nd4j-native-platform下载了很多jar文件,但是没有任何JNI库的迹象。我还需要做什么?
答案 0 :(得分:1)
Intellij的“从Maven”功能不支持JavaCPP和ND4J(以及其他使用本机代码的库)使用的分类器。 Maven可以很好地工作,但是如果由于某些原因您真的不能使用它,则可以手动添加nd4j-native-1.0.0-beta2-macosx-x86_64.jar
文件和openblas-0.3.0-1.4.2-macosx-x86_64.jar
文件。这足以运行简单的事情,但是随着您使用越来越多的东西(例如OpenCV),您必须手动对所有其他本机依赖项执行此操作。这就是为什么推荐Maven的原因。
答案 1 :(得分:0)
如果包括这3个依赖项,那么除非您由于某种原因而在不受支持的OS上运行,否则失败的理由有零个。
我们支持从android到IBM power的所有功能,因此不太可能。
您对没有看到任何JNI库的意思也感到困惑。这些都在jar文件中。我们使用javacpp(我们也维护)来管理那些东西。 您会在〜/ .javacpp / cache下找到这些库-尽管您没有任何理由要触摸它们。
您能澄清您在那找什么吗?
除此之外,您无需执行其他任何操作。我假设有些东西加载不正确。
我们的独立pom开箱即用:https://github.com/deeplearning4j/dl4j-examples/blob/master/standalone-sample-project/pom.xml-可能需要再次检查,重新加载。我只能假设您以某种方式创建了错误的项目。 File-> New Maven项目应该是您所要做的。