プロジェクト

全般

プロフィール

ND4J

概要

N-Dimensional Arrays for Java(ND4J)は、N次元配列を扱うオープンソースの科学計算ライブラリで、PythonのNumPyを参考に作られています。開発元は、Skymind社です。ネイティブライブラリを含み、また、GPGPUを用いて計算することができます。Githubでホストされています。

入手と設定

ND4Jの公式サイト から、Get Startedのリンクをたどるとインストールの説明が参照できます。maven前提の説明となっています。
CPUで実行する用とGPUで実行する用とで指定するライブラリ名が変わります。

  • CPUで実行する場合、nd4j-native-platform を指定します。

maven

nd4j-native-platform

 <properties>
   <nd4j.version>0.7.2</nd4j.version>
 </properties>
  :
 <dependency>
   <groupId>org.nd4j</groupId>
   <artifactId>nd4j-native-platform</artifactId>
   <version>${nd4j.version}</version>
 </dependency>

Ant

Antで使用するためのライブラリ入手

mavenリポジトリから、nd4j-native-platform-0.7.2.jar をダウンロードしてみたところ、jarファイルの中には、pom.xmlだけが含まれ、Javaのコードは含まれていませんでした。このpomを紐解くと、nd4j-nativeに依存しているようです。

次にmavenリポジトリから、nd4j-native-0.7.2.jar をダウンロードしてみました。jarファイルの中には、classファイルとpom.xmlも含まれています。このpom.xmlはかなり複雑で依存関係が紐解き難いので、jdepsコマンドでnd4j-native-0.7.2.jarを検査してみました。

jdepsコマンドの実行結果 表示

いったん、mavenで依存するライブラリをダウンロードさせることとします。

次のダミーのpomファイルを記述します。

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://mave.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>foo</groupId>
  <artifactId>bar</artifactId>
  <version>0.1</version>

  <dependencies>
    <dependency>
      <groupId>org.nd4j</groupId>
      <artifactId>nd4j-native</artifactId>
      <version>0.7.2</version>
    </dependency>
  </dependencies>

</project>

依存関係のartifactを指定のディレクトリにダウンロードさせます。

work$ mvn dependency:copy-dependencies -DoutputDirectory=lib
  :
work$ ls lib
annotations-2.0.1.jar    nd4j-native-0.7.2.jar
commons-io-2.4.jar       nd4j-native-0.7.2-windows-x86_64.jar
commons-lang3-3.3.1.jar  nd4j-native-api-0.7.2.jar
commons-math3-3.4.1.jar  openblas-0.2.19-1.3.jar
guava-18.0.jar           openblas-0.2.19-1.3-android-arm.jar
jackson-0.7.2.jar        openblas-0.2.19-1.3-android-x86.jar
javacpp-1.3.1.jar        openblas-0.2.19-1.3-linux-ppc64le.jar
javassist-3.19.0-GA.jar  openblas-0.2.19-1.3-linux-x86_64.jar
joda-time-2.2.jar        openblas-0.2.19-1.3-macosx-x86_64.jar
lombok-1.16.10.jar       openblas-0.2.19-1.3-windows-x86_64.jar
nd4j-api-0.7.2.jar       reflections-0.9.10.jar
nd4j-buffer-0.7.2.jar    slf4j-api-1.7.10.jar
nd4j-common-0.7.2.jar    snakeyaml-1.12.jar
nd4j-context-0.7.2.jar   stax2-api-3.1.4.jar

gradle

mavenリポジトリを利用し、nd4j-native-platformを依存関係に指定します。

repositories {
     mavenCentral()
}

dependencies {
    compile 'org.nd4j:nd4j-native-platform:0.7.2'
} 

最初、ND4Jの公式ドキュメント にある次の記述をしたところ、エラーとなってしまいました。

repositories {
    mavenCentral()
}
dependencies {
    compile 'org.nd4j:nd4j-native-platform:'
}

エラーメッセージ

* What went wrong:
Could not resolve all dependencies for configuration ':compileClasspath'.
> Could not find org.nd4j:nd4j-native-platform:.
  Searched in the following locations:
      https://repo1.maven.org/maven2/org/nd4j/nd4j-native-platform//nd4j-native-platform-.pom
      https://repo1.maven.org/maven2/org/nd4j/nd4j-native-platform//nd4j-native-platform-.jar
  Required by:
      project :

バージョン番号を省略することはできないようです。