2017-08-26 82 views
0

我目前正試圖讓dl4j(deeplearning4j)導入我在keras 1.2中訓練過的模型。ExceptionInInitializerError當運行簡單的DL4J代碼

這是我的代碼:

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來處理依賴關係,這使用它是我的第一次。 (這可能有關)

當我運行上面的代碼時,我得到一個由UnsatisfiedLinkError引起的ExceptionInInitializerError:java.library.path中沒有jnind4jcpu。

它看起來像一個缺失的依賴項,但我不知道如何解決它。

這是我的pom.xml:https://pastebin.com/FzAMwA0z

這是我的全堆棧跟蹤:https://pastebin.com/a2kyUtch

順便說一句,我在64位的IntelliJ使用與Java 1.8u101的Windows 10

回答

0

出於某種原因,將dl4j.version從0.8.1-SNAPSHOT更改爲0.8.0將其固定。仍然不知道爲什麼,但它的工作。

0

我對dl4j沒有太多的瞭解。但是,多個現有重定向到這一個:

  1. 可能嘗試指定的分類爲nd4j-native-platform爲:

    <dependency> 
        <groupId>org.nd4j</groupId> 
        <artifactId>nd4j-native-platform</artifactId> 
        <version>${dl4j.version}</version> 
        <classifier>windows-x86_64</classifier> 
    </dependency> 
    
  2. 使用maven-shade-plugin以下這個配置構建

    https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/pom.xml#L160

  3. 或者遵循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及其wiki

0

FWIW,keras在這裏不是問題,對於這個堆棧跟蹤並不真正相關。你的LD_LIBRARY_PATH在某些地方依賴不好。

如果你正在使用Windows,看看: https://github.com/bytedeco/javacpp-presets/wiki/Debugging-UnsatisfiedLinkError-on-Windows

一個常見的問題是與MKL蟒蛇。如果您使用的,然後另一個解決辦法是設置庫路徑,以與空:

-Djava.library.path =「」

以上被稱爲系統屬性。如果有的話,在你的運行時配置中進行設置。