1

我试图通过 gradle 建立一个 deeplearning4j 项目,但我得到一个 UnsatisfiedLinkError:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopenblas 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:976)
    at org.bytedeco.javacpp.Loader.load(Loader.java:777)
    at org.bytedeco.javacpp.Loader.load(Loader.java:684)
    at org.bytedeco.javacpp.openblas.<clinit>(openblas.java:10)
    at org.nd4j.linalg.cpu.nativecpu.blas.CpuBlas.setMaxThreads(CpuBlas.java:117)
    at org.nd4j.nativeblas.Nd4jBlas.<init>(Nd4jBlas.java:35)
    at org.nd4j.linalg.cpu.nativecpu.blas.CpuBlas.<init>(CpuBlas.java:12)
    at org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory.createBlas(CpuNDArrayFactory.java:89)
    at org.nd4j.linalg.factory.BaseNDArrayFactory.blas(BaseNDArrayFactory.java:67)
    at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.getEnvironmentInformation(NativeOpExecutioner.java:1176)
    at org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner.printEnvironmentInformation(DefaultOpExecutioner.java:562)
    at org.nd4j.linalg.factory.Nd4j.initWithBackend(Nd4j.java:6210)
    at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:6087)
    at org.nd4j.linalg.factory.Nd4j.<clinit>(Nd4j.java:201)
    at org.deeplearning4j.nn.conf.NeuralNetConfiguration$Builder.seed(NeuralNetConfiguration.java:777)
    at my.project.NeuralNetwork.main(NeuralNetwork.java:43)
Caused by: java.lang.UnsatisfiedLinkError: no openblas 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:976)
    at org.bytedeco.javacpp.Loader.load(Loader.java:765)
    ... 14 more

我的依赖项如下所示:

dependencies {
    compile group: 'org.deeplearning4j', name: 'deeplearning4j-core', version: '0.9.1'
    compile group: 'org.deeplearning4j', name: 'rl4j', version: '0.9.1'
    compile group: 'org.nd4j', name: 'nd4j-native', version: '0.9.1'
    compile group: 'org.nd4j', name: 'nd4j-jblas', version: '0.9.1'
    compile group: 'org.nd4j', name: 'nd4j-api', version: '0.9.1'
    compile 'org.nd4j:nd4j-native:0.9.1:windows-x86_64'
}

我也尝试添加

compile group: 'org.bytedeco.javacpp-presets', name: 'openblas', version: '0.2.20-1.3'

但这没有帮助。

我需要安装 OpenBlas 吗?我没有在deeplearning4j 的快速入门指南中读到这样的内容。操作系统为 Win10,IDE 为 IntelliJ 社区版。

4

4 回答 4

1

nd4j-jblas 甚至不是有效的 Maven 依赖项。你到底是从哪里得到的?

我们的文档中的任何地方都没有 nd4j-jblas,而且它已经存在将近 2 年了。坚持我们的入门文档: http ://deeplearning4j.org/quickstart

我们在那里解释你需要什么。而不是弄乱所有的分类器,只需使用:nd4j-native-platform 作为工件 id。

于 2017-12-27T13:33:16.927 回答
1

我将这些依赖项添加到我的 POM.xml 文件中并且它正在工作。

<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>openblas</artifactId>
    <version>0.2.20-1.4</version>
</dependency>

<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>openblas-platform</artifactId>
    <version>0.2.20-1.4</version>
</dependency>
于 2018-03-29T16:51:34.937 回答
0

我遇到了同样的问题并设法通过将以下路径添加到您的环境变量路径来解决它:“D:\Users\username\.javacpp\cache\bin”

用户名和 D:\ 将特定于您的机器,例如我的用户名是 Arslan Akhtar 所以我的路径是 D:\Users\Arslan Akhtar.javacpp\cache\bin

在您的机器上转到编辑系统环境变量 => 然后在系统变量下找到变量路径并选择编辑 => 然后在添加分号 (;) 作为分隔符后将上述变量路径附加到长字符串的末尾

于 2018-05-11T08:14:55.290 回答
0

根据文档https://deeplearning4j.org/quickstart

如果您在 windows 机器上使用 64 位 java,则必须添加以下内容作为 VM 参数(运行 -> 编辑配置 -> IntelliJ 中的 VM 选项):

-Djava.library.path=""

于 2018-06-05T06:55:06.997 回答