ExceptionInInitializerError when 运行 简单的 DL4J 代码
ExceptionInInitializerError when running simple DL4J code
我目前正在尝试让 dl4j (deeplearning4j) 导入我在 keras 1.2 中训练的模型。
这是我的代码:
public static void main( String[] args )
{
try {
MultiLayerNetwork network = KerasModelImport.importKerasSequentialModelAndWeights(
"C:\Users\A\Documents\GitHub\DevanagriRecognizer\model_keras1.h5");
System.out.println( "Hello World!" );
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidKerasConfigurationException e) {
e.printStackTrace();
} catch (UnsupportedKerasConfigurationException e) {
e.printStackTrace();
}
}
我正在使用 Maven 来处理依赖项,这是我第一次使用它。 (这可能是相关的)
当我 运行 上面的代码时,我得到一个 ExceptionInInitializerError 引起的 UnsatisfiedLinkError: no jnind4jcpu in java.library.path.
它看起来像缺少依赖项,但我不知道如何修复它。
这是我的pom.xml:https://pastebin.com/FzAMwA0z
这是我的完整堆栈跟踪:https://pastebin.com/a2kyUtch
顺便说一句,我在 64 位 Windows 10
上使用带有 Java 1.8u101 的 IntelliJ
我不太喜欢 dl4j。但是,多个现有的重定向到这个:
可能尝试将 nd4j-native-platform
的分类器指定为:
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-native-platform</artifactId>
<version>${dl4j.version}</version>
<classifier>windows-x86_64</classifier>
</dependency>
使用 maven-shade-plugin
按照以下配置构建:
https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/pom.xml#L160
或关注this:
The workaround consists in either:
changing tmp permission changing tmp location.
Define TMP, TMPDIR and
TEMP to a new directory, add -Djava.io.tmpdir=${TMPDIR} to the java
command.
正在将更多来源链接到 troubleshoot and its wiki。
FWIW,keras 不是这里的问题,与此堆栈跟踪无关。您对 LD_LIBRARY_PATH 某处的依赖性很差。
如果您使用的是 windows,请查看:
https://github.com/bytedeco/javacpp-presets/wiki/Debugging-UnsatisfiedLinkError-on-Windows
一个常见的问题是使用 anaconda 的 MKL。如果您正在使用它,那么另一个解决方法是将库路径设置为空:
-Djava.library.path=""
以上称为系统属性。如果你有的话,在你的运行时配置中设置它。
出于某种原因,将 dl4j.version
从 0.8.1-SNAPSHOT 更改为 0.8.0 修复了它。仍然不确定为什么,但它正在工作。
我目前正在尝试让 dl4j (deeplearning4j) 导入我在 keras 1.2 中训练的模型。
这是我的代码:
public static void main( String[] args )
{
try {
MultiLayerNetwork network = KerasModelImport.importKerasSequentialModelAndWeights(
"C:\Users\A\Documents\GitHub\DevanagriRecognizer\model_keras1.h5");
System.out.println( "Hello World!" );
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidKerasConfigurationException e) {
e.printStackTrace();
} catch (UnsupportedKerasConfigurationException e) {
e.printStackTrace();
}
}
我正在使用 Maven 来处理依赖项,这是我第一次使用它。 (这可能是相关的)
当我 运行 上面的代码时,我得到一个 ExceptionInInitializerError 引起的 UnsatisfiedLinkError: no jnind4jcpu in java.library.path.
它看起来像缺少依赖项,但我不知道如何修复它。
这是我的pom.xml:https://pastebin.com/FzAMwA0z
这是我的完整堆栈跟踪:https://pastebin.com/a2kyUtch
顺便说一句,我在 64 位 Windows 10
上使用带有 Java 1.8u101 的 IntelliJ我不太喜欢 dl4j。但是,多个现有的重定向到这个:
可能尝试将
nd4j-native-platform
的分类器指定为:<dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native-platform</artifactId> <version>${dl4j.version}</version> <classifier>windows-x86_64</classifier> </dependency>
使用
maven-shade-plugin
按照以下配置构建: https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/pom.xml#L160或关注this:
The workaround consists in either:
changing tmp permission changing tmp location.
Define TMP, TMPDIR and TEMP to a new directory, add -Djava.io.tmpdir=${TMPDIR} to the java command.
正在将更多来源链接到 troubleshoot and its wiki。
FWIW,keras 不是这里的问题,与此堆栈跟踪无关。您对 LD_LIBRARY_PATH 某处的依赖性很差。
如果您使用的是 windows,请查看: https://github.com/bytedeco/javacpp-presets/wiki/Debugging-UnsatisfiedLinkError-on-Windows
一个常见的问题是使用 anaconda 的 MKL。如果您正在使用它,那么另一个解决方法是将库路径设置为空:
-Djava.library.path=""
以上称为系统属性。如果你有的话,在你的运行时配置中设置它。
出于某种原因,将 dl4j.version
从 0.8.1-SNAPSHOT 更改为 0.8.0 修复了它。仍然不确定为什么,但它正在工作。