ExceptionInInitializerError при запуске простого кода DL4J
В настоящее время я пытаюсь заставить 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: нет jnind4jcpu в java.library.path.
Это похоже на отсутствующую зависимость, но я понятия не имею, как это исправить.
Это мой pom.xml: https://pastebin.com/FzAMwA0z
И это моя полная трассировка стека: https://pastebin.com/a2kyUtch
Кстати, я использую IntelliJ с Java 1.8u101 на 64-битной Windows 10
3 ответа
Почему-то меняется dl4j.version
с 0.8.1-SNAPSHOT до 0.8.0 это исправили. Все еще не уверен, почему, но это работает.
FWIW, keras здесь не проблема и не очень важна для этой трассировки стека. У вас плохие зависимости от вашего LD_LIBRARY_PATH где-то.
Если вы используете Windows, загляните в: https://github.com/bytedeco/javacpp-presets/wiki/Debugging-UnsatisfiedLinkError-on-Windows
Общая проблема - это MKL с анакондой. Если вы используете это, то другой обходной путь - установить пустой путь к библиотеке с помощью:
-Djava.library.path = ""
Вышеуказанное называется системным свойством. Установите это в своем конфиге времени выполнения, если он у вас есть.
Я не очень в 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Или следуйте этому для:
Обходной путь состоит из:
изменение разрешения tmp изменение местоположения tmp.
Определите TMP, TMPDIR и TEMP в новом каталоге, добавьте -Djava.io.tmpdir=${TMPDIR} к команде java.
Связывание дополнительных источников для устранения неполадок и его вики.