2016-02-12 23 views
10

Nie wiem, czego chce ode mnie. Używam

<dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-core</artifactId> 
     <version>${deeplearning4j.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-nlp</artifactId> 
     <version>${deeplearning4j.version}</version> 
    </dependency> 

gdzie

<deeplearning4j.version>0.4-rc3.8</deeplearning4j.version> 

ale jestem coraz

Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: null 
    at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:148) ~[nd4j-api-0.4-rc3.7.jar:na] 
    at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:4498) ~[nd4j-api-0.4-rc3.7.jar:na] 
    ... 53 common frames omitted 

gdy próbuję załadować model słowo wektor Google:

@RequestMapping("/loadModel") 
public Boolean loadModel(@RequestParam(value="model") String model) { 

    Resource resource = appContext.getResource("WEB-INF/word-vector-models/" + model); 

    try { 
     File modelFile = resource.getFile(); 

     System.err.println(modelFile.getAbsolutePath()); 
     WordVectors googleModel = WordVectorSerializer.loadGoogleModel(modelFile, true); 
     this.wordVectorsMap.put(model, googleModel); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return false; 
    } 

    return true; 
} 

Odpowiedz

11

to wygląda nie masz nd4j backend sp uśrednione w twoim pliku pom. Musisz mieć jeden, i powinieneś używać tylko jednego (nie ma wielu backendów w twoim pom na raz, chyba że używasz profili). Obecnie dla wersji 0.4-rc3.8 miałem szczęście z nd4j-x86 na komputerach Mac z systemem bez GPU, Windows i Linux. Jeśli masz dostęp do procesorów graficznych, możesz użyć jednego z słoików nd4j-jcublas-7.x, ale pamiętaj, że istnieje major Cuda rewrite, który działa zgodnie z ich Gitter.

Na razie

Oto, jak skonfigurować moje zależności pom.xml. Domyślnie ((tj mvn clean install), działa z nd4j x86, ale kiedy ciągnąć mój kod na polu GPU, po prostu dołączyć nazwę profilu (tak mvn clean install -P cuda) i przełączyć backendów łatwo:

<!-- Platform-dependent backend selection (netlib is default) --> 
<profiles> 
    <profile> 
     <id>cuda</id> 
     <dependencies> 
      <dependency> 
       <groupId>org.nd4j</groupId> 
       <artifactId>nd4j-jcublas-${cuda.version}</artifactId> 
       <version>${nd4j.version}</version> 
      </dependency> 
     </dependencies> 
    </profile> 
    <profile> 
     <id>netlib</id> 
     <dependencies> 
      <dependency> 
       <groupId>org.nd4j</groupId> 
       <artifactId>nd4j-x86</artifactId> 
       <version>${nd4j.version}</version> 
      </dependency> 
     </dependencies> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 
</profiles> 
<!-- end platform-dependent backend selection --> 


<dependencies> 
<!-- dl4j dependencies --> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-core</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-ui</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-scaleout-api</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-scaleout-akka</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-scaleout-zookeeper</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-nlp</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.deeplearning4j</groupId> 
     <artifactId>deeplearning4j-aws</artifactId> 
     <version>${dl4j.version}</version> 
    </dependency> 
    <!-- end dl4j dependencies --> 

    <!-- nd4j dependencies --> 
    <dependency> 
     <groupId>org.nd4j</groupId> 
     <artifactId>canova-nd4j-image</artifactId> 
     <version>${canova.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.nd4j</groupId> 
     <artifactId>canova-nd4j-codec</artifactId> 
     <version>${canova.version}</version> 
    </dependency> 
    <!-- end nd4j dependencies --> 

    <dependency> 
     <groupId>com.fasterxml.jackson.dataformat</groupId> 
     <artifactId>jackson-dataformat-yaml</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>net.java.openjfx.backport</groupId> 
     <artifactId>openjfx-78-backport</artifactId> 
     <version>1.8.0-ea-b96.1</version> 
    </dependency> 


    <!-- logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.13</version> 
    </dependency> 
    <!-- end logging --> 


    <dependency> 
     <groupId>org.apache.maven.reporting</groupId> 
     <artifactId>maven-reporting-api</artifactId> 
     <version>2.2.1</version> 
    </dependency> 
</dependencies>